wpf datagrid以编程方式编辑单元格的样式

时间:2018-11-26 15:35:01

标签: c# wpf

我正在尝试根据列和单元格的值来编辑数据网格的每个特定单元格。而且我找不到以编程方式执行此操作的方法,在xaml中有一些示例。另外,我想要的样式取决于每个单元格的值。

我有

driver.quit()

这些列绑定到一个类,我可以用这种方式填充数据网格,但是我找不到一种样式化每个单元格的方法。

1 个答案:

答案 0 :(得分:0)

好吧,要找到解决方案并不容易,因为一件简单的事情绝对是一种复杂的解决方案。

因此,对于要设置“样式”的列,我要做的是通过创建像这样的celltype类型的样式。

var cellStyle = new Style()
{
    TargetType = typeof(DataGridCell)
};

这里的技巧是为所需的属性添加一个setter,并以绑定作为值,并且此绑定具有这样的转换器。在这种情况下,我想使用DataGridCell.ForegroundProperty更改字体颜色。

cellStyle.Setters.Add(new Setter(DataGridCell.ForegroundProperty, new Binding() { Converter = new CodeStyleConverter() }));
dataGrid.Columns[dataGrid.Columns.Count - 1].CellStyle = cellStyle;

转换器是一个IValueConverter对象,该IValueConverter接收值并返回此类对象的属性。

public class CodeStyleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        DataGridRow row;
        if (value is DataGridRow)
        {
            row = value as DataGridRow;
            if (row.Code == "I")
            {
                return Brushes.Red;
            }
            else if (row.Code == "E")
            {
                return Brushes.Blue;
            }
        }
        return Brushes.Black;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}