当我有一个 <Label Content="{Binding ItemCount}"/>
在我的 View 上绑定(bind)到 ViewModel 上的属性。
在 View 模型上,我将属性定义为
public int ItemCount
{
get { RowViewModelsCollectionView.Count; }
}
我清楚地要求计数 CollectionView
,我希望获得仅可见项目的数量。不幸的是,我得到了整行的计数,即使是那些由于过滤器而没有显示在 View 中的行。
更新:
在 Ctor 中:
RowViewModelsCollectionView= new ListCollectionView(rowViewModels) {Filter = Contains};
private bool Contains(object obj)
{
RowViewModel rowViewModel = obj as RowViewModel;
if (rowViewModel != null && Books.ContainsKey(rowViewModel.Book))
{
RaisePropertyChanged("ItemCount"); // Trying out to raise it without joy
return true;
}
return false;
}
我应该如何解决这个问题?
最佳答案
@punker76,正确的说法是应该直接对 Collection View 的 Count
属性进行绑定(bind)......
原因是 CollectionView
已经实现了 INotifyPropertyChanged
并在提交、过滤、分组、排序发生时通知其 Count
属性的属性更改它...
因此假设您将 RowViewModelsCollectionView
作为 View 模型的公共(public)/内部属性,
<Label Content="{Binding RowViewModelsCollectionView.Count}"/>
....应该工作得很好......
关于c# - 如何在使用过滤器时获取 CollectionView 的真实计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8210836/