我看到兩種方法可以做到這一點的時候,
您可以在綁定到此網格的實體中創建一個新屬性ValueColor
,並返回正確的顏色。
您可以使用返回顏色的轉換器將TextBlock的Background與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內容,使用我的xaml並且它可以工作
希望這會有所幫助
兩列都綁定到value1 ..假設這是一個錯字? –
對不起,我犯了一個錯誤已經更正了 – longtrades