在我的MainView我加了一個UserControl
WPF MVVM一個的ObservableCollection多個列表視圖
<TabItem Header="Current Elements">
<tabData:CurrentElementsControl DataContext="{Binding Path=EditorViewModel.SelectedConfigFile}"></tabData:CurrentElementsControl>
</TabItem>
,並設置其DataContext
。 SelectedConfigFile
得到了存儲不同類型的元素的ObservableCollection<Elements>
。
我UserControl
基本上是一個ListView
<ListView Name="ServiceListView"
ItemsSource="{Binding Path=Elements}"
SelectedItem="{Binding Path=SelectedElement, Mode=TwoWay}"
Loaded="ServiceListView_Loaded"/>
,我想顯示給定類型的ObservableCollection<Elements>
的項目。 但我不想爲每個類型和列表視圖添加另一個ObservableCollection
到SelectedConfigFile
(VM)。所以我想我可以只設置一個過濾器爲我的用戶,利用其加載的事件是這樣的(在代碼隱藏):
private void ServiceListView_Loaded(object sender, RoutedEventArgs e)
{
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.ServiceListView.ItemsSource);
view.Filter = ServiceFilter;
}
private bool ServiceFilter(object item)
{
if (item is ServiceViewModel) {
return true;
}
else {
return false;
}
}
但是,這將過濾ObservableCollection<Elements>
藏漢,我需要在其他地方(未過濾)。有什麼建議麼?
預先感謝您!
過濾現在不起作用。過濾器方法被調用並完成其工作,但所有元素都顯示在列表視圖中。 – user3596113 2014-10-30 07:10:38
@ user3596113啊當然,我們創建了一個新的視圖,但是這個視圖目前還沒有被使用。你必須將這個視圖分配給一些ListView的'ItemsSource',我希望你能理解這個想法。 – 2014-10-30 07:22:02
我想它不足以像這樣設置'ListView'' ItemsSource',是嗎? 'ServiceListView.ItemsSource = view;' – user3596113 2014-10-30 07:27:14