Silverlight 4.0 Silverlight 4数据网格,设置行背景

Silverlight 4.0 Silverlight 4数据网格,设置行背景,silverlight-4.0,datagrid,Silverlight 4.0,Datagrid,我知道数据网格的设计不是为了直接访问每一行。我的问题是,我需要根据某些条件高亮显示行,而不仅仅是在加载时。加载网格后,可能会在非网格填充源的集合上发生更改,因此对该集合的更改显然不会影响网格 示例数据图: [GridCollection] [SecondaryCollection] {ID = 0, Name = "Test A"} {ID = 0, GridCollectionID = 0, Name = "Test A Linked"} {ID = 1, Nam

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

示例数据图:

[GridCollection]             [SecondaryCollection]
{ID = 0, Name = "Test A"}    {ID = 0, GridCollectionID = 0, Name = "Test A Linked"}
{ID = 1, Name = "Test B"}    
因此,在本例中,GridCollection项0将在网格中高亮显示。但是,如果我向SecondaryCollection添加另一项,则该项应在网格中突出显示


现在我可以强制更新网格的ItemsSource,但这似乎有点骇人。有人对如何解决这个问题有什么想法吗?

这很容易通过以下方法实现:

  • 确保GridCollection中的项实现INotifyPropertyChanged
  • 向GridCollection中的项类添加布尔IsHighlight属性
  • 将项添加到SecondaryCollection时,使用事件聚合器触发事件,并使用GridCollectionID作为有效负载
  • 在GridCollection上订阅此事件并将IsHighlight设置为true
  • 在DataGrid上,当IsHighlight为true时,将条件格式设置为启用
  • 这种方法是解耦和健壮的,它让您可以使高光看起来像您想要的,并随时更改,甚至使用动画