如何替换可相关集合的默认Collection视图?

时间:2013-06-20 07:41:29

标签: c# wpf collections ienumerable listcollectionview

将枚举绑定到ItemsSource或类似物时,绑定使用枚举的默认视图,我知道您可以使用以下代码获取...

var defaultView = CollectionViewSource.GetDefaultView(someCollection);

这对我们来说非常有用,例如,我们可以将排序添加到各种集合的默认视图中。

但是,我们有一个专门的Collection类,它需要一个专门的ListCollectionView子类才能正常工作。也就是说,我们如何更改其默认视图,以便在有人直接绑定到集合时返回?

对于解决方法,我们创建了一个名为MainView的新属性,它保存我们的自定义ListCollectionView,然后我们将ItemsSource之类的东西绑定到那个,但这意味着我们的集合的消费者必须被明确告知不要直接绑定到集合而是MainView属性或他们将获得默认视图。考虑到标准只是直接绑定到集合,这是我们试图避免的潜在问题。

再说一次,如何将自己的ListCollectionView子类指定为自定义集合的默认视图?

1 个答案:

答案 0 :(得分:7)

在您的集合中,实现接口ICollectionViewFactory。这是一个例子:

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