【发布时间】:2009-04-01 14:58:13
【问题描述】:
我有一个小的用户控件,它基本上将一个值递增或递减一。用户控件有两个按钮(一个用于添加,另一个用于减去)和一个用于显示值的 textBlock。
我将在另一个用户控件中拥有此用户控件的多个实例,以便我可以操作具有 INotifyPropertyChanged 接口的数据类的值。我的问题是如何将值更改用户控件的 textBlock 数据绑定到我实例化它的用户控件?
【问题讨论】:
我有一个小的用户控件,它基本上将一个值递增或递减一。用户控件有两个按钮(一个用于添加,另一个用于减去)和一个用于显示值的 textBlock。
我将在另一个用户控件中拥有此用户控件的多个实例,以便我可以操作具有 INotifyPropertyChanged 接口的数据类的值。我的问题是如何将值更改用户控件的 textBlock 数据绑定到我实例化它的用户控件?
【问题讨论】:
首先,我想声明 Silverlight 2 不支持元素到元素的绑定。 Silverlight 3 中添加了该功能(现已推出 Beta 版)。话虽如此,我认为您无论如何都不想将控件绑定在一起。听起来您正在尝试构建一个 NumericUpDown 控件,并且您可能在代码后面有一些类实际上正在执行递增和递减。
如果是这种情况,您可以简单地订阅点击处理程序并调用模型上的方法,例如 Increment 或 Decrement。您的模型可以为当前值公开一个属性,并且该属性是绑定到您的文本框的。
现在,如果您实际上是在尝试构建 NumericUpDown 控件,您可能需要查看 Silverlight 工具包。该工具包已经包含了这个控件,并且还支持数据绑定。
查看 NumericUpDown 控件here 并下载工具包here。
最后,从子控件绑定到父控件实际上并没有什么不同。父 UserControl 有一个 DataContext 并且所有子控件都继承它。每个单独的子控件也可以有其 DataContext 集。绑定表达式始终与 DataContext 相关,并且可以在代码中设置 DataContext。在你的情况下,可能是某种模型。
希望对你有帮助。
【讨论】: