-3

好的。

我有一个具有以下属性的“Person”类:PersonId、Name 和 Age。到目前为止,我已经添加了 3 个不同的人并从列表中设置了 DataContext。我的验证规则工作正常。

我想知道的是,当我在第一个 TextBox 中输入第二个人的名字时,我希望第二个 TextBox 显示这个人的年龄。

例如,假设我有这个 DataContext:

  • 约翰,25 岁
  • 保罗,30 岁
  • 乔治,28 岁

一旦我输入“Paul”,第二个 TextBox 应该将其值更改为“30”;如果我键入“John”,则第二个 TextBox 应更改为“25”,依此类推。

提前致谢, 蒂亚戈

4

1 回答 1

1

基本思想是通过 Person 属性连接 Name 和 Age。在 Name 的 setter 中,根据姓名搜索 person,如果结果不为 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 绑定到 age 文本框。我在这里保持 PersonAge 可写,因为您使用的是文本框而不是文本块。

希望它可以提供帮助。

于 2013-07-24T13:44:31.323 回答