1

我有一个 DependencyObject 类

public class TestDependency : DependencyObject
{
    public static readonly DependencyProperty TestDateTimeProperty ...

    public DateTime TestDateTime {get... set..}
}

我的窗户是这样的

public partial class MainWindow : Window{

    public TestDependency td;
    public MainWindow()
    {
        InitializeComponent();
        td = new TestDependency();
        td.TestDateTime = DateTime.Now;
    }
}

如果我想将 MainWindow 的依赖对象 td (public TestDependency td;) 的 TestDateTime 属性绑定到 Xaml 中的文本框,我该如何绑定它?这就是我现在正在做的

<TextBlock Name="tb" Text="{Binding Source = td, Path=TestDateTime, TargetNullValue=novalue}"/>

它根本不起作用。有谁知道我需要改变什么?

4

2 回答 2

2

首先,您需要定义td为属性而不是字段,因为您只能绑定到属性:

public TestDependency td { get; private set; }

然后,确保在窗口的构造函数中设置数据上下文:

public MainWindow()
{
    td = new TestDependency();
    td.TestDateTime = DateTime.Now;
    this.DataContext = this;

    InitializeComponent();
}

最后,在 XAML 中设置绑定:

<TextBlock Name="tb" Text="{Binding Path=td.TestDateTime}" />
于 2013-02-02T17:13:48.907 回答
0

我想你忘了DataContext在你的 MainWindow 中设置。

public MainWindow()
{
    InitializeComponent();
    td = new TestDependency();
    td.TestDateTime = DateTime.Now;

    DataContext = this;
}

使用属性而不是字段td

public TestDependency td { get; set; }

并且不要Source用于您的绑定,请使用Path

<TextBlock Name="tb" Text="{Binding Path= td.TestDateTime, TargetNullValue=novalue}"/>
于 2013-02-02T17:09:11.810 回答