Sau*_*tha 3 c# wpf xaml binding user-controls
这是我本来想要的.一个UserControl
与TextBlock
它的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
它不起作用.
我该如何做这个工作?
使用这样的RelativeSource
属性:
<userControl:ClientDetailsControl
Prop="{Binding MyProp,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>
Run Code Online (Sandbox Code Playgroud)