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

发布于 2024-10-31 13:24:07 字数 171 浏览 3 评论 0 原文

我是 ASP.NET 开发人员,但最近也在开发 WPF 应用程序。在 ASP.NET 中,每当我需要刷新 GridView 中的数据时,我只需调用 DataBind()。但在 WPF 中还有什么可以替代它呢?作为一种解决方法,我目前实现了 INotifyCollectionChanged 来刷新数据。

I'm ad ASP.NET developer but recently develop WPF applications too. In ASP.NET whenever I needed to refresh data in a GridView I just call DataBind(). But what is alternative of it in WPF? As a work-around I currently implemented INotifyCollectionChanged to refresh data.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秉烛思 2024-11-07 13:24:07

您不应该将实现 INotifyCollectionChanged 视为解决方法 - 这实际上是 WPF 中的良好实践。

(请注意,您可以改为填充 System.ComponentModel.BindingList。WPF绑定到此列表的控件将随着列表的更改而自动更新。)

那么为什么显式数据绑定是 ASP.NET 中的标准做法,而 观察者模式?这是由于两种环境的不同性质造成的。

ASP.NET 就是关于创建和填充网页的。网页不会自行增量更新;当用户执行回发时,将重新创建一个全新的网页。因此,采用批处理方法是有效的:组装所有数据,然后说“好的,数据已准备好,现在填充控件”。

在富客户端应用程序中,用户界面控件创建一次,但基础数据在控件的生命周期内发生变化。如果您使用显式数据绑定,则每次数据更改时,您都将确定必须更新哪些控件,然后对每个控件调用“DataBind”。这是一个令人头痛的维护问题。最好是唯一知道绑定的组件是控件本身。数据可以只是宣布“我已经改变了”,而控件可以自行更新。

You shouldn't think of implementing INotifyCollectionChanged as a workaround - this is actually good practice in WPF.

(Note that you could populate a System.ComponentModel.BindingList instead. WPF controls that are bound to this list will automatically update as the list changes.)

So why is explicit data binding the standard practice in ASP.NET, while the observer pattern is used in WPF? This comes from the different nature of the two environments.

ASP.NET is all about creating and populating a web page. The web page doesn't incrementally update itself; when the user performs a postback a whole new webpage is recreated. Because of this, it's efficient to take a batching approach: assemble all of the data, and then say "OK, the data is ready, populate the controls now".

In a rich-client application, the user interface controls are created once, but the underlying data changes within the controls' lifetime. If you employed explicit data binding, each time the data changes you would determine what controls have to update and then call "DataBind" on each one of them. That's a maintenance headache. It's better that the only components that are aware of the binding are the controls themselves. The data can just announce "I have changed", and the controls can update themselves at their own discretion.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文