【问题标题】:Is ObservableCollection<T> suitable in non UI scenariosObservableCollection<T> 是否适用于非 UI 场景
【发布时间】:2011-09-14 07:35:46
【问题描述】:

我对 ObservableCollection 不是很熟悉,但实现它似乎为我提供了一种基于任何添加/删除/替换/清除操作更新自定义集合状态的便捷方式。

但是,我查看的示例通常在 WPF/WinForms 数据绑定的上下文中引用它。

实施它是否会带来任何我应该警惕的不必要的开销/依赖关系,即。在我的场景中(仅更新基于添加/删除等添加到集合中的扩展状态)是否最好只实现 Collection 或类似的并通过覆盖每个添加/删除/替换/清除操作来更新扩展状态?

【问题讨论】:

    标签: c# observablecollection


    【解决方案1】:

    ObservableCollection 经常与 UI 相关联的原因是,如果您使用 MVVM 模式,它在更新视图方面提供了灵活性。话虽如此,我认为没有理由阻止您在非 UI 代码中使用它。性能相关信息请参考1

    【讨论】:

    • 感谢 Sandeep,看到一些性能数据也很有趣。非常感谢。
    【解决方案2】:

    如果您想在 WPF / WinForms 应用程序之外使用该集合,则该集合没有强依赖性。它只是实现了一个方便的接口。

    【讨论】:

    • 感谢您的回复 Tejs.. 我希望是这样。
    【解决方案3】:

    即使在引入 WPF 的 3.0 版本的框架中引入了 ObservableCollection,它与 UI 概念也没有很强的联系。此外,如果您阅读MSDN documentation,类型的描述不会以任何方式引用 UI 上下文:

    表示一个动态数据集合,在添加、删除项目或刷新整个列表时提供通知。

    事实上,它非常适合 UI 场景,因为它已经实现了 INotifiyPropertyChanged。所以回答你的问题,是的,在非 UI 场景中使用 ObservableCollection 是完全可以的。

    【讨论】:

    • 感谢 Ucodia..我接受了 Sandeeps 的回答,因为它包含一些性能数据来说明这一点。正如您所说,MSDN 文档让我相信它是合适的,但是当您搜索时,我想确定它有很多用于 UI 的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多