我是 ASP.NET 开发人员,但最近也开发 WPF 应用程序。在 ASP.NET 中,每当我需要刷新 GridView 中的数据时,我只需调用DataBind()
. 但是在 WPF 中有什么替代方法呢?作为一种解决方法,我目前实现INotifyCollectionChanged
了刷新数据。
问问题
321 次
1 回答
4
您不应该将实现INotifyCollectionChanged
视为一种解决方法——这实际上是 WPF 中的良好做法。
(请注意,您可以改为填充System.ComponentModel.BindingList。绑定到此列表的 WPF 控件将随着列表的更改而自动更新。)
那么为什么在 ASP.NET 中显式数据绑定是标准做法,而在 WPF 中使用观察者模式呢?这来自于两种环境的不同性质。
ASP.NET 是关于创建和填充网页的。网页不会自我更新;当用户执行回发时,会重新创建一个全新的网页。因此,采用批处理方法是有效的:组装所有数据,然后说“好的,数据准备就绪,现在填充控件”。
在富客户端应用程序中,用户界面控件只创建一次,但底层数据会在控件的生命周期内发生变化。如果您使用显式数据绑定,则每次数据更改时,您将确定哪些控件必须更新,然后在每个控件上调用“DataBind”。这是一个令人头疼的维护问题。最好是唯一知道绑定的组件是控件本身。数据可以只是宣布“我已经改变了”,控件可以自行更新。
于 2011-04-10T10:19:11.720 回答