绑定WPF用户控件的问题

Sau*_*tha 3 c# wpf xaml binding user-controls

这是我本来想要的.一个UserControlTextBlock它的Text属性绑定到Prop的属性UserControl.(这只是我实际问题的一种表现)

下面是我的一部分UserControl(ClientDetailsControl.xaml)

<TextBlock Text="{Binding Prop}" />
Run Code Online (Sandbox Code Playgroud)

接下来是 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我主要的WPF窗口(NewOrder.xaml)我用这UserControl作为

<userControl:ClientDetailsControl Prop="{Binding MyProp}" />
Run Code Online (Sandbox Code Playgroud)

MyProp财产在下面声明如下NewOrder.xaml.cs

public String MyProp { get { return "HELLO"; } }
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到以下错误:

BindingExpression路径错误:'object'''ClientDetailsControl'(Name ='')'上找不到'MyProp'属性.BindingExpression:路径= MyProp; DataItem ='ClientDetailsControl'(Name =''); target元素是'ClientDetailsControl'(Name =''); target属性是'Prop'(类型'String')

当我简单地写

<userControl:ClientDetailsControl Prop="ABCD" />
Run Code Online (Sandbox Code Playgroud)

有用.但是,当我尝试绑定它的Prop属性时UserControl,MyProp它不起作用.

我该如何做这个工作?

Sal*_*ari 5

使用这样的RelativeSource属性:

<userControl:ClientDetailsControl 
  Prop="{Binding MyProp,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>
Run Code Online (Sandbox Code Playgroud)