WPF DataGrid单元格的条件格式取决于数据类型
我有一个从WPF DataGrid控件继承的用户控件,我将不同的对象列表传递给它,因此,网格的列取决于(即自动生成)我发送的对象类WPF DataGrid单元格的条件格式取决于数据类型,wpf,wpf-controls,wpfdatagrid,Wpf,Wpf Controls,Wpfdatagrid,我有一个从WPF DataGrid控件继承的用户控件,我将不同的对象列表传递给它,因此,网格的列取决于(即自动生成)我发送的对象类 <userc:cfDataGrid x:Name="grdResults" FontStyle="Normal" FontFamily="Microsoft Sans Serif" FontSize="14" RowHeight="30" AutoGenerateColumns="True" Ma
<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我会使用一个
DataTrigger
来检查对象是否是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>
Hi,您可以发布用于生成列的代码吗?您是在DataGrid上设置AutoGenerateColumns=“True”还是实现了自己的自动创建方法?谢谢您的回复。我已经添加了上面的XAML。您想要一个带彩色背景的空单元格,还是要给所有行背景上色?我希望得到一个带彩色背景的空单元格,而不是行。谢谢,我会尝试一下,Rachel,然后再报告。我已经实现了转换器,但似乎“targetType”无论对象属性之一是否为SolidColorBrush,参数始终为System.Object。此外,“value”参数是整行而不是列值。抓我的头@Caledonincoder我忘记了数据项将是整行,而不是特定列的值。您可能必须将其强制转换到转换器中的数据对象,以获取假定为SolidBrushColor
的属性,或者您可以在绑定中向其传递所需的属性名称,并确保转换器处理dependencProperty.UnsetValue
或null(如果该属性不存在,我记不起它将使用哪一个)。我将在我的答案中更新XAML。非常感谢,Rachel!我想我就快到了。所以我将把你的标记为答案。