【发布时间】:2017-02-06 02:48:57
【问题描述】:
我正在尝试通过使用将单元格作为参数的转换器来更改数据网格单元格的颜色,因为我需要单元格和行来选择单元格的颜色。数据是动态的,因此我没有任何模型。问题是转换器在加载数据时没有受到影响。
private void RDataGrid_AutoGeneratedColumns(object sender, EventArgs e)
{
foreach (var dataGridColumn in RDataGrid.Columns)
{
var textColumn = dataGridColumn as DataGridTextColumn;
if (textColumn == null) continue;
textColumn.ElementStyle = FindResource("gridElementStyle") as Style;
textColumn.EditingElementStyle = FindResource("gridEditElementStyle") as Style;
textColumn.CellStyle = FindResource("gridCellStyle") as Style;
}
}
这是绑定到数据网格的样式。
<Style x:Key="gridCellStyle" TargetType="{x:Type DataGridCell}">
<Setter Property="Background"
Value="{Binding .
, RelativeSource={RelativeSource AncestorType={x:Type DataGridCell}}
,Converter={StaticResource ColorConverter}
}" />
</Style>
转换器:
public class ColorConverter : IValueConverter
{
//private string[,] yourarray = new string[100, 100];
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
DataGridCell cell = (DataGridCell)value;
return Brushes.Red;
//int x = cell.Column.DisplayIndex;
//var parent = VisualTreeHelper.GetParent(cell);
//while (parent != null && parent.GetType() != typeof(DataGridRow))
//{
// parent = VisualTreeHelper.GetParent(parent);
//}
//int y = ((DataGridRow)parent).GetIndex();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
【问题讨论】: