绑定用户控件中的文本框?

时间:2012-11-13 16:01:21

标签: silverlight user-controls

我有以下

MyAwesomeControl(用户控件)

里面有一个文本框。绑定到名为文本的依赖项属性。

SimpleViewModel

喜欢对象(不是真正的虚拟机,但它得到了重点),设置了一组人(可以观察到)

它还有一个 SelectedPerson 属性,通知更改

主页控制

是否将其数据上下文设置为 SimpleViewModel 包含一个绑定到人员集合的网格(用于选择一个人)

MyAwesomeControl及其 Text 属性绑定到SelectedPerson.Name

TextBlock也绑定到SelectedPerson.Name

我在这里做了一个小解决方案:https://skydrive.live.com/redir?resid=82ECBE29B8DC2CD5!300

问题

当我在网格中选择一个人时,MyAwesomeControl中的文本框不会更新。

主表单上的文本块。

我们如何允许用户提供对MyAwesomeControl文本的绑定,并更新内部文本框(注意此控件将被重用,因此我无法知道主页特定值)

非常感谢

1 个答案:

答案 0 :(得分:1)

当您需要绑定到自定义用户控件中的自定义依赖属性时,您需要使用元素绑定,并且不要在用户控件中设置DataContext

因此,您需要按照以下步骤使示例正常运行:

  • 您需要从userControl的构造函数中删除DataContext = this;

  • 只需为UserControl添加名称,例如<UserControl ... x:Name="Self" >

  • 在文本绑定中使用ElementName SelfMyAwsomeControl.xaml内):

    Text="{Binding Text, ElementName=Self, Mode=TwoWay}"
    

如果您不想使更新生效,您还需要将Mode设置为使用自定义控件的TwoWayMainPage.xaml内):

Text="{Binding SelectedPerson.Name, Mode=TwoWay}"