【发布时间】:2015-11-07 21:29:34
【问题描述】:
我正在尝试更改绑定 DataGrid 中已编辑单元格的背景颜色。例如,在用户更改单元格中的值后,我将调用 mydatagrid.Items.Refresh() 来更新我的其余列值并将编辑的单元格背景更改为 LightPink。
【问题讨论】:
标签: c# wpf binding datagrid overriding
我正在尝试更改绑定 DataGrid 中已编辑单元格的背景颜色。例如,在用户更改单元格中的值后,我将调用 mydatagrid.Items.Refresh() 来更新我的其余列值并将编辑的单元格背景更改为 LightPink。
【问题讨论】:
标签: c# wpf binding datagrid overriding
您可以尝试使用 DataGridBoundColumn ElementStyle property 来做您想做的事情。
扩展其中一个 DataGridColumns 并在您的网格中使用它可能更容易。可能看起来像这样:
class DataGridTextColumnEx : DataGridTextColumn
{
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
var element = base.GenerateElement(cell, dataItem);
cell.Tag = dataItem;
element.IsVisibleChanged += Element_IsVisibleChanged;
return element;
}
private void Element_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var textBlock = sender as TextBlock;
var cell = textBlock.Parent as DataGridCell;
var data = cell.Tag;
if (textBlock.Visibility == Visibility.Visible)
{
//Use data to do validation...
textBlock.Background = Brushes.LightPink;
}
}
}
【讨论】: