我使用我的ViewModel中定義的CompositeCollection將(各種類型的)形狀呈現給Canvas。我從我的底層數據創建了幾個ICollectionView。CompositeCollection中的ICollectionView
// ViewModel
ICollectionView view1 = new CollectionViewSource() { Source = ObservableCollectionA }.View;
view1.Filter = ...
我然後創建一個CompositeCollection到在XAML結合:
_CompositeCollection = new CompositeCollection();
var container = new CollectionContainer() { Collection = viewModel.view1 };
_CompositeCollection.Add(container);
在視圖中,我_CompositeCollection容器結合一個ItemsControl與帆布的ItemsPanelTemplate。
什麼都不添加到畫布。如果我從視圖模型中刪除的ICollectionView的層而直接使用的ObservableCollection在CollectionContainer.Collection正常工作:
var container = new CollectionContainer() { Collection = viewModel.ObservableCollectionA };
我不想直接暴露的ObservableCollection,我認爲這是與整個一致MVVM範例。
它看起來像CompositeCollection無法正常工作;我如何將多個ICollectionView合併爲一個集合以綁定到單個ItemsControl?或者也許有更好的結構使用?
我正在使用C#4.0。