我有一个属性:
public ObservableCollection<Mapping> Mapping
{
get { return new ObservableCollection<Mapping>(_standardMappings
.Union(_userDefinedMappings)); }
}
在向基础集合添加/删除新项目时触发(OnPropertyChanged
)。
我绑定到ListView
,一切都有效,除了过滤。我正在按如下方式进行过滤:
var view = CollectionViewSource.GetDefaultView(Mapping);
view.Filter = filteringPredicate;
过滤代码被点击,但ListView
从不更改其视图。我可以通过做这样的事情来实现这个目标
private ObservableCollection<Mapping> _mappings;
public ObservableCollection<Mapping> Mappings { get{ return _mappings; } }
并且,在基础集合的OnCollectionChanged
上:
private void OnMappingCollectionChanged()
{
_standardMappings.CollectionChanged -= OnMappingCollectionChanged;
_userDefinedMappings.CollectionChanged -= OnMappingCollectionChanged;
_buttonMappings.Clear();
_standardMappings.ToList().ForEach(mapping=>_mappings.Add(mapping));
_userDefinedMappings.ToList().ForEach(mapping=>_mappings.Add(mapping));
_standardmMappings.CollectionChanged += OnMappingCollectionChanged;
_userDefinedMappings.CollectionChanged += OnMappingCollectionChanged;
}
然而,这是一个非常糟糕的解决方案IMO
而且,我确实关注CompositeCollection
,但you cannot filter on them
答案 0 :(得分:0)
您必须刷新视图才能重新评估过滤条件。
view.Refresh();