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

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 に答える