WPF的DataBinding有什么用?

时间:2012-03-04 00:21:10

标签: wpf data-binding

我知道它背后的重点,但在一天结束时,唯一提供的是干净的代码,我是对的吗?

问题:

要执行数据绑定,您必须在后面的代码中执行一些操作(设置依赖项属性),有时可能很清楚,有时则不然。然后你必须找出如何从你的依赖属性(你正在尝试使用的对象)访问值的地狱。然后,好吧,你花了一些时间决定你将通过ElementName或Ancestor或其他任何方式访问它(因为你必须自己找出它是如何工作的,微软的文档相当蹩脚,它不是直截了当的)。

然后,好吧,你花了一些时间,现在你的数据绑定工作正常,但事实并非如此。因为要绑定的对象的类必须实现INotifyPropertyChanged。只是。或者不是,因为您必须确保必须触发事件(OnPropertyChanged)才能更新接口上的值...通过发送一个包含THE EFFING PROPERTY NAME的字符串作为参数。这与JSF访问价值的方式一样蹩脚(开发人员必须完全按照他们想要的方式拥有getter和setter)。另外,如果您正在分层构建软件,请忘记,您必须实现INotifyPropertyChange every-effing-where。

我写这篇是因为我想知道是否:

  • 我做错了什么,这就是为什么我不明白这一点。
  • 有没有更好的解决方案来处理这类事情?
  • 我是唯一一个认为没有任何意义的人吗?

在有人问之前:是的,我理解这个事件“有些”意义,因为必须有办法知道对象发生了变化。但是,每次我在界面中做任何事情时,我都没有看到使用它或仅调用Update方法的差异。我希望你们不要因为发布这个而感到愚蠢...我是一个非常新的程序员(毕业开始3年,工作经验2年),但缺乏更好的方法其中的东西看起来并不像,例如,微软的ASP.NET MVC,它只是神奇地运作。我并不是要求一切都变得简单,只是要求更好的文档,而且,我不知道,更容易(通过更容易,我意味着更直接)的方式来做你应该做的事情。使用框架,被认为是优雅的东西。

2 个答案:

答案 0 :(得分:2)

  1. 这很难学习并不会改变它是一种强大的技巧,这涵盖了你大部分的咆哮。
  2. 如果您厌恶字符串,则可以从lambda表达式中解析属性名称。执行此操作的扩展方法的代码在SO上的某处浮动。
  3. 如果您不想在任何地方实现它,请在一个基类中实现它。
  4. 如果你想要魔法使用MVVM框架来做到这一点。例如,Caliburn在不编写任何绑定代码的情况下挂钩控件和方法/属性。
  5. 绑定解耦组件。

答案 1 :(得分:2)

我喜欢乌龟。我也喜欢数据绑定。我建议阅读MVVM模式......它使用数据绑定,使您可以轻松地运行单元测试并保持代码井井有条。请务必查看MVVM中如何使用“DataContext”属性。

P.S。我不认为在OnNotifyProperty中使用effing属性的名称是蹩脚的。如果不添加依赖关系或不必要的复杂性,您还会使用什么?

P.P.S。清洁代码是一个非常大的交易。