将TextBlock绑定到Window的属性

时间:2012-03-26 15:53:46

标签: wpf binding

这应该很简单,但我无法让它发挥作用。 我有一个窗口(主要的xaml应用程序窗口)

我已经定义了一个类型为“Test”的属性(谁拥有和int ID和DateTime TestDate)

      public Test CurrentTest
    {
        get
        {
            return currentTest;
        }
        set
        {
            currentTest = value;
            OnPropertyChanged("CurrentTest");
        }
    }

我添加了OnPropertyChanged Impl:

public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(String property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }

现在我尝试将其绑定到窗口上的文本块。 但它不起作用:

<TextBlock Text="{Binding Source={StaticResource CurrentTest}, Path=TestDate, StringFormat=dd/MM/yyyy, TargetNullValue=Not Yet Set}"></TextBlock>

这也不起作用:

<TextBlock>
            <TextBlock.Text>
                <Binding ElementName="CurrentTest" Path="TestDate" TargetNullValue="not yet set" Mode="OneWay"></Binding>
            </TextBlock.Text>
        </TextBlock>

如何让textBlock显示此属性的日期?

1 个答案:

答案 0 :(得分:22)

您可以使用RelativeSource属性:

<TextBlock Text="{Binding Path=CurrentTest.TestDate,
                          RelativeSource={RelativeSource Mode=FindAncestor,
                                                         AncestorType=Window}}" />