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

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

问题描述:

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

这里是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)); 
     } 
    } 

这似乎是为实现这一目标将是测试得到多次调用同一行的最简单的方法,第二个时间值不再是空的。我不能猜测,为什么会发生,但在此之前,它应该很容易与测试:

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

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

查看此行上的彩色行示例项目site