如何用颜色填充DataGridCell取决于它包含WPF的值

时间:2018-11-08 18:27:02

标签: c# wpf xaml datagrid


你好,
首先,我想提到的是我的第一篇文章,所以我要求理解。

我有一个数据网格(WPF),我想根据其包含的值用颜色填充其单元格。我通过设置像这样的项目源来动态填充我的数据网格(列和行)

myDataGrid.ItemsSource = myDataTable.DefaultView;

所以我无法在设置项源之前在xaml中设置列样式。

我尝试了几种方法,例如:

1.)要获取单个单元格并设置其背景属性,例如>>this<<, 但是presenter.ItemContainerGenerator.ContainerFromIndex()
总是返回null(我不知道该如何解决)

2。)创建一个xaml单元格样式并转换为这样
VIEW

<DataGrid CellStyle="{StaticResource MyDataGridCell}"/>

样式

  <Style x:Key="MyDataGridCell" TargetType="{x:Type DataGridCell}">
        <Setter Property="Background" Value="{Binding Converter={StaticResource CellColorConverter}"/>
    </Style>

转换器

public class CellColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value is DataGridCell)
            {
                string text = (value as DataGridCell).Content.ToString();

                int input = string.IsNullOrEmpty(text) ? 0 : System.Convert.ToInt32(text);


                if (input >= 0)
                {
                    return Brushes.Green;
                }
                if (input < 0)
                {
                    return Brushes.Red;
                }
            }
            return Brushes.Gray;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

但是value.Content始终为null,而且我不知道如何将DataGridCell文本传递给转换器。
最后,网格应该看起来像that

0 个答案:

没有答案