将 Winforms ListBox 集合绑定到 List<object>
Bind Winforms ListBox collection to List<object>
我有一个 class 包含我的客户的详细信息。
class CustomerData : INotifyPropertyChanged
{
private string _Name;
public string Name
{
get
{ return _Name }
set
{
_Name = value;
OnPropertyChanged("Name");
}
}
// Lots of other properties configured.
}
我还有一个 CustomerData
值列表 List<CustomerData> MyData;
我目前 databinding
个人 CustomerData
反对 textboxes
以下面的方式工作正常。
this.NameTxtBox.DataBindings.Add("Text", MyCustomer, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
我正在努力寻找一种方法将列表 MyData
中的每个对象绑定到 ListBox
。
我想让 MyData 列表中的每个对象都显示在显示名称的列表框中。
我尝试将 DataSource
设置为 MyData
列表并将 DisplayMember
设置为 "Name" 但是当我将项目添加到 MyData
列表listbox
不更新。
关于如何完成的任何想法?
我发现 List<T>
将不允许在修改绑定列表时更新 ListBox。
为了让它工作,你需要使用 BindingList<T>
BindingList<CustomerData> MyData = new BindingList<CustomerData>();
MyListBox.DataSource = MyData;
MyListBox.DisplayMember = "Name";
MyData.Add(new CustomerData(){ Name = "Jimmy" } ); //<-- This causes the ListBox to update with the new entry Jimmy.
我有一个 class 包含我的客户的详细信息。
class CustomerData : INotifyPropertyChanged
{
private string _Name;
public string Name
{
get
{ return _Name }
set
{
_Name = value;
OnPropertyChanged("Name");
}
}
// Lots of other properties configured.
}
我还有一个 CustomerData
值列表 List<CustomerData> MyData;
我目前 databinding
个人 CustomerData
反对 textboxes
以下面的方式工作正常。
this.NameTxtBox.DataBindings.Add("Text", MyCustomer, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
我正在努力寻找一种方法将列表 MyData
中的每个对象绑定到 ListBox
。
我想让 MyData 列表中的每个对象都显示在显示名称的列表框中。
我尝试将 DataSource
设置为 MyData
列表并将 DisplayMember
设置为 "Name" 但是当我将项目添加到 MyData
列表listbox
不更新。
关于如何完成的任何想法?
我发现 List<T>
将不允许在修改绑定列表时更新 ListBox。
为了让它工作,你需要使用 BindingList<T>
BindingList<CustomerData> MyData = new BindingList<CustomerData>();
MyListBox.DataSource = MyData;
MyListBox.DisplayMember = "Name";
MyData.Add(new CustomerData(){ Name = "Jimmy" } ); //<-- This causes the ListBox to update with the new entry Jimmy.