确定。
我有一个'Person'类,其中包含以下属性:PersonId,Name和Age。 到目前为止,我添加了3个不同的人并从List中设置DataContext。我的验证规则正常。
我想知道的是,当我在第一个TextBox中输入第二个人的名字时,我希望第二个TextBox显示这个人的年龄。
例如,假设我有这个DataContext:
只要输入'Paul',第二个TextBox就应该将其值改为'30';如果我输入'John',则第二个TextBox应该更改为'25',依此类推。
提前致谢, 蒂亚戈
答案 0 :(得分:1)
基本思想是通过Person属性连接Name和Age。在Name的setter中,您可以根据名称搜索人员,如果结果不为null,则将其分配给Person。在Person的setter中,设置Age并通知UI。代码就像:
private Person _selectedPerson;
public Person SelectedPerson
{
get { return _selectedPerson; }
set
{
if (value == null)
return;
_selectedPerson = value;
PersonAge = _selectedPerson.Age;
OnPropertyChanged("Person");
}
}
private string _personName;
public string PersonName
{
get { return _personName; }
set
{
_personName = value;
var person = Persons.FirstOrDefault(item => item.Name == _personName);
if (person != null)
SelectedPerson = person;
OnPropertyChanged("PersonName");
}
}
private int _personAge;
public int PersonAge
{
get { return _personAge; }
set
{
_personAge = value;
OnPropertyChanged("PersonAge");
}
}
在上面的代码中,Persons是绑定到ListBox的列表,PersonName绑定到name的文本框,PersonAge绑定到agebox的文本框。我在这里保持PersonAge可写,因为你使用的是文本框而不是文本块。
希望它可以提供帮助。