我需要基于单元格的值在datagridview中设置特定单元格的背景色。 在下面的代码中,如果用户处于活动状态,我想将“活动”单元格的背景颜色设置为绿色。
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
IsReadOnly="True"
ItemsSource="{ Binding Path=Users }" >
<DataGrid.Columns>
<DataGridTextColumn Header="User ID" Binding="{Binding UserID}" Width="Auto"/>
<DataGridTextColumn Header="Surname" Binding="{Binding Surname}" Width="Auto"/>
<DataGridTextColumn Header="Given Names" Binding="{Binding GivenNames}" Width="Auto"/>
<DataGridTextColumn Header="Active"
Binding="{Binding Active, Converter={ StaticResource booleanToYesNoConverter} }"
Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
我是WPF和MVVM的新手,我不知道最好的解决方案是什么。我一直在考虑使用值转换器设置背景属性的方法:
<DataGridTextColumn Header="Active"
Binding="{Binding Active, Converter={ StaticResource booleanToYesNoConverter} }"
Background="{ Binding Active, Converter={ StaticResource activeInactiveBackgroundColorConverter }}"
Width="Auto"/>
我已经为其他控件(StatusBarItem)完成了此操作,并且效果很好,但是对于datagridview我却无法做到。非常感谢您的帮助。
答案 0 :(得分:1)
通过给DataGridTextColumn单元格样式尝试这种方式
<DataGridTextColumn Binding="{Binding Active}"
Header="Active"
Width="Auto">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{ Binding Active, Converter={ StaticResource activeInactiveBackgroundColorConverter }}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>