我是 ASP.NET 开发人员,但最近也在开发 WPF 应用程序。在 ASP.NET 中,每当我需要刷新 GridView 中的数据时,我只需调用 DataBind()
。但在 WPF 中还有什么可以替代它呢?作为一种解决方法,我目前实现了 INotifyCollectionChanged
来刷新数据。
最佳答案
您不应该将实现 INotifyCollectionChanged
视为解决方法 - 这实际上是 WPF 中的良好实践。
(请注意,您可以填充 System.ComponentModel.BindingList。绑定(bind)到此列表的 WPF 控件将随着列表更改而自动更新。)
那么为什么显式数据绑定(bind)是 ASP.NET 中的标准做法,而 observer pattern在WPF中使用?这是由于两种环境的不同性质造成的。
ASP.NET 的核心就是创建和填充网页。网页不会自行增量更新;当用户执行回发时,将重新创建一个全新的网页。因此,采用批处理方法是有效的:组装所有数据,然后说“好的,数据已准备好,现在填充控件”。
在富客户端应用程序中,用户界面控件创建一次,但基础数据在控件的生命周期内发生变化。如果您使用显式数据绑定(bind),则每次数据更改时,您都将确定必须更新哪些控件,然后对每个控件调用“DataBind”。这是一个令人头痛的维护问题。最好是唯一知道绑定(bind)的组件是控件本身。数据可以只是宣布“我已经改变了”,而控件可以自行更新。
关于asp.net - WPF 中 ASP.NET DataBind() 的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611092/