【发布时间】:2014-01-15 14:21:28
【问题描述】:
我正在尝试将 .NET 4.5 中的 C# Winforms 中的 ListBox 控件绑定到具有我希望用于 DisplayMember 的嵌套属性的对象列表。它有点工作,除了当我将 DisplayMember 设置为嵌套属性时,即使列表中绑定了两个项目,列表框也只显示一个项目。如果我注释掉设置 DisplayMember 的代码,listBox 会显示两个项目。这是框架中的错误吗?如果可以的话,我想避免添加另一个属性或覆盖 ToString(),因为我正在实现 MVP,并且希望将我的视图逻辑与我的视图隔离。下面是一些示例代码。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var bindingSource = new BindingSource();
var listOfMyItems = new BindingList<MyItem>
{
new MyItem { Number = 1, NestedItem = new NestedItem { Name = "name1", Note = "note1" } },
new MyItem { Number = 2, NestedItem = new NestedItem { Name = "name2", Note = "note2" } },
};
bindingSource.DataSource = listOfMyItems;
listBox1.DataSource = bindingSource;
//comment out the line below and the listBox1 will show 2 items
listBox1.DisplayMember = "NestedItem.Name";
}
}
public class NestedItem
{
public string Name { get; set; }
public string Note { get; set; }
}
public class MyItem
{
public NestedItem NestedItem { get; set; }
public int Number { get; set; }
}
【问题讨论】:
标签: c# winforms data-binding listbox bindingsource