4

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

var defaultView = CollectionViewSource.GetDefaultView(someCollection);

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

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

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

再说一次,我怎样才能将我自己的 ListCollectionView 子类指定为我们自定义集合的默认视图?

4

1 回答 1

9

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

public class MyCollection : ObservableCollection<MyItem>, ICollectionViewFactory
{
    public ICollectionView CreateView()
    {
        return new MyListCollectionView(this);
    }
}
于 2013-06-21T16:44:34.350 回答