How is ICollectionViewLiveShaping
为了过滤的目的而实施?是不是类似:
public ICollectionView WorkersEmployed { get; set; }
WorkersEmployed = new CollectionViewSource { Source = GameContainer.Game.Workers }.View;
我没有使用GetDefaultView
因为我需要这个集合上的多个过滤器实例。如果重要的话,GameContainer.Game.Workers
is an ObservableCollection
.
ApplyFilter(WorkersEmployed);
private void ApplyFilter(ICollectionView collectionView)
{
collectionView.Filter = IsWorkerEmployed;
}
public bool IsWorkerEmployed(object item)
{
Worker w = item as Worker;
return w.EmployerID == this.ID;
}
这一切都有效,但当然必须手动刷新,这就是我尝试使用的原因ICollectionViewLiveShaping
。实时过滤如何工作?
Update:看来添加属性的唯一方法ICollectionViewLiveShaping
's LiveFilteringProperties
集合是通过字符串进行的。鉴于该限制,是否甚至可以按另一个类中的属性(在本例中为工人的 EmployerID)进行过滤?
在这种情况下我尝试做的事情是一个可行的选择吗?
你需要做的就是add a property
in LiveFilteringProperties
您希望过滤器在属性更改时调用并设置IsLiveFiltering
to true
供您收藏to enable live filtering
.
确保PropertyChanged
每当EmployerID
财产变化,即您的Worker
类应该实现INotifyPropertyChangedEvent
.
这将起作用 -
public ICollectionViewLiveShaping WorkersEmployed { get; set; }
ICollectionView workersCV = new CollectionViewSource
{ Source = GameContainer.Game.Workers }.View;
ApplyFilter(workersCV);
WorkersEmployed = workersCV as ICollectionViewLiveShaping;
if (WorkersEmployed.CanChangeLiveFiltering)
{
WorkersEmployed.LiveFilteringProperties.Add("EmployerID");
WorkersEmployed.IsLiveFiltering = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)