WPF - 如何根据绑定属性值设置行的样式?

时间:2010-06-06 20:07:23

标签: c# wpf datagrid wpfdatagrid

所以我试图将一组对象(IList<>)绑定到WPF数据网格。如果'artist'属性为null或为空,我想将行背景设置为不同的颜色。我正在检查LoadingRow datagrid事件上存储在属性中的值。目前我的实现似乎正确地为所有行设置了空或'null'属性。问题是,在某些情况下,属性不为null或为空的行也是样式。因此,即使行'artist'属性不为null,某些行也会被赋予红色背景。任何人都可以告诉我为什么这可能是??

这是LoadingRow事件:

private void trackGrid_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        Track t = e.Row.DataContext as Track;

        if (String.IsNullOrEmpty(t.Artist))
        {
            e.Row.Background =
                new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 125, 125));
        }
    }

2 个答案:

答案 0 :(得分:1)

我在这种情况下使用视图模型,它允许直接绑定到行的颜色。

查看此site

上的彩色行示例项目

答案 1 :(得分:0)

似乎最简单的方法是让测试在同一行中被多次调用,第二次该值不再为空。我无法猜测为什么会发生,但与此同时,它应该很容易测试:

else
{
    e.Row.Background = DependencyProperty.UnsetValue;
}