wpf - 无法设置 WPF Datagrid 列前景
问题描述
我想将 wpf 数据网格中列的前景设置为绿色。我试过这种方式。但它不起作用。
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Header="Customer" Binding="{Binding CustomerName}" Foreground="{Binding FontColor, Mode=OneWay}" Width="300" "/>
在模型类中,我已经这样指定了。
private Brush _fontcolor;
public Brush FontColor
{
get
{
return _fontcolor;
}
set
{
_fontcolor = value;
OnPropertyChanged("FontColor");
}
}
在我填充数据的视图模型类中,我已经提到过这样的。
NotifyItem ni = new NotifyItem();
ni.CustomerID = (int)dr["CustomerID"];
ni.FontColor = Brushes.Green;
NotifyCollections.Add(ni);
这里有什么问题?为什么前景没有设置为绿色?有没有什么方法可以在不去 DataGridTemplateColumn 的情况下将前景设置或绑定到颜色?此外,我已经为所选行设置了背景样式。下面是xaml。
<dg:DataGrid.Resources>
<LinearGradientBrush x:Key="jj" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF4D77F9" Offset="0"/>
<GradientStop Color="#FF96B5FF" Offset="1"/>
</LinearGradientBrush>
<Style TargetType="{x:Type dg:DataGridCell}">
<Style.Triggers>
<Trigger Property="dg:DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource jj}" />
</Trigger>
</Style.Triggers>
</Style>
</dg:DataGrid.Resources>
解决方案
有什么方法可以将前景设置或绑定到颜色而不去
DataGridTemplateColumn
?
是的。使用ElementStyle
:
<DataGridTextColumn Header="Customer" Binding="{Binding CustomerName}" Width="300">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding FontColor}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
推荐阅读
- jwt - Keycloak中获取用户的JWT
- hadoop - HBase - hbase:metadata 保存有关不存在的 RegionServer ID 的信息 - “主启动无法进行,在区域联机之前保持模式。”
- python - 整数在 SQlite 中记录良好,但在 MySQL 中记录为 0
- ios - 如何快速将 [String]' 传递给 'String' 值
- c# - 如何存储变量并选择 DataGridView C# 中的位置
- mysql - 声明的变量在 select 语句中被重置
- flutter - 无法在flutter web中使用输入字段
- html - 即使调整窗口大小,如何在图像顶部保持 div(文本框)的相同位置?
- php - 我想单独检索所有用户和他们的属性,所以我可以用它们来显示在一个整洁的列表中
- java - NumberFormatException 不工作 java