WPF 绑定到 UserControl 的 DependencyProperty 未按预期工作[重复]

问题描述 投票:0回答:1

我在 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" />

但是我当然想要的不是固定值,而是绑定对象的内容。 有什么提示这里出了什么问题吗?

提前致谢!

c# wpf xaml user-controls dependency-properties
1个回答
4
投票

您没有为任何人共享足够的代码来重现问题,但从字里行间看,我猜测

Label
位于您的
UserControl
XAML 中。如果
TestValue
是您的
UserControl
的属性,这可能会起作用:

<Label Content="{Binding TestValue, RelativeSource={RelativeSource AncestorType=UserControl}}" />

您做对的一件事是:您的 UserControl 构造函数必须始终设置

DataContext = this;
。无一例外。

© www.soinside.com 2019 - 2024. All rights reserved.