根据上下文值更改DataGridCell的背景颜色。 (WPF)

时间:2015-12-14 01:34:59

标签: .net wpf xaml datagrid

我想根据上下文值更改DataGridCell的背景颜色。目前内容是文字。如图所示,我绑定到生成列的数据源。我不确定如何告诉DataTrigger绑定到自己的值而不为每列指定标记。我有很多专栏,不希望有50个DataTrigger代码。

这是我的xaml:

    <DataGrid x:Name="Grid" ItemsSource="{Binding}">
        <DataGrid.CellStyle>
            <Style TargetType="DataGridCell">
                <Style.Triggers>
                    <Trigger Property="TextBlock.Text" Value="10"/>
                </Style.Triggers>
            </Style>
        </DataGrid.CellStyle>
    </DataGrid>

最终,我想提供一系列符合触发条件的值。例如任何值10到20(10 <=值<= 20)。

2 个答案:

答案 0 :(得分:1)

您应该使用如下所示的TemplateColumn,并在Loaded事件处理程序中检查条件并采取措施。

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Area, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"  Loaded="TextBox_Loaded"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

 private void TextBox_Loaded(object sender, RoutedEventArgs e)
        {
            var tb = ((TextBox)sender);
            if (tb.Text == 10)
            {
                tb.Background = Brushes.Plum;
            }
        }

答案 1 :(得分:0)

请参阅以下代码段,其中显示了一个数据触发器,当绑定属性Background时,该触发器将label的{​​{1}}属性更改为绿色 等于“10”:

YourProperty