目前我設置我的組合框的數據源這樣:數據綁定組合框的SelectedValue
comboBox1.DataSource = _team;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ID";
團隊的類型是ListItemModel的泛型列表,它看起來像:
public class ListItemModel
{
private string _name;
private short _id;
public string Name
{
get
{
return this._name;
}
}
public short ID
{
get
{
return this._id;
}
}
public ListItemModel(string name, short id)
{
this._name = name;
this._id = id;
}
}
我再試圖databing它作爲例如:
comboBox1.DataBindings.Add("SelectedValue", _person.Person, "TeamId", true, DataSourceUpdateMode.OnPropertyChanged);
我的數據源(模型)設置:
public class PersonViewModel : INotifyPropertyChanged
{
public Person Person { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
var handler = PropertyChanged;
if (handler != null) handler(this, e);
}
}
我能夠正確填充組合框,OnPropertyChanged事件實際上正常工作,因爲我可以看到正確更改的數據。
的問題是雙重的:
1)初始加載/設置了組合框的SelectedValue不設置,即使我已經數據綁定它。 2)如果我改變組合框中的選擇,然後失去焦點,它不保留選定的值,只顯示沒有選中的內容。 OnPropertyChanged正在工作,因爲我可以看到TeamId正確更改。
我想知道什麼我已經錯過了,當涉及到數據綁定組合框
你可以顯示你的班級「人」的代碼? – Bahrom