In my XAML code, I want to set the Background color of each row, based on a value of the object in one specific row. I have an ObservableCollection of z, and each of the z has a property called State. I started out with something like this in my DataGrid:
<DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="Background" Value="{Binding z.StateId, Converter={StaticResource StateIdToColorConverter}}"/> </Style> </DataGrid.RowStyle> This is a wrong approach because x is not a property in my ViewModel class.
In my ViewModel class I have an ObservableCollection<z> which is the ItemsSource of this DataGrid, and a SelectedItem of type z.
I could bind the color to SelectedItem, but this will only change one row in the DataGrid.
How can I, based on one property change this rows backgroundcolor?
Use a 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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With