2

使用 CollectionViewSource.View.Filter 属性与使用 CollectionViewSource.Filter 事件之间有哪些实际区别?在某些情况下您会使用其中一个而不是另一个,或者这是一个偏好问题?

干杯,
贝里尔

编辑:我确实看到文档说“如果您的视图对象来自 CollectionViewSource 对象,您可以通过为 Filter 事件设置事件处理程序来应用过滤逻辑。” 尽管没有什么能阻止您在视图上设置属性,但它并没有说明为什么要这样做。

到目前为止,我发现在 CollectionViewSource 上设置事件的优势在于,您可以在一个事件处理程序中实现所有过滤逻辑,然后在用户更改过滤条件时使用 View.Refresh(或 View.DeferRefresh)调用它。

4

1 回答 1

0

在 CollectionViewSource 中设置Filter事件意味着即使不需要过滤也会调用该事件,这会降低流程效率。

使用Filter事件的官方方式是在过滤器中添加它,然后在过滤器被清除时将其删除。

viewsource.Filter += viewsource_Filter;

然后:

viewsource.Filter -= viewsource_Filter;//你怎么知道有多少事件!?

如果您使用事件,则必须确保每次过滤器值更改时都不会添加事件,因为除了潜伏着多余的事件(=应用程序更努力地工作)之外,您还必须删除所有事件命令清除过滤器。

因此,使用该属性有一个优势Filter,因为您可以通过将属性设置为 来更轻松地清除过滤器null

viewsource.view.Filter = null;

于 2015-11-05T10:18:39.073 回答