繁体   English   中英

在另一个内部绑定一个类的对象的属性不起作用

[英]Binding a property of an object of a class inside another doesn't work

我在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}"/>

上面的前两个控件正确地有界,但最后一个TextBox没有。 我不知道为什么它可以访问Project但不能访问Project.Title 这是我在WPF中已经看到的另一件事!

也许您的组合框选择没有设置设置值而不使用Mode=TwoWay

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

设置Project ,设置属性,将显示Title

尝试“ Path = Project.Title”。 在同一案例中为我工作。

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

你也可以

<TextBox DataContext="{Binding Project, Mode=OneWay}" Text="{Binding Title}"/>

谢谢大家,但问题不是我的想法。实际上我使用PropertyChanged.FodyINotifyPropertyChanged注入属性,但似乎未达到我的预期。我自己实现了INotifyPropertyChanged ,现在可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM