0

でのバインドに奇妙な問題がありWPFます。私がやっていることの簡単なサンプルがあります:

 public class Project
 {
    private string _title;
    public string Title
    {
        get { return _title; }
        set
        {
            _title= value;
            RaisePropertyChanged("Title");
        }
    }
 }

 public class People
 {
   private string _name;
   public string Name
   {
      get { return _name; }
      set
      {
        _name= value
        RaisePropertyChanged("Name");
      }
   }

   private Project _project;
   public Project Project 
   {
      get { return _project; }
      set
      {
        _project= value;
        RaisePropertyChanged("Project");
      }
   }
}

ビュー内の People のインスタンスにグリッドをバインドし、コントロールを Project および Name of People クラスにバインドできますが、バインドできない理由が本当にわかりませんProject.Title

私は次のようにXAMLコードを書きます:

<TextBox Text="{Binding Name}"/>
<Combobox .... SelectedItem="{Binding Project}"/>
<TextBox Text="{Binding Project.Title}"/>

上記の最初の 2 つのコントロールは正しくバインドされますが、最後のコントロールはバインドされTextBoxません。なぜアクセスできるのにアクセスできないのかProjectわかりませんProject.Titleか?これは、私が WPF で既に見たもう 1 つの奇妙なことです。

4

4 に答える 4

0

「Path=Project.Title」を試してみてください。同じケースで私のために働いた。

于 2013-09-10T07:06:46.820 に答える
0

皆さんありがとうございます。問題は私が思っていたものではありませんでした。実際にPropertyChanged.Fodyを使用してプロパティに注入INotifyPropertyChangedしましたが、期待どおりに動作しないようINotifyPropertyChangedです。

于 2013-09-10T08:45:08.813 に答える
0

DataContext が Person オブジェクトのインスタンスである場合、それは機能するはずです。実行時に Snoop ( http://snoopwpf.codeplex.com/ ) でバインドを確認できます。試してみる :)

あなたもできる

<TextBox DataContext="{Binding Project, Mode=OneWay}" Text="{Binding Title}"/>
于 2013-09-10T07:26:51.417 に答える