2013-06-20 82 views
2

當綁定的枚舉到的ItemsSource或類似的,在綁定使用枚舉的默認視圖,我知道你可以用下面的代碼...我怎麼能替換枚舉集合的默認的CollectionView?

var defaultView = CollectionViewSource.GetDefaultView(someCollection); 

這工作非常適合我們,使我們能夠例如,將排序權添加到各種集合的默認視圖。

然而,我們需要一個專門的ListCollectionView子類正常工作專用的Collection類。也就是說,我們如何改變其默認視圖,以便在有人直接綁定到集合時返回?

對於解決方法,我們創建了一個名爲MainView的新屬性,該屬性包含我們自定義的ListCollectionView,然後我們將ItemsSource等東西綁定到該屬性上,但這意味着我們集合的消費者必須明確告知不要直接綁定到集合,而是傳遞給MainView屬性,否則它們將獲得默認視圖。考慮到標準只是直接綁定到集合,這是我們試圖避免的潛在問題。

如此反覆,我怎麼能自己指定的ListCollectionView子爲我們的定製集合的缺省視圖?

+1

爲什麼更改默認視圖?只需創建一個新的ICollectionView,並在此設置的ItemsSource爲我 – blindmeis

+0

正是解決以上。不過我只是澄清了一點。 – MarqueIV

回答

5

在您的收藏,實現接口ICollectionViewFactory。這裏有一個例子:

public class MyCollection : ObservableCollection<MyItem>, ICollectionViewFactory 
{ 
    public ICollectionView CreateView() 
    { 
     return new MyListCollectionView(this); 
    } 
} 
+0

賓果!謝謝! :) – MarqueIV