asp.net - WPF 中 ASP.NET DataBind() 的替代方案是什么?

标签 asp.net wpf data-binding inotifycollectionchanged

我是 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/

相关文章:

WPF ComboBox 下拉列表阻止单击其他控件

c# - 仅垂直折叠文本框 - 如果它被隐藏,则获取实际高度

WPF:简单的文本框数据绑定(bind)

javascript - d3.js 更新数据绑定(bind)

c# - 在 TreeView 周围移动节点

asp.net - 多线程接受值并返回值

c# - 动态生成的按钮点击没有被调用?

c# - ASP.NET Repeater 中的 ImageButton 不会触发 OnClick 事件处理程序

wpf - 有没有一种简单的方法可以绑定(bind)到 WPF 中的父行?

c# - 仅获取 Referrer 页面而不是 .NET 中的完整地址