WPF - 根据另一个文本框值更改文本框值[重复]

Posted

技术标签:

【中文标题】WPF - 根据另一个文本框值更改文本框值[重复]【英文标题】:WPF - Change Textbox value according to another Textbox value [duplicate] 【发布时间】:2013-07-24 00:08:04 【问题描述】:

好的。

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

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

例如,假设我有这个 DataContext:

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

只要我输入“Paul”,第二个 TextBox 的值就会更改为“30”;如果我输入“John”,第二个 TextBox 应该更改为“25”,依此类推。

提前致谢, 蒂亚戈

【问题讨论】:

【参考方案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 可写,因为您使用的是文本框而不是文本块。

希望对你有帮助。

【讨论】:

问题是,我为这个小例子使用了 3 层架构,如下所示:类层、业务逻辑层和数据访问层。每当我尝试使用'var person = Persons.FirstOrDefault(item => item.Name == _personName);'我收到关于不将一层隐式转换为另一层的错误。 由于没有代码,我不确定您的 Persons 类型是什么以及您选择绑定到 UI 的类型。可能您在 DataModel 和 Dto 中都有 Person 对象,并将它们混合在一个层中。 这是我的 Person.cs:Pastebin - Person.cs 您不应该将 SelectedPerson 放在 Person 类中。您可能有一个类,其中包含绑定到 UI 的数据的人员列表。您最好将 SelectedPerson 属性放在该类中。 谢谢,我会努力做到的。我没有在这个项目中使用 MVVM,也许我现在应该考虑一下。

以上是关于WPF - 根据另一个文本框值更改文本框值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在jquery中更改另一个文本框时动态设置一个文本框值

javascript:在用户键入或更改文本框值时忽略无效输入[重复]

根据组合框选择更改文本框值

如何根据文本框值过滤列表框值

根据文本框值javascript修改complete.ly选项

根据另一个文本框填充文本框值 - Ms Access