获取 ICollectionView 的 Count 属性

Posted

技术标签:

【中文标题】获取 ICollectionView 的 Count 属性【英文标题】:Get Count property of ICollectionView 【发布时间】:2018-05-30 22:52:26 【问题描述】:

我有 ICollectionView

private ICollectionView _snapshotList;

    public ICollectionView SnapshotList 
        get  return _snapshotList; 
    

我在 ViewModel 构造函数中设置,其中this.smapshotListModel.SnapshotItems 返回 ObservableCollection

_snapshotList = CollectionViewSource.GetDefaultView(this.snapshotListModel.SnapshotItems);
        _snapshotList.Filter = ErrorMsgFilter;
        _snapshotList.CollectionChanged += OnCollectionChanged;

后来在 collectionChanged 事件中,我试图获取此集合中的项目数,

        void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
        this.ItemCount = _snapshotList.Count();
    

但它的抛出错误,即没有定义 Count 方法。

【问题讨论】:

【参考方案1】:

这样试试;

_snapshotList.Cast<object>().Count();

ICollectionView 实现了IEnumarable,但它没有像List&lt;TSource&gt;HashSet&lt;TSource&gt; 等那样实现IEnumerable&lt;TSource&gt;。所以,ICollectionView 没有泛型类型,我们必须将其转换为@987654328 @ 一次启用Count() 方法。

【讨论】:

以上是关于获取 ICollectionView 的 Count 属性的主要内容,如果未能解决你的问题,请参考以下文章

我应该绑定到 ICollectionView 还是 ObservableCollection

ComboBox仅显示ICollectionView中字段的唯一值

CollectionViewSource、ICollectionView、ListCollectionView、IList 和 BindingListCollectionView 及其用例有啥区别?

如何使用 ICollectionView 过滤 wpf 树视图层次结构?

WPF 的 ICollectionView.filter 与大量数据集

ComboBox过滤