绑定到WPF中的属性的属性

时间:2016-01-06 22:47:41

标签: c# wpf xaml data-binding nested

我对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;
    }
    ...
}

ESMTest类

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的详细内容的综合性文章,以便我可以全面了解这些内容的工作原理以及我可能使用的许多不同方法。任何人都可以推荐一个好的资源吗?

1 个答案:

答案 0 :(得分:0)

总结这一行的评论

<Grid ... DataContext="TestControl">

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