【问题标题】:CollectionViewSource Filtering Event vs PropertyCollectionViewSource 过滤事件与属性
【发布时间】:2011-04-19 00:13:45
【问题描述】:

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

干杯,
浆果

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

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

【问题讨论】:

标签: wpf silverlight filter collectionviewsource


【解决方案1】:

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

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

viewsource.Filter += viewsource_Filter;

然后:

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

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

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

viewsource.view.Filter = null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多