这是我本来想要的。
UserControl
TextBlock
的{{1}}属性绑定到Text
的{{1}}属性。 (这只是我实际问题的一种表现)
以下是我的Prop
(UserControl
)
UserControl
接下来是ClientDetailsControl.xaml
<TextBlock Text="{Binding Prop}" />
现在,在我的主WPF窗口(ClientDetailsControl.xaml.cs
)中,我使用此public partial class ClientDetailsControl : UserControl
{
public static DependencyProperty PropProperty = DependencyProperty.Register("Prop", typeof(String), typeof(ClientDetailsControl));
public String Prop { get; set; }
public ClientDetailsControl()
{
InitializeComponent();
DataContext = this;
}
}
作为
NewOrder.xaml
UserControl
<userControl:ClientDetailsControl Prop="{Binding MyProp}" />
属性声明如下
MyProp
当我运行此代码时,我收到以下错误:
BindingExpression路径错误:&#39; MyProp&#39;在&#39; object&#39;上找不到的属性 &#39;&#39; ClientDetailsControl&#39; (名称=&#39;&#39;)&#39 ;. BindingExpression:路径= MyProp; 的DataItem =&#39; ClientDetailsControl&#39; (名称=&#39;&#39);目标元素是 &#39; ClientDetailsControl&#39; (名称=&#39;&#39);目标财产是&#39; Prop&#39; (类型 &#39;字符串&#39)
当我写简单时
NewOrder.xaml.cs
有效。但是,当我尝试将public String MyProp { get { return "HELLO"; } }
的{{1}}属性绑定到<userControl:ClientDetailsControl Prop="ABCD" />
时,它无效。
如何使这项工作?
答案 0 :(得分:5)
使用RelativeSource
属性,如下所示:
<userControl:ClientDetailsControl
Prop="{Binding MyProp,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>