我有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方法。
答案 0 :(得分:8)
试试这个;
_snapshotList.Cast<object>().Count();
ICollectionView
实施IEnumarable
但它没有实现IEnumerable<TSource>
,例如List<TSource>
,HashSet<TSource>
等等。因此,ICollectionView
没有一般类型,我们必须将其强制转换为IEnumerable<object>
一次以启用Count()
方法。