如果value1> = value2,请告诉我如何将value1单元格设为红色,当value1<值2
<DataGrid.Columns>
<DataGridTextColumn Width="20" Header="value1" Binding="{Binding value1}" />
<DataGridTextColumn Width="38" Header="value2 " Binding="{Binding value2 }">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
.........................
.........................
.........................
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
答案 0 :(得分:4)
我认为有两种方法可以做到这一点,
您可以在实体中创建一个绑定到此网格的新属性ValueColor
,并返回正确的颜色。
您可以使用返回颜色的转换器将TextBlock的背景与MultiBinding绑定到Value1和Value2。
这是一个例子
像这样创建MultiValueConverter
public class ValuesToColorConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
int value1 = (int)values[0];
int value2 = (int)values[1];
return value1 >= value2 ? Brushes.Red : Brushes.Green;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
并使用此xaml显示颜色
<Window.Resources>
<WpfApplication1:ValuesToColorConverter x:Key="colorConverter" />
</Window.Resources>
<Grid>
<DataGrid ItemsSource="...">
<DataGrid.Columns>
<DataGridTextColumn Width="20" Header="value1" Binding="{Binding value1}" />
<DataGridTextColumn Width="38" Header="value2 " Binding="{Binding value2 }">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource colorConverter}">
<Binding Path="value1"/>
<Binding Path="value2"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
顺便说一下,你还有另一个错误,你应该在集合中添加GridColumns而不是Grid Content,使用我的xaml它会起作用
希望这有帮助