我在 DependecyProperty 绑定方面遇到一些奇怪的问题。 为了让问题更简单,我创建了一些虚拟控件,它具有相同的不良行为
我有一个 UserControl,它在后面的代码中定义了一个 DependencyProperty:
public static readonly DependencyProperty TestValueProperty = DependencyProperty.Register("TestValue", typeof(string), typeof(Test), new PropertyMetadata(default(string)));
public string TestValue
{
get { return (string)GetValue(TestValueProperty); }
set { SetValue(TestValueProperty, value); }
}
此属性在 XAML 中使用:
<Label Content="{Binding TestValue}" />
该控件应该在另一个控件中使用,如下所示:
<views:Test TestValue="{Binding Settings.Setting123}" />
Settings
在视图模型中定义为属性。
但是
Settings.Setting123
的内容在我的用户控件的标签中不可见。
当编写一些修复值而不是绑定时,它工作正常:
<views:Test TestValue="Test" />
但是我当然想要的不是固定值,而是绑定对象的内容。 有什么提示这里出了什么问题吗?
提前致谢!
您没有为任何人共享足够的代码来重现问题,但从字里行间看,我猜测
Label
位于您的 UserControl
XAML 中。如果 TestValue
是您的 UserControl
的属性,这可能会起作用:
<Label Content="{Binding TestValue, RelativeSource={RelativeSource AncestorType=UserControl}}" />
您做对的一件事是:您的 UserControl 构造函数必须始终设置
DataContext = this;
。无一例外。