将控件绑定到此对象的代码隐藏属性

时间:2012-01-07 13:12:33

标签: wpf xaml binding controls

我在代码隐藏类中有一个属性,我想绑定我的Label控件:

    public MainWindow()
    {
        InitializeComponent();
        this.Label1Content = "some text";
    }

    public string Label1Content { get; set; }

但绑定失败了。显然我在绑定配置中遗漏了一些东西,但我不知道是什么。我知道如何使用C#绑定此属性,但是如何使用XAML绑定它并且不声明DataContext?

2 个答案:

答案 0 :(得分:1)

如果您不想在任何地方声明datacontext,可以使用

<Label Content="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=Label1Content}" />

答案 1 :(得分:1)

即使它是相同的控件,您仍然需要声明DataContext

public MainWindow()
{
    InitializeComponent();

    DataContext = this;

    this.Label1Content = "some text";
}

此外,控件必须实现INotifyPropertyChanged,以便您可以举起PropertyChanged事件。你的财产应该是自包含的,如下:

public string _lable1Content;
public string Label1Content
{
    get { return _label1Content; }
    set
    {
        if (Equals(value, _label1Content)) return;

        _label1Content = value;

        //However you decide to implement the RaisePropertyChanged method.
    }
}