這可能是一個重複的問題,但我無法找到一個好的答案。所有的答案如Binding WinForms ListBox to object properties都不適用於我的WinForm。我會解釋。綁定ListBox.SelectedItem屬性
我有一個公司名單,我在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
屬性)和那些很好地工作。
private firm _firm = new Firm();也是一個有效的解決方案 – Schuere
我已經向我的構造函數添加了一個默認公司,並且我修改了這些設置器。 (默認的Resharper實現,沒有考慮Equals vs comparer。)但是,allas,沒有運氣。 –