设置特定 DataGrid 单元格的背景
Posted
技术标签:
【中文标题】设置特定 DataGrid 单元格的背景【英文标题】:Set Background of Particular DataGrid Cell 【发布时间】:2012-03-07 02:29:30 【问题描述】:我希望设置特定单元格的背景颜色。该行在后面的代码中被选中。尽管在代码中使用 dataGrid 的 CurrentCell 属性选择了单元格,但 IsSelected 属性似乎不起作用。只在形式上起作用。
XAML:
<Style x:Key="CellStyle" TargetType="x:Type dg:DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
代码:
dg.CurrentCell = new DataGridCellInfo(dg.Items[0],dg.Columns[0]);
dg.CellStyle = this.FindResource("CellStyle") as Style;
【问题讨论】:
您是否尝试过为 IsSelected 属性使用 EventTrigger? 您的 FindResource 调用结果是 Style 还是 null? 【参考方案1】:试试这个:
可以在xaml中设置单元格样式:
<DataGrid CellStyle="StaticResource CellStyle"
然后:
var dataGridCellInfo = new DataGridCellInfo(dataGrid.Items[0], dataGrid.Columns[0]);
dataGrid.SelectedCells.Clear();
dataGrid.SelectedCells.Add(dataGridCellInfo);
【讨论】:
谢谢,这行得通。一旦失去焦点,是否可以让它突出显示单元格? nvm... 注释掉 Clear... 谢谢!【参考方案2】:试试这个示例代码,它对我有用
public Window8()
this.InitializeComponent();
this.Loaded += (sender, args) =>
var cellStyle = this.FindResource("CellStyle") as Style;
this.dg.CellStyle = cellStyle;
this.dg.SelectedIndex = 0;
;
<Window.Resources>
<Style x:Key="CellStyle"
TargetType="x:Type DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected"
Value="True">
<Setter Property="Background"
Value="Yellow" />
<Setter Property="Foreground"
Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
注意
样式应用于所有单元格!
希望对你有帮助
【讨论】:
以上是关于设置特定 DataGrid 单元格的背景的主要内容,如果未能解决你的问题,请参考以下文章
在Timer Tick C#表单上更改DataGrid单元格的背景颜色
WPF DataGrid - 如何设置正确的 DataTrigger 绑定到单元格的数据源(而不是行的源)
根据 IndexPath 设置特定 CollectionView 单元格的背景颜色