从ObservableCollection实现ListCollectionView

时间:2016-05-23 07:55:49

标签: c# wpf filtering observablecollection

我最近在CodeReview(CodeReview Question)上发布了一个问题,并按照他们的建议,从ICollectionView转移到ListCollectionViewListCollectionView,而不是显而易见Contracts = await ReturnContracts(); ContractsICollectionView = CollectionViewSource.GetDefaultView(Contracts); DataContext = this; 具有更好的过滤性能。

我现在所做的就是这个;

Contracts

其中ObservableCollectionContractsICollectionViewICollectionViewListCollectionView。当我使用Contracts代替时,我收到此错误;

无法从ICollectionView转换为ListCollectionView。

以下是ContractsListCollectionViewpublic ObservableCollection<ContractModel> Contracts; public ListCollectionView ContractsListCollectionView { get; private set; } ;

的定义
ListCollectionView

我的问题是如何实施You have shared too many files (1005/1000 files)并利用其改进的过滤功能?

1 个答案:

答案 0 :(得分:2)

只需声明ContractsListCollectionView,就像这样:

public ICollectionView ContractsListCollectionView { get; private set; }

或者,如果您确实需要使用ListCollectionView方法,而不只是ICollectionView(请注意ListCollectionView实现ICollectionView),那么您需要进行投射:< / p>

ContractsICollectionView = (ListCollectionView) CollectionViewSource.GetDefaultView(Contracts);

请注意,虽然ObservableCollection CollectionViewSource.GetDefaultView确实返回ListCollectionView - 但对于其他集合类型,它可能不一样,并且强制转换会失败。但是,由于您只在ObservableCollection使用它 - 强制转换。