我有一个用户控件,它继承自WPF DataGrid控件,并且我传递了不同的对象列表,因此,网格的列依赖于(即自动生成)我发送的对象类。
<userc:cfDataGrid x:Name="grdResults"
FontStyle="Normal"
FontFamily="Microsoft Sans Serif"
FontSize="14"
RowHeight="30"
AutoGenerateColumns="True"
Margin="12"
AlternatingRowBackground="Gainsboro"
AlternationCount="2"
ItemsSource="{Binding Results}"
IsReadOnly="True"
HeaderNames="{Binding Headers}" >
</userc:cfDataGrid>
现在,我还要通过一个具有SolidColorBrush数据类型属性的对象列表,并能够使用此值来设置单元格的背景颜色,而不是显示实际值。
我没有做很多关于样式等的工作,所以我想问一下是否有人可以给我一些关于如何捕获具有SolidColorBrush数据类型的列的指针 - 并执行上述操作 - 而不依赖于列?
任何指针都将非常感谢!
CC
答案 0 :(得分:7)
我会使用DataTrigger
使用Converter检查对象是否为SolidColorBrush
,如果是,则设置背景颜色
这样的事情:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<!-- DataContext will be object for entire data row -->
<DataTrigger Binding="{Binding MyBrushColorProperty, Converter={StaticResource IsSolidBrushColor}}" Value="True">
<Setter Property="Background" Value="{Binding MyBrushColorProperty}" />
<Setter Property="Content" Value="" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>