这就是我真正想要的。
UserControl
用TextBlock
谁的Text
属性绑定(bind)到 Prop
UserControl
的属性(property). (这只是我实际问题的代表)
下面是我的 UserControl
的一部分( ClientDetailsControl.xaml
)
<TextBlock Text="{Binding Prop}" />
接下来是 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;
}
}
现在,在我的 WPF 主窗口(NewOrder.xaml
)中,我正在使用这个 UserControl
作为
<userControl:ClientDetailsControl Prop="{Binding MyProp}" />
MyProp
属性在 NewOrder.xaml.cs
中声明如下
public String MyProp { get { return "HELLO"; } }
当我运行这段代码时,出现以下错误:
BindingExpression path error: 'MyProp' property not found on 'object' ''ClientDetailsControl' (Name='')'. BindingExpression:Path=MyProp; DataItem='ClientDetailsControl' (Name=''); target element is 'ClientDetailsControl' (Name=''); target property is 'Prop' (type 'String')
当我简单地写
<userControl:ClientDetailsControl Prop="ABCD" />
它有效。但是,当我尝试绑定(bind) Prop
UserControl
的属性(property)至 MyProp
它不起作用。
我如何使它工作?
最佳答案
使用 RelativeSource
像这样的属性:
<userControl:ClientDetailsControl
Prop="{Binding MyProp,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>
关于c# - WPF 用户控件的绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31451083/