C# 如何重新过滤可观察到的收集
我有一个可观察的集合,其中包含一个监视器列表。 每个监视器都能够包含一个可观察的监视器集合(创建树结构) 我需要能够递归过滤 我现在拥有的是C# 如何重新过滤可观察到的收集,c#,wpf,filtering,C#,Wpf,Filtering,我有一个可观察的集合,其中包含一个监视器列表。 每个监视器都能够包含一个可观察的监视器集合(创建树结构) 我需要能够递归过滤 我现在拥有的是 public void Filter() { ICollectionView collectionView = CollectionViewSource.GetDefaultView(Monitors); collectionView.Filter = new Predicate<object>(FilterOutZero);
public void Filter()
{
ICollectionView collectionView = CollectionViewSource.GetDefaultView(Monitors);
collectionView.Filter = new Predicate<object>(FilterOutZero);
//foreach (Monitor monitor in Monitors)
// monitor.Children.Filter();
}
public void过滤器()
{
ICollectionView collectionView=CollectionViewSource.GetDefaultView(监视器);
collectionView.Filter=新谓词(FilterOutZero);
//foreach(监视器中的监视器)
//monitor.Children.Filter();
}
FilterOutZero函数根据监视器的状态返回真/假
我可以让它在可观察集合的第一级工作,但我正在努力过滤内部集合
任何指导都将不胜感激。将您的过滤功能扩展为可观察的集合
public void Filter<T>(this ObservableCollection<T> collection)
public void过滤器(此ObservableCollection集合)
在监视器类中创建属性筛选器。
此属性在添加监控器过滤器时初始化。
将此筛选器应用于监视器内部的监视器
public class Monitor
{
private Predicate<object> _filter;
public Predicate<object> Filter
{
get { return _filter; }
set
{
_filter = value;
ICollectionView collectionView = CollectionViewSource.GetDefaultView(test);
collectionView.Filter = new Predicate<object>(_filter);
}
}
public ObservableCollection<Monitor> monitor{ get; set; }
}
public void Filter()
{
ICollectionView collectionView = CollectionViewSource.GetDefaultView(Monitors);
collectionView.Filter = new Predicate<object>(FilterOutZero);
foreach (var l in Monitors)
{
l.Filter = collectionView.Filter;
}
}
公共类监视器
{
私有谓词过滤器;
公共谓词过滤器
{
获取{return\u filter;}
设置
{
_过滤器=值;
ICollectionView collectionView=CollectionViewSource.GetDefaultView(测试);
collectionView.Filter=新谓词(\u Filter);
}
}
公共ObservableCollection监视器{get;set;}
}
公共空过滤器()
{
ICollectionView collectionView=CollectionViewSource.GetDefaultView(监视器);
collectionView.Filter=新谓词(FilterOutZero);
foreach(监视器中的var l)
{
l、 Filter=collectionView.Filter;
}
}
如何处理过滤器的结果?