如何使用MVVM灯在ViewModel中捕获CollectionViewSource的Filter事件?
答案 0 :(得分:3)
不熟悉MVVM Light但是我很确定你所说的是标准的WPF框架位。
Filter
上的ICollectionView
属性为Predicate<object
&gt;您可以将其设置为ViewModel上的给定方法,每次执行Filter
时都会调用该方法。
实现此目标的一种方法是将ICollectionView
定义为ViewModel中的属性,该属性将绑定到View中。
private ICollectionView _view;
public ICollectionView Data
{
get
{
if (_view == null)
{
_view = CollectionViewSource.GetDefaultView(someCollection);
_view.Filter = Filter;
}
return _view;
}
}
private bool Filter(object arg)
{
//arg is the object being filtered on to make the decision of
//it being included in the returned ICollectionView
return true;
}
这允许所有逻辑保留在ViewModel中,我认为这是您的最终目标。
答案 1 :(得分:0)
您可能对 BookLibrary 示例应用程序感兴趣,该应用程序将CollectionViewSource的Filter委托给ViewModel。但是,它不使用MVVM Light。该示例是 WPF Application Framework (WAF) 的一部分。