将 Winforms ListBox 集合绑定到 List<object>

Cat*_*lMF 4 c# data-binding listbox winforms

我有一个包含客户详细信息的课程。

class CustomerData : INotifyPropertyChanged
{
    private string _Name;
    public string Name 
    { 
        get 
        { return _Name } 
        set 
        {
            _Name = value;
            OnPropertyChanged("Name");
        }
    }

   // Lots of other properties configured.
}
Run Code Online (Sandbox Code Playgroud)

我还有一个CustomerData值列表List<CustomerData> MyData;

我目前databinding个人CustomerData反对textboxes以下工作正常的方式。

this.NameTxtBox.DataBindings.Add("Text", MyCustomer, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
Run Code Online (Sandbox Code Playgroud)

我正在努力寻找一种将列表中的每个对象绑定MyDataListBox.

我希望将 MyData 列表中的每个对象显示在显示名称的 ListBox 中。

我尝试将其设置DataSource为等于MyData列表并将其设置DisplayMember为“名称”,但是当我将项目添加到MyData列表中时,它listbox不会更新。

关于如何做到这一点有什么想法吗?

Cat*_*lMF 5

我发现List<T>修改绑定列表时不允许更新列表框。为了让它工作,你需要使用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.
Run Code Online (Sandbox Code Playgroud)