gpt4 book ai didi

c# - 从 ObservableCollection 实现 ListCollectionView

转载 作者:行者123 更新时间:2023-11-30 12:23:20 24 4
gpt4 key购买 nike

我最近在 CodeReview (CodeReview Question) 上发布了一个问题,并按照他们的建议从 ObservableCollection 转移到 ICollectionView 再到 ListCollectionView 显然 ListCollectionView 具有更好的过滤性能。

我目前做的是这个;

Contracts = await ReturnContracts();
ContractsICollectionView = CollectionViewSource.GetDefaultView(Contracts);
DataContext = this;

ContractsObservableCollectionContractsICollectionViewICollectionView。当我改用 ListCollectionView 时,出现此错误;

无法从 ICollectionView 转换为 ListCollectionView。

这里是ContractsContractsListCollectionView的定义;

public ObservableCollection<ContractModel> Contracts;
public ListCollectionView ContractsListCollectionView { get; private set; }

我的问题是如何实现 ListCollectionView 并利用其改进的过滤功能?

最佳答案

只需像这样声明ContractsListCollectionView:

public ICollectionView ContractsListCollectionView { get; private set; }

或者,如果您确实需要使用 ListCollectionView 方法,而不仅仅是 ICollectionView(注意 ListCollectionView 实现了 ICollectionView),那么你需要做一个转换:

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

请注意,虽然对于 ObservableCollection CollectionViewSource.GetDefaultView 确实返回 ListCollectionView - 对于其他集合类型,它可能不相同并且转换将失败.但是,由于您仅将它与 ObservableCollection 一起使用 - cast 没问题。

关于c# - 从 ObservableCollection 实现 ListCollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com