【问题标题】:How to change row background color in DataGrid (WPF)?如何更改 DataGrid (WPF) 中的行背景颜色?
【发布时间】:2015-08-22 22:44:35
【问题描述】:

我需要用某种颜色在 DataGrid 中绘制一些行。

我在主 UI 线程中创建了集合:

ObservableCollection<SomeElement> col= new ObservableCollection<SomeElement> ();

然后我从其他线程更改它:

int someElementNumber = 1;
int someInputValue = 11;
col[someElementNumber].SomePropery = someInputValue;

我在SomeElement 上实现了INotifyPropertyChanged 接口,以便我的DataGrid 更新该行中的值。但我想检查这个值并依赖它以某种背景颜色打印行:

if (someInputValue > 10) {
    //paint row in some color
}

请给我建议如何去做。感谢大家提前帮助!

【问题讨论】:

  • 在 wpf 中,您没有使用 Changing/Changed 验证模式。有绑定和相应的属性设置器来验证(请参阅Binding validation)。你想解决哪个问题?
  • 我需要更新元素的一些属性,并依赖一些背景颜色的值绘制行。
  • 为什么不添加你尝试过的东西
  • 我加了,求你帮忙。

标签: c# wpf xaml datagrid


【解决方案1】:

我自己找到了答案。如果有人感兴趣:

1) 在 XAML 中使用 DataTriggerCheckProperty 上创建 Binding。该属性不一定是可见的。

<Window.Resources>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding CheckProperty}" Value="Success">
                <Setter Property="Background" Value="Green" />
            </DataTrigger>
            <DataTrigger Binding="{Binding CheckProperty}" Value="Error">
                <Setter Property="Background" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

2) 在线程中,更新Collection col 设置CheckProperty 某些值取决于某些条件。

int someElementNumber = 1;
int someInputValue = 11;
col[someElementNumber].SomePropery = someInputValue;
if (someInputValue > 10) {
    col[someElementNumber].CheckProperty = "Success";
}
else {
    col[someElementNumber].CheckProperty = "Error";
}

CheckProperty 必须是Rise Property changed event

当该属性刚刚更新时,DataTrigger 将被调用并根据条件以某种背景颜色打印当前行。

【讨论】:

    猜你喜欢
    • 2011-05-11
    • 2018-09-26
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2013-03-16
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多