将标签内容绑定到自身字符串字段但没有结果

时间:2010-09-02 01:00:34

标签: c# .net wpf binding label

我正在尝试用户控件中的简单绑定:

<UserControl x:Class="MyApp.FlowNode" ...>
    <StackPanel>
        <Label Content="{Binding Path=Header, RelativeSource={RelativeSource Self}}" />
    </StackPanel>
</UserControl>

底层代码为:

public partial class FlowNode : UserControl
{
    public FlowNode()
    {
        InitializeComponent();
    }

    public string Header { get { return "Testing"; } };
}

但是,标签保持空白。我做错了什么?

4 个答案:

答案 0 :(得分:2)

{RelativeSource Self}是指Label个实例,而不是您的用户控件。

不应使用RelativeSource,而应将UserControl的DataContext设置为自身,就像karmicpuppet建议的那样。

答案 1 :(得分:0)

在构造函数中,将UserControl的DataContext设置为自身。 “this.DataContext = this”。并删除绑定中的RelativeSource。

答案 2 :(得分:0)

尝试使用

{Binding Path=Header, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FlowNode}}}.

答案 3 :(得分:0)

在我看来,在xaml中访问'Me'/'this'最方便的方法是在你的控件上放一个名字:     &LT;用户控件              X:类= “MyApp.FlowNode”              ...              Name =“MyFlowNode”&gt; 然后,如果绑定到控件的属性或dp,则使用ElementName语法。

因此,您不要破坏控件的DataContext。

可能有一种方法可以使用RelativeSource FindAncestor绑定,但我认为没有优势。

将Control的DataContext设置为自身,否则会失去对其DataContext的认识。