1. ホーム
  2. wpf

[解決済み] データバインディングプロパティでデータグリッドの行の背景を設定する方法

2023-03-29 02:13:19

質問

XAMLコードにおいて、私は Background の色を設定したいのですが、これは特定の行のオブジェクトの値に基づいています。私は ObservableCollectionz というように、それぞれの z というプロパティを持っています。 State . 私は最初、このようなものを自分の DataGrid :

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Setter Property="Background" 
                Value="{Binding z.StateId, Converter={StaticResource StateIdToColorConverter}}"/>
     </Style>
</DataGrid.RowStyle>

xは私のViewModelクラスのプロパティではないので、これは間違ったアプローチです。

ViewModel クラスでは ObservableCollection<z> であり、これは ItemsSource の、この DataGrid であり、かつ SelectedItem 型の z .

色をバインドできるのは SelectedItem にバインドすることもできますが、これでは DataGrid .

あるプロパティに基づいて、この行の背景色を変更するにはどうしたらよいでしょうか。

どのように解決するのですか?

を使用します。 DataTrigger :

<DataGrid ItemsSource="{Binding YourItemsSource}">
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow"> 
            <Style.Triggers>
                <DataTrigger Binding="{Binding State}" Value="State1">
                    <Setter Property="Background" Value="Red"></Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding State}" Value="State2">
                    <Setter Property="Background" Value="Green"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>