程序化数据绑定

时间:2011-06-02 01:48:42

标签: c# wpf data-binding binding

我试图了解数据绑定的强大功能和复杂性。我正在开发一个相当复杂的应用程序,它需要一个视图模型来聚合所有不同的数据,然后将该模型绑定到用户控件。

我的视图模型的结构是创建了许多类来管理各个数据元素,我希望以编程方式将这些类绑定在一起,即在UI之外。

我需要将两个看似无关的类的数据元素绑定在一起。然后,我可以使用xaml将聚合类数据带到UI。

换句话说,类“A和”B“每个都有一个声明为”Name“的字符串。我希望实现这些的双向绑定,以便当”名称“已更改,绑定负责数据更新。

这项任务似乎很容易,但我找不到任何例子。

2 个答案:

答案 0 :(得分:0)

数据绑定this MSDN page具有高度相关性。

你应该注意到绑定要求目标属性为DependecyProperty,并且绑定在概念上是片面的,它们只能在两个方向上进行,而只是在一端设置。

您通常不希望DependencyProperties是您的模型,因为它要求它继承DependencyObject。通过在两个类中引用相同的名称包装对象来实现这种关系可能更好。

答案 1 :(得分:0)

绑定非UI视图模型类将很复杂,因为您必须手动挂接属性更改的通知,然后设置聚合属性。但MultiBinding是专为此场景设计的。

您应该尝试MultiBinding,而不是创建聚合类属性/类, http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx

另一种方法是使用以下LambdaBinding Extensions轻松创建MultiBinding。

免责声明:我将在这里讨论我公司的产品。

我们有一些名为Lambda Binding的东西,它允许您绑定涉及其他控件和任何其他数据项的复杂表达式。

http://uiatoms.neurospeech.com/2011/03/ui-atoms-1-7-5-released/