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 和 People 类的名称,但我真的不明白为什么我不能绑定到Project.Title.

我这样写我的XAML代码:

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

上面的前两个控件得到了正确的限制,但最后一个TextBox没有。我不知道为什么它可以访问Project但不能访问Project.Title?这是我在 WPF 中看到的另一件奇怪的事情!

4

4 回答 4

1

也许您的组合框选择没有使用Mode=TwoWay

<Combobox .... SelectedItem="{Binding Project, Mode=TwoWay}"/>

一旦Project设置,属性设置,Title将显示。

于 2013-09-10T07:56:06.213 回答
0

尝试“路径 = Project.Title”。在同样的情况下为我工作。

于 2013-09-10T07:06:46.820 回答
0

如果您的 DataContext 是您的 Person 对象的实例,它应该可以工作。您可以在运行时使用 Snoop ( http://snoopwpf.codeplex.com/ ) 检查您的绑定。试试看 :)

你也可以

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

谢谢大家,但问题不是我想的那样。实际上我使用PropertyChanged.Fody注入INotifyPropertyChanged属性,但它似乎没有达到我的预期INotifyPropertyChanged。我自己实现了它现在工作正常。

于 2013-09-10T08:45:08.813 回答