我希望 DataGridColumn
的前景色根据其值进行更改。我有
<DataGridTextColumn x:Name="Diff1"
Binding="{Binding Change}" Header="Net Chng"
Width="*" IsReadOnly="True"
Foreground="{Binding Change,Converter={StaticResource negativeToColor}}">
</DataGridTextColumn>
和转换器
public class negativeToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
SolidColorBrush brush = new SolidColorBrush(Colors.LimeGreen);
double doubleValue = 0.0;
Double.TryParse(value.ToString(), out doubleValue);
if (doubleValue < 0)
brush = new SolidColorBrush(Colors.Red);
return brush;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
但是转换器没有显示效果。
最佳答案
这是因为所有常规 DataGridColumn
绑定(bind)都是 DataGrid
元素的相关项,而不是 Row。在 DataGrid 级别没有名为 Change
的属性,仅在行级别。
解决方案是:使用 DataGridTemplateColumn
。
<DataGridTemplateColumn Header="Net Chng" Width="*" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Change}" Foreground="{Binding Change, Converter={StaticResource negativeToColorConverter}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
编辑:参见Binding in a WPF data grid text column了解更多解决方案。
关于c# - 如果值为负,WPF DataGridColumn 前景色变为红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893578/