【发布时间】:2021-11-09 20:21:43
【问题描述】:
我有一个带有ComboBox DisplayBox 的窗体。在我的 ViewModel 中,我现在有一个要绑定到 DisplayBox 的属性 BindingList<MyObject> ObjectBindingList。
当我加载表单时,DisplayBox 不显示任何文本。
属性DataSource在数据下载后检入调试模式时设置并保存MyObjects的列表。
属性项的计数始终为零。
我的代码如下:
在启动时,我将表单类中的数据绑定设置为仍然为空的 List ObjectBindingList。
displayBox.DataSource = ObjectBindingList;
DisplayMember 和 ValueMember 在 GUI 设计器的组合框属性中设置。controller 异步下载一些数据(MyDataObjects)异步。然后通过添加将ViewModel中的BindingList<MyObject> ObjectBindingList设置为下载的Objects。
【问题讨论】:
-
Debug。在上面显示的行上设置断点并检查集合
ObjectBindingList。里面有物品吗?注意:如果您使用的是BindingSource对象,则将绑定列表分配给绑定源的DataSource,而不是直接分配给组合框。 -
ObjectBindingList是List<MyObject>还是BindingList<MyObject>?你提到了两者。 -- 在将项目添加到List(?)后,您是否重置了绑定? -
@Jimi 是一个BindingList
,绑定列表被清空然后用ObjectBindingList.Add(downloadData[i].MyObject)函数填充。 -
@OlivierJacot-Descombes 不,因为当我绑定数据时下载尚未发生,所以 ObjectBindingList 已设置但没有项目( items.count = 0)。我想在下载完成后设置实际数据并相应地更新 ComboBox。
-
如何添加数据?
标签: c# visual-studio winforms combobox datasource