绑定到WPF中某个属性的属性

本文关键字:属性 WPF 绑定 | 更新日期: 2023-09-27 18:29:11

我对WPF很陌生,它真的让我陷入了循环。我正在尝试绑定到自定义UserControl:上的成员

控制:

<UserControl
...
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
    <Grid x:Name="TestControlRoot" HorizontalAlignment="Stretch" DataContext="TestControl" Margin="8">
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
            <Label Name="TitleLabel" Content="{Binding Path=esmTest.testName, Mode=OneWay}" HorizontalAlignment="Left" Foreground="White"/>
        </StackPanel>
    </Grid>
</UserControl>

控件背后的代码:

public partial class TestControl : UserControl
{
    public static readonly DependencyProperty esmTestProperty = DependencyProperty.Register("esmTest", typeof(ESMTest), typeof(TestControl));
    public ESMTest esmTest
    {
        get { return (ESMTest)GetValue(esmTestProperty); }
        set { SetValue(esmTestProperty, value); }
    }
    public TestControl(ESMTest theTest)
    {
        InitializeComponent();
        esmTest = theTest;
    }
    ...
}

ESM测试类

public class ESMTest : DependencyObject
{
    ...
    public static readonly DependencyProperty testNameProperty = DependencyProperty.Register("testName", typeof(string), typeof(ESMTest));
    public string testName
    {
        get { return (string)GetValue(testNameProperty); }
        set { SetValue(testNameProperty, value); }
    }
}

运行此操作时,标签中没有任何内容。我在这里错过了什么?

此外,我发现很难找到关于WPF的良好信息来源,尤其是数据绑定。我可以找到超级基础教程,也可以找到关于如何解决特定问题的堆栈交换帖子。我很想写一篇关于WPF中数据绑定和DependencyObjects的全面文章,这样我就可以全面了解这些东西是如何工作的,以及我可能使用这些东西的许多不同方式。有人能推荐一个好的资源吗?

绑定到WPF中某个属性的属性

总结中的注释

<Grid ... DataContext="TestControl">

使用字符串TestControl覆盖上面设置的DataContext。如果您要删除,那么您的绑定应该可以正常工作