我有以下
MyAwesomeControl(用户控件)
里面有一个文本框。绑定到名为文本的依赖项属性。
SimpleViewModel
喜欢对象(不是真正的虚拟机,但它得到了重点),设置了一组人(可以观察到)
它还有一个 SelectedPerson 属性,通知更改
主页控制
是否将其数据上下文设置为 SimpleViewModel 包含一个绑定到人员集合的网格(用于选择一个人)
MyAwesomeControl及其 Text 属性绑定到SelectedPerson.Name
TextBlock也绑定到SelectedPerson.Name
我在这里做了一个小解决方案:https://skydrive.live.com/redir?resid=82ECBE29B8DC2CD5!300
问题
当我在网格中选择一个人时,MyAwesomeControl中的文本框不会更新。
主表单上的文本块。
我们如何允许用户提供对MyAwesomeControl文本的绑定,并更新内部文本框(注意此控件将被重用,因此我无法知道主页特定值)
非常感谢答案 0 :(得分:1)
当您需要绑定到自定义用户控件中的自定义依赖属性时,您需要使用元素绑定,并且不要在用户控件中设置DataContext
。
因此,您需要按照以下步骤使示例正常运行:
您需要从userControl的构造函数中删除DataContext = this;
只需为UserControl添加名称,例如<UserControl ... x:Name="Self" >
在文本绑定中使用ElementName
Self
(MyAwsomeControl.xaml
内):
Text="{Binding Text, ElementName=Self, Mode=TwoWay}"
如果您不想使更新生效,您还需要将Mode
设置为使用自定义控件的TwoWay
(MainPage.xaml
内):
Text="{Binding SelectedPerson.Name, Mode=TwoWay}"