Silverlight 4 Datagrid,设置RowBackground

时间:2011-06-03 01:47:47

标签: silverlight-4.0 datagrid

我知道数据网格不是为了直接访问每一行而设计的。我的问题是我需要根据某些条件突出显示行,而不仅仅是在加载时。加载网格后,可能会在集合上发生更改,而集合不是网格填充的集合,因此对此集合的更改显然不会影响网格。

示例数据图表:

[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 个答案:

答案 0 :(得分:1)

使用Prism's EventAggregator

可以轻松实现这一目标
  1. 确保GridCollection中的项目实现INotifyPropertyChanged
  2. 将一个布尔值IsHighlight属性添加到GridCollection中的项类别
  3. 将项目添加到SecondaryCollection时,使用事件聚合器触发事件​​,使用GridCollectionID作为有效内容。
  4. 在GridCollection上订阅此事件并将IsHighlight设置为true。
  5. 在DataGrid上,将条件格式设置为在IsHighlight为真时打开。
  6. 这种方法是分离且强大的,它可以让你随心所欲地突出显示,并随时改变,甚至使用动画。