我是ASP.NET开发人员,但最近也开发了WPF应用程序。在ASP.NET中,每当我需要刷新GridView中的数据时,我只需调用DataBind()
。但它在WPF中的替代方案是什么?作为解决方案,我目前实施了INotifyCollectionChanged
来刷新数据。
答案 0 :(得分:4)
您不应该考虑实施INotifyCollectionChanged
作为解决方法 - 这实际上是WPF中的好习惯。
(请注意,您可以填充System.ComponentModel.BindingList。绑定到此列表的WPF控件将在列表更改时自动更新。)
那么为什么显式数据绑定ASP.NET中的标准实践,而WPF中使用observer pattern?这来自两种环境的不同性质。
ASP.NET就是创建和填充网页。网页不会逐步更新;当用户执行回发时,将重新创建整个新网页。因此,采用批处理方法是有效的:汇总所有数据,然后说“好了,数据就绪,现在填充控件”。
在富客户端应用程序中,用户界面控件创建一次,但底层数据在控件的生命周期内发生更改。如果您使用显式数据绑定,则每次数据更改时,您将确定必须更新哪些控件,然后在每个控件上调用“DataBind”。这是一个维护问题。唯一知道绑定的组件是控件本身。数据可以宣布“我已经改变”,控件可以自行更新。