我有一个WinForms CheckedListBox
,我绑定到一个ReadOnlyObservableCollection
,其中包含数据模型上的自定义对象列表,但是当我将支持集合更新到ReadOnlyObservableCollection
列表时框不会更新。
我已经验证集合的NotifyPropertyChanged
和NotifyCollectionChanged
属性是否正确触发,以及绑定至少在某种程度上有效,因为ListBox
确实显示了首次应用绑定时的预期选择。
我尝试使用BindingList
使用常规ReadOnlyObservableCollection
包裹ObservableCollection
,使用ReadOnlyObservableCollection
扩展BindingSource.Add
以将属性更改为事件公开在DataSource
属性上,以及直接设置DataSource
属性。
在这一点上,我完全不确定为什么这不起作用。我真的很想让这个绑定工作,因为每次有关集合的任何变化都会手动修改Items对象。
形式:
Form_Load()
{
SetupCheckListBindings();
}
SetupCheckListBindings()
{
CodeList.DataBindings.Add("DataSource", DataModel, "Codes") //List only changes programmatically
}
数据模型:
public ReadOnlyObservableCollection<Code> Codes { get; set; }
private ObservableCollection<Code> CodesInternal { get; set; }
public Model()
{
CodesInternal = new ObservableCollection<Code>();
Codes = new ReadOnlyObservableCollection<Code>(Codes);
}
public AddCode()
{
CodesInteranl.Add(new Code()); //Doesn't update
}