我最近尝试使用以下代码(XAML)为datagrid
中的某些行着色:
<Window.Resources>
<local:IsDateExpiredConverter x:Key="IsDateExpiredConverter" />
<Style x:Key="DataGridRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Notenmeldung, Converter={StaticResource IsDateExpiredConverter}}" Value="True">
<Setter Property="Background" Value="#d2efbd"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
方法:
[ValueConversion(typeof(DateTime), typeof(bool))]
public class IsDateExpiredConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (DBNull.Value == value)
return false;
DateTime date = (DateTime)value;
DateTime curDate = DateTime.Now;
if (date < curDate)
{
return true;
}
else
{
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
它是做什么的,它只是将DataGridRow着色,其中“ Notenmeldung ”是&lt;比当前日期。这很好用。
当我点击标题对网格进行排序时,行中的绿色有时会消失。这取决于我正在排序的列和我正在排序的方向。例如,我在两个方向上排序一列,一切都很好。当我在一个特定方向排序时(另一个方向再次变绿),另一个只显示颜色(行仍在那里)。然后我们也有了没有任何东西变得绿色的情况。 DataGrid
的来源是DataBaseTable
,我没有看到数据类型和单元格内容之间有任何规律性。
我非常感谢每一个小小的提示。
答案 0 :(得分:1)
不要使用AlternatingRowBackground
,这会覆盖更改后的颜色。