0

我有以下

MyAwesomeControl(用户控制)

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

简单视图模型

像对象(不是真正的虚拟机,但它得到了重点),建立了一个人的集合(这是可观察的)

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

主页面控制

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

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

一个 TextBlock 也绑定到 SelectedPerson.Name

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

问题

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

主窗体上的文本块确实如此。

我们如何允许用户提供对 MyAwesomeControl 的文本的绑定,并让它更新内部文本框(注意这个控件将被重用,所以我不知道主页特定的值)

非常感谢

4

1 回答 1

1

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

因此,您需要按照以下步骤使您的示例工作:

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

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

  • 并在您的文本绑定(内部)中使用ElementNamewith :SelfMyAwsomeControl.xaml

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

如果您不想使更新工作,您还需要设置您使用自定义控件的位置(内部Mode):TwoWayMainPage.xaml

Text="{Binding SelectedPerson.Name, Mode=TwoWay}"
于 2012-11-13T16:26:17.067 回答