2011-02-26 138 views
0

我有一类结构如下:WPF绑定问题

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 
}; 

如何绑定 “Details.Designation” 到TextBox2中?

任何帮助,将不胜感激。

回答

4

这花了一些时间,但我想我有一个解决方案。 Person中的PersonInfo-Object不存在。我修改了代码以下,现在它为我工作

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”(通过属性指定)结合之前存在?