Jas*_*n D 13 c# icollectionview
任何人都可以帮我正确实现ICollectionViewLiveShaping过滤目的吗?关于这个问题,我没有在网上找到很多有用的文档.这就是我所拥有的:
public ICollectionView WorkersEmployed { get; set; }
WorkersEmployed = new CollectionViewSource { Source = GameContainer.Game.Workers }.View;
Run Code Online (Sandbox Code Playgroud)
我没有使用,GetDefaultView因为我需要在此集合上有多个过滤器实例.如果重要,那GameContainer.Game.Workers就是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;
}
Run Code Online (Sandbox Code Playgroud)
这一切都有效,但当然必须手动刷新,这就是我尝试使用的原因ICollectionViewLiveShaping.我能找到的最好的例子就是这个,但不幸的是我仍然无法让它发挥作用.鉴于我在这里有什么,任何人都可以给我一个正确的方向,让实时过滤工作?
任何帮助将不胜感激.
出于好奇,这真的是一项艰巨的任务吗?如果是这样的话,设计人员似乎ICollectionViewLiveShaping做得很糟糕.
更新:看来,只有这样,才能增加一个属性LiveFilteringProperties的ICollectionViewLiveShaping通过字符串收集.鉴于这种限制,是否可以按另一个类中的属性进行过滤(在本例中为Workers'EmployerID)?
任何有经验的人都能GetDefaultView告诉我,在这种情况下我想做什么甚至是一个可行的选择吗?老实说我不知道是不是因为缺乏文档和可用的例子.即使这是不可行的,也至少知道我是否在浪费时间.
Roh*_*ats 11
所有你需要做的是add a property在LiveFilteringProperties您要过滤器的属性更改调用,设置IsLiveFiltering到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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4758 次 |
| 最近记录: |