绑定WPF用户控件的问题

时间:2015-07-16 09:59:58

标签: c# wpf xaml binding user-controls

这是我本来想要的。 UserControl TextBlock的{​​{1}}属性绑定到Text的{​​{1}}属性。 (这只是我实际问题的一种表现)

以下是我的PropUserControl

的一部分
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" /> 时,它无效。

如何使这项工作?

1 个答案:

答案 0 :(得分:5)

使用RelativeSource属性,如下所示:

<userControl:ClientDetailsControl 
  Prop="{Binding MyProp,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>