获取ICollectionView的Count属性

时间:2017-12-17 10:28:44

标签: c# wpf mvvm collections observablecollection

我有ICollectionView

private ICollectionView _snapshotList;

    public ICollectionView SnapshotList {
        get { return _snapshotList; }
    }

在ViewModel构造函数中进行im设置,其中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 个答案:

答案 0 :(得分:8)

试试这个;

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

ICollectionView实施IEnumarable但它没有实现IEnumerable<TSource>,例如List<TSource>HashSet<TSource>等等。因此,ICollectionView没有一般类型,我们必须将其强制转换为IEnumerable<object>一次以启用Count()方法。