【发布时间】:2013-12-06 09:09:46
【问题描述】:
我的 UserControl 需要绑定到祖先(祖先是 MainWindow)和自身(它是隐藏的代码)。
要绑定到祖先,我正在使用
DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1,AncestorType=Window}}">
要将控件绑定到后面的代码(因此使用“本地”DataContext),我正在使用
<TextBlock Text ="{Binding MyUC3Property}" Name="MyName" />
在后面的代码中,设置如下
this.MyName.DataContext = this;
以上工作正常,我可以绑定到代码隐藏和祖先。
现在,我仍然想绑定到后面的代码和祖先,但只在 XAML 中设置 DataContext(如果可能的话)。
我试过了
<TextBlock Text ="{Binding MyUC3Property}" DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}" />
并确保构造函数不设置 DataContext(因为我希望这一切都在 XAML 中完成)-(尽管即使我设置了 this.DataContext = this; 错误仍然存在)
输出窗口告诉我存在绑定错误。
System.Windows.Data 错误:40:BindingExpression 路径错误:在“对象”“TextBlock”(名称=“”)上找不到“MyUC3Property”属性。绑定表达式:路径=MyUC3Property;数据项='文本块'(名称='');目标元素是'TextBlock'(名称='');目标属性是“文本”(类型“字符串”)
我想我遗漏了一些明显的东西,但我不知道是什么。
【问题讨论】:
-
什么绑定错误?错误信息是什么?
-
在窗口/控件集的构造函数
this.DataContext = this; -
我想您将问题中的示例源代码的
MyUC3Property重命名为MyLocalProperty? -
@RononDex 我确实尝试过这个,但它有什么帮助?它将“覆盖”我确实想要绑定到父级。
-
@DaveRook 希望此 pdf 对您有所帮助nbdtech.com/Free/WpfBinding.pdf