Binding WPF绑定问题

Binding WPF绑定问题,binding,Binding,我的班级结构如下: public class Person { public PersonInfo Details { get; set; } public string Name { get; set; } } public class PersonInfo { public string Designation { get; set; } } 我正在尝试绑定2个文本框,如下所示: Person person = new Person(); textBox1.Da

我的班级结构如下:

public class Person
{
    public PersonInfo Details { get; set; }
    public string Name { get; set; }
}

public class PersonInfo
{
    public string Designation { get; set; }
}
我正在尝试绑定2个文本框,如下所示:

Person person = new Person();

textBox1.DataContext = person;
textBox2.DataContext = person;

Binding textBox1Binding = new Binding()
{
   Mode = BindingMode.OneWayToSource,
   Path = new PropertyPath("Name"),
};

Binding textBox1Binding = new Binding()
{
   Mode = BindingMode.OneWayToSource,
   **Path = new PropertyPath("Details.Designation")**   << problem is here
};
Person-Person=新的Person();
textBox1.DataContext=person;
textBox2.DataContext=person;
Binding textBox1Binding=新绑定()
{
模式=BindingMode.OneWayToSource,
路径=新属性路径(“名称”),
};
Binding textBox1Binding=新绑定()
{
模式=BindingMode.OneWayToSource,

**Path=new PropertyPath(“Details.Designation”)***这花了一些时间,但我想我有一个解决方案。您的PersonInfo对象本人不存在。我将您的代码修改为以下内容,现在它对我有效

  public class Person
  {
    private PersonInfo pi;

    public Person()
    {
      pi = new PersonInfo();
    }

    public PersonInfo Details
    {
      get
      {
        return pi;
      }
      set
      {
        pi = value;
      }
    }
    public string Name { get; set; }
  }

  public class PersonInfo
  {
    public string Designation { get; set; }
  }
在某处:

  textBox1.DataContext = person;
  textBox2.DataContext = person;

  Binding textBox1Binding = new Binding()
  {
    Mode = BindingMode.OneWayToSource,
    Path = new PropertyPath("Name"),
  };
  textBox1.SetBinding(TextBox.TextProperty, textBox1Binding);

  Binding textBox2Binding = new Binding()
  {
    Mode = BindingMode.OneWayToSource,
    Path = new PropertyPath("Details.Designation"),
  };
  textBox2.SetBinding(TextBox.TextProperty, textBox2Binding);

您能否确保您的子对象“PersonInfo”(通过属性指定)在绑定之前存在?

这花了一些时间,但我想我有一个解决方案。您的PersonInfo对象本人不存在。我将您的代码修改为以下内容,现在它对我有效

  public class Person
  {
    private PersonInfo pi;

    public Person()
    {
      pi = new PersonInfo();
    }

    public PersonInfo Details
    {
      get
      {
        return pi;
      }
      set
      {
        pi = value;
      }
    }
    public string Name { get; set; }
  }

  public class PersonInfo
  {
    public string Designation { get; set; }
  }
在某处:

  textBox1.DataContext = person;
  textBox2.DataContext = person;

  Binding textBox1Binding = new Binding()
  {
    Mode = BindingMode.OneWayToSource,
    Path = new PropertyPath("Name"),
  };
  textBox1.SetBinding(TextBox.TextProperty, textBox1Binding);

  Binding textBox2Binding = new Binding()
  {
    Mode = BindingMode.OneWayToSource,
    Path = new PropertyPath("Details.Designation"),
  };
  textBox2.SetBinding(TextBox.TextProperty, textBox2Binding);
在绑定之前,能否确保子对象“PersonInfo”(通过属性指定)存在