2010-02-09 60 views
2

我有幾個CollectionViewSource實例在同一個ObservableCollection上使用。我也有幾個控件需要顯示集合的過濾版本(因此CollectionViewSources)。我遇到的問題是CollectionViewSource強制它們都選擇了相同的項目。有什麼辦法可以解決這個問題嗎?你可以關閉WPF的CollectionViewSource中的選擇同步嗎?

感謝, 傑森劉易斯

回答

0

如果您使用的方法(IM不知道這一點,但CollectionViewSource在XAML大概會)

CollectionViewSource.GetDefaultView(this.ItemsSource); 

多次,它只會返回相同的ICollectionView(如果我們正在討論多次綁定相同的集合),這意味着如果將篩選器應用於所有篩選器,則所有篩選器都可以進行篩選,並且當集合視圖跟蹤當前項目時,當前項目將在不同視圖之間同步。

您可以通過使用

new CollectionView(this.ItemsSource as IList); 

有實現ICollectionView,和的CollectionView做的ListCollectionView幾類解決這個由你想有每個濾波器/選擇創建的CollectionView。在上面的代碼中,我沒有得到我創建一個新的默認視圖,所以它的文件/排序是獨一無二的。

當您使用items源wpf創建集合視圖來包裝集合時,此集合視圖是在GetDefaultView調用中返回的集合視圖,對於每天的情況非常有用,但不適用於邊緣情況。

here is a blog post從BEA,說明它更好一點

+0

這其實不是我擔心的過濾器,我想他們是相同的。這是選定的項目。我只想讓他們都過濾相同,但選擇不同的項目。 CollectionViewSource將所有選擇同步。 感謝您的信息,我會看看這樣做的CollectionView方式,看看是否會工作。我不這麼認爲,因爲我可以有任意數量的視圖。 Jason – 2010-02-10 16:19:54

+0

原理是相同的CollectionView跟蹤選定的項目,因爲所有的你都綁定到相同的集合視圖,所有都具有相同的選定項目。 – 2010-02-10 22:34:10

+0

我有點害怕。哦,我已經找到了一種不太優雅但實用的方式來實現我所需要的。感謝Aran的幫助。 – 2010-02-10 22:59:18