数据绑定是将视图连接到模型的好方法

时间:2009-08-26 16:17:40

标签: wpf silverlight model-view-controller data-binding mvp

我正在考虑WPF或Silverlight应用程序的设计。我打算使用MVC(或其他这样的设计模式)

我选择的设计模式,我需要连接到模型(或演示者)的视图 - 数据绑定是一个很好的方法吗?

(在过去的WinForms应用程序中,我发现数据绑定从长远来看会带来很多问题而且不能实现它的承诺。它与WPF和Siverlight一样吗?)

4 个答案:

答案 0 :(得分:2)

是的,你绝对应该使用数据绑定。虽然WinForms和ASP.NET总是很难以一致且可维护的方式获得任何数据绑定,但Silverlight和WPF是从头开始构建的,用于数据绑定的乐趣。

  • 绑定是双向,因此您不必编写繁琐的管道代码来将数据移入和移出模型。只需实施 INotifable 即可离开。
  • 转换器允许您编写代码,以便在默认设置不起作用时处理绑定方式。使用转换器(写入非常简单),您可以将布尔值绑定到可见性设置,将字符串绑定到图像,将整数绑定到背景颜色等等。天空是极限。
  • MVVM 等模式非常适合WPF和Silverlight中的丰富数据绑定支持。 MVVM让您拥有两全其美的优势:松散耦合的代码和数据绑定。
  • 元素绑定允许您将属性绑定到另一个元素的属性。与转换器一起,这为您提供了令人印象深刻的功能,例如将滑块控件的当前位置绑定到列表控件的选定索引。两种方式。
  • 深层绑定表示您可以绑定到模型属性的属性。不是你总是应该,但你可以。
  • 绑定在动态 - 中几乎是神奇的。只要模型继续支持相同的绑定属性,即使模型的静态类型发生更改,绑定也将继续有效。绑定也很疯狂灵活。您可以绑定到集合,接口,复杂对象,(几乎)您喜欢的任何内容。
  • DataContexts 可用于在页面,控件或容器级别设置数据绑定。然后容器的子级继承相同的数据上下文。这使您可以在页面级别绑定一次,然后对页面的其余部分使用绑定路径。

答案 1 :(得分:1)

我建议你看一下Model-View ViewModel(MVVM)模式。这是一个非常好的视频,你应该看看:Jason Dolinger on Model-View-ViewModel。 WPF中的双向数据绑定非常强大。

答案 2 :(得分:1)

无论是WPF还是Adobe Flex或Winforms,当应用程序变得复杂时,数据绑定总会出现问题。我宁愿避免数据绑定以便于调试。但数据绑定在WPF周围运行,我们无法避免。在XAML中进行数据绑定会剥夺开发人员的控制权。

我认为,如果我们在代码中保留数据绑定,它就更容易调试。

想象一下,MVVM没有数据绑定,看起来会很乱。利用技术的设计模式很好,但完全依赖于特定功能的设计是一种灾难。

答案 3 :(得分:0)

WPF中的数据绑定远远超出了Winforms中的功能。它是平台固有的,并且贯穿始终。我认为如果不理解它的数据绑定系统就无法理解WPF。

确定,并非没有陷阱。破坏的绑定通常不像您所希望的那样明显,但已经进行了改进以帮助您识别和标记这些问题。