【发布时间】:2014-03-22 23:53:23
【问题描述】:
这可能是一个重复的问题,但我无法找到一个好的答案。 Binding WinForms ListBox to object properties 之类的所有答案都不适用于我的 WinForm。我会解释的。
我有一份在ListBox 中显示的公司列表。我希望当 SelectedItem 发生变化时,它会更新我模型上的属性。这样我就可以读取公司属性。
// the classes
public class Firm
{
public string Name { get; set; }
public int Id { get; set; }
// more properties ...
}
public class MyModel : INotifyPropertyChanged
{
private Firm _firm = new Firm();
public Firm Firm
{
get { return _firm; }
set
{
if (Equals(value, _firm)) return;
_firm = value;
OnPropertyChanged();
}
}
// more properties and OnPropertyChanged() ...
}
// the form
private MyModel Model;
public void MyForm(List<Firm> firms)
{
lstFirm.DataBindings.Add("SelectedItem", Model, "Firm",
true, DataSourceUpdateMode.OnPropertyChanged);
lstFirm.DisplayMember = "Name";
lstFirm.ValueMember = "Id";
lstFirm.DataSource = firms;
}
public void lstFirm_SelectedIndexChanged(object sender, EventArgs e)
{
// Do something with Model.Firm
}
问题是Model.Firm null 是。有人知道我需要做什么才能在ListBox 和Model 之间进行数据绑定吗?我在我的 WinForm 上绑定了其他东西(例如 TextBoxes 到 String 属性),这些都很好用。
【问题讨论】:
标签: c# winforms data-binding listbox selecteditem