在here中的帖子之后,我设法为我的数据网格的列创建了Tag属性。现在,我希望根据标记中的值使用不同颜色的列。目标是在列中包含日期表,并且今天的当前日期将突出显示(与列对应的日期存储在其标记中)。它可以实现吗?我找到了基于以编程方式着色单元格的解决方案,但它不适合我的需求(多线程问题 - 有时单元格在停止填充数据之前被绘制然后绘制不起作用)。
提前致谢。
修改
好的,我已经按照Nayeem Mansoori给出的答案来到这里:
风格:
<Style x:Key="CellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Black" />
<Setter Property="Background" Value="{TemplateBinding local:DataGridCellThemeProps.Brush}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#B2DCDCDC" />
<Setter Property="BorderBrush" Value="#B2DCDCDC" />
</Trigger>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="#7FFFFFFF" />
<Setter Property="BorderBrush" Value="#7FFFFFFF" />
</Trigger>
</Style.Triggers>
</Style>
DataGrid列:
<DataGridTextColumn local:DataGridCellThemeProps.Brush="Thistle"
Header="{x:Static props:Resources.Monday}"
Binding="{Binding Monday, Converter={StaticResource ZeroConverter}, Mode=TwoWay}"
CellStyle="{StaticResource CellStyle}" Width="75"/>
类别:
public static class DataGridCellThemeProps {
public static SolidColorBrush GetBrush(DependencyObject obj) {
return (SolidColorBrush)obj.GetValue(BrushProperty);
}
public static void SetBrush(DependencyObject obj, SolidColorBrush value) {
obj.SetValue(BrushProperty, value);
}
public static readonly DependencyProperty BrushProperty =
DependencyProperty.RegisterAttached(
"Brush",
typeof(SolidColorBrush),
typeof(DataGridCellThemeProps),
new FrameworkPropertyMetadata(Brushes.Black));
}
当我运行我的应用程序时,我得到例外:
例外:{“'设置属性'System.Windows.Setter.Value'引发异常。”行号“25”和行位置“14”。“}
内部异常:{“表达式类型不是有效的样式值。”}
我已经仔细检查过该类的命名空间,这是正确的。有什么想法吗?