2011-06-03 118 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。

這種方法是分離和強大的,它讓你可以隨心所欲地製作高亮顯示,甚至可以使用動畫進行更改。