我唯一能想到的方法就是
ObjectDataProvider
两个分开的
CollectionViewSource
xaml中的对象。一个视图将应用筛选器,另一个视图则不会。然后你可以直接绑定到
CheckBox.IsChecked
属性和使用自定义
IValueConverter
. 值转换器将有两个依赖属性-都是类型
CollectionViewSource.
这些属性可以称为,
未筛选
“和”
过滤岩
。在xaml中,您可以将unfiltered items属性设置为
集合ViewSource
这是未筛选的,筛选项属性设置为具有筛选器的项。转换器逻辑本身很简单-如果为true,则返回经过筛选的
集合ViewSource
,如果为false,则返回未过滤的。
这个解决方案不是非常优雅,但它可以完成任务。因为
Filter
不是一个
DependencyProperty
而且只能由事件处理程序指定,我们的手有点束缚在这个上面。不过,我认为你的解决方案并不坏。