2010-06-18 60 views
4

我有兩個ObservableCollections,比如ObservableCollection<Cat>ObservableCollections<Dog>。貓和狗都來自班級寵物。我想顯示所有寵物的列表。我該怎麼做呢?我更喜歡不想通過添加來自兩個源列表中的項目來創建新的ObservableCollection<Pet>,因爲隨着更多Cats和Dogs添加到源列表中,此列表將變得陳舊。我可以想到兩種方法:如何在WPF中將兩個ObservableCollections顯示爲單個列表?

1)創建一個「裝飾器」ObservableCollection,它將兩個源集合保持爲成員並每次迭代它們。

2)創建一個ObservableCollection<Pet>,它具有兩個源集合的組合元素,但也依賴於源集合。因此,如果將Cat添加到Cat集合中,則會通知此集合,並將新的Cat添加到其自身。

有沒有解決這個問題的標準方法?我不想重新發明輪子!

回答

7

使用CompositeCollection可以聚合多個具有完整集合變更支持的集合和項目。

編輯CompositeCollection不是一個依賴項對象,所以沒有數據上下文的概念,因此爲什麼綁定不起作用。如果添加綁定項目或集合,則必須從後面的代碼創建集合。

+1

非常好!正是我在找什麼。謝謝。 – Naresh 2010-06-18 13:49:48

+0

好吧,我一直在努力使CompositeCollection現在工作幾個小時,但不能讓它工作。我將其指定爲的ItemSource到我的組合框像這樣(貓是我的ViewModel一個ObservableCollection): 但我得到此錯誤: 找不到管理目標元素的FrameworkElement或FrameworkContentElement。 BindingExpression:路徑=貓;的DataItem = NULL; 如果我完全刪除CompositeCollection並直接綁定到ObservableCollection,那麼一切正常。任何線索? – Naresh 2010-06-19 03:00:24

+0

這裏的答案顯示瞭如何綁定來自XAML的CompositeCollection:http://stackoverflow.com/questions/6446699/how-do-you-bind-a-collectioncontainer-to-a-collection-in-a-view-model – Govert 2013-01-18 16:36:03

相關問題