2011-06-03 82 views
0

我知道数据网格并不是用来直接访问每一行的。我的问题是我需要突出显示基于特定条件的行,但不仅仅是在加载时。网格加载完成后,可能会发生集合中发生的更改,这些更改不是网格集合的集合,因此对此集合的更改显然不会影响网格。Silverlight 4 Datagrid,Set RowBackground

样品数据图:

[GridCollection]    [SecondaryCollection] 
{ID = 0, Name = "Test A"} {ID = 0, GridCollectionID = 0, Name = "Test A Linked"} 
{ID = 1, Name = "Test B"}  

因此,在这种情况下GridCollection 0项将在网格中突出显示。但是如果我向SecondaryCollection添加另一个项目,这个项目应该在网格中突出显示。

现在我可以强制更新到网格的ItemsSource,但这看起来很乱。任何人有任何想法如何解决这个问题?

回答

1

这将是很容易通过使用Prism'sEventAggregator实现:

  1. 确保在GridCollection项目执行INotifyPropertyChanged
  2. 一个布尔IsHighlight属性添加到类项目的GridCollection
  3. 当项目添加到SecondaryCollection,使用事件聚合器触发事件​​,使用GridCollectionID作为有效内容。
  4. 在GridCollection上订阅此事件并将IsHighlight设置为true。
  5. 在DataGrid上,当IsHighlight为true时,将条件格式设置为on。

这种方法是分离和强大的,它让你可以随心所欲地制作高亮显示,甚至可以使用动画进行更改。