使用其他列的值更改Datagrid列的颜色

时间:2012-08-22 10:11:53

标签: wpf wpfdatagrid

<DataGrid>
 <DataGrid.Columns>

 <DataGridTemplateColumn Header="Name" >
        <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Label x:Name="lblName" Content="{Binding Name}" Foreground="White" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=IsActice}" Header="Is Actice"  />
 </DataGrid.Columns>
</DataGrid>

我想根据IsActive值更改Datagrid填充时lblName的颜色

3 个答案:

答案 0 :(得分:0)

DataContext在任何地方都是一样的:整个当前行。

您可以轻松地向Style添加Label,并在IsActive上使用DataTrigger。 (如果由于precedence而需要将Setter中的Style移至默认颜色

答案 1 :(得分:0)

您可以使用返回类型Color创建转换器(Active变量的数据类型为Color)并将其附加到Label。根据有效值,转换器将返回所需的颜色。

答案 2 :(得分:0)

我使用以下代码解析了

<Style TargetType="{x:Type Label}" x:Key="DataGridLabel">
  <Style.Triggers>
    <MultiDataTrigger>
      <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=IsActive}" Value="False"/>
      </MultiDataTrigger.Conditions>
      <Setter Property="Label.Background" Value="Red"/>
    </MultiDataTrigger>
    <MultiDataTrigger>
      <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding Path=IsActive}" Value="True"/>
      </MultiDataTrigger.Conditions>
      <Setter Property="Label.Background" Value="Green"/>
    </MultiDataTrigger>
  </Style.Triggers>
</Style>