DataBind listBox 选定项到文本框

Posted

技术标签:

【中文标题】DataBind listBox 选定项到文本框【英文标题】:DataBind listBox selected item to textboxes 【发布时间】:2010-12-21 22:31:14 【问题描述】:

我将 ListBox 数据绑定到用户列表(集合):

    usersListBox.DataSource = null;
    usersListBox.DataSource = _users;
    usersListBox.DisplayMember = "Name";
    usersListBox.ValueMember = "Id";

现在我希望所选项目的属性显示在不同的文本框中,所以我进行了绑定:

nameTextBox.DataBindings.Add("Text", usersListBox.SelectedItem, "Name");
loginTextBox.DataBindings.Add("Text", usersListBox.SelectedItem, "Login");

当表单加载时,我可以看到所选项目的值出现在文本框中,但是当列表框中的所选项目发生更改时,文本框中的值仍然相同。我是否必须捕获列表框的 selectedItemChanged 并重复绑定文本框?或者我遗漏了一些东西,文本框中的值应该随着所选项目的变化而变化?

【问题讨论】:

【参考方案1】:

如果有人需要回答:您必须创建绑定源对象并为其分配列表框和文本框:

 usersBindingSource = new BindingSource();
 usersBindingSource.DataSource = _presenter.Users;

 usersListBox.DataSource = usersBindingSource;
 usersListBox.DisplayMember = "Name";
 usersListBox.ValueMember = "Id";

 nameTextBox.DataBindings.Add("Text", usersBindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
 loginTextBox.DataBindings.Add("Text", usersBindingSource, "Login", true, DataSourceUpdateMode.OnPropertyChanged);

【讨论】:

我只是想让您知道,经过数小时的新项目研究(这是旧项目中的问题),这两个都解决了。非常感谢您发布解决方案来帮助其他人,因为这绝对是将文本框数据绑定到 SelectedItem 的正确方法,但是基础数据源(即我们的案例中的数据上下文表(dlinq))。非常感谢。

以上是关于DataBind listBox 选定项到文本框的主要内容,如果未能解决你的问题,请参考以下文章

WPF:将 ListBox ContextMenu 的命令参数绑定到 ListBox 的选定项

WPF绑定第二个ListBox与第一个ListBox中的选定项目相关

WPF ListBox 值来自另一个选定的 ListBox 项,然后上下移动

加载 WPF 时在 ListBox 中设置选定项的样式

如何在运行时更改列表框中的选定项目文本?

c#中listbox选定指定项的事件