【发布时间】:2017-11-16 22:11:05
【问题描述】:
目前我正在设置我的组合框数据源:
comboBox1.DataSource = _team;
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "ID";
Team 是 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;
}
}
然后我试图这样记录它:
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 正确更改。
我想知道在数据绑定组合框方面我错过了什么
【问题讨论】:
-
你能显示你的类“Person”的代码吗?
标签: c# .net winforms data-binding combobox