C# 绑定到Winforms Listbox或DevExpress ListBoxControl(SelectionMode=MultiExtended)

C# 绑定到Winforms Listbox或DevExpress ListBoxControl(SelectionMode=MultiExtended),c#,winforms,data-binding,listbox,devexpress,C#,Winforms,Data Binding,Listbox,Devexpress,我有一个类,它包含各种属性和相关对象的列表。 我正在制作一个表单来输入/编辑类的实例。我正在将对象(类实例)的属性数据绑定到输入/编辑表单的控件 一切正常,只是我找不到将相关对象列表绑定到列表框的方法(选择SelectionMode MultiExtended)。Listbox控件应包含所有可能的值,并选择相关对象列表中的那些值 例如 假设我有一个类“Client”,它有相关的对象“Products”(这是一个特定客户从我这里购买的产品列表) 当我在表单中编辑客户记录时,我需要listbox(或

我有一个类,它包含各种属性和相关对象的列表。 我正在制作一个表单来输入/编辑类的实例。我正在将对象(类实例)的属性数据绑定到输入/编辑表单的控件

一切正常,只是我找不到将相关对象列表绑定到列表框的方法(选择SelectionMode MultiExtended)。Listbox控件应包含所有可能的值,并选择相关对象列表中的那些值

例如 假设我有一个类“Client”,它有相关的对象“Products”(这是一个特定客户从我这里购买的产品列表) 当我在表单中编辑客户记录时,我需要listbox(或devexpress listboxcontrol)“Products”包含我可以提供的所有产品,并且只选择该客户正在购买的产品

如何使用数据绑定完成此任务

另外,我发现了一个老话题,即不可能绑定到具有多个选择的列表框。。。还不可能吗??也许你可以建议换一种方式做


DevEx
ListBoxControl
SelectedItems
属性是只读的,因此您无法将收藏绑定到它。因此,简短的回答是:不,在这种情况下仍然不能使用数据绑定。您仍然可以对所有产品的列表进行数据绑定,以填充
ListBoxControl
,但这是因为您正在使用多个选择,并且由于您无法对所选项目进行数据绑定,我建议您不要这样做

相反,对于这个列表框,我完全不需要数据绑定。例如,要填充控件,请执行以下操作:

// populate the listbox with a list of all Products
// allProducts is an IEnumerable<Product> where Product has a Description property
listBoxControl1.Items.AddRange(allProducts.Select(x => x.Description).ToArray());

然后,当需要保存时,清除客户端对象中的Products集合,然后使用
ListBoxControl。SelectedItems
属性重新填充。DevEx
ListBoxControl
SelectedItems
属性为只读,因此无法将集合绑定到它。因此,简短的回答是:不,在这种情况下仍然不能使用数据绑定。您仍然可以对所有产品的列表进行数据绑定,以填充
ListBoxControl
,但这是因为您正在使用多个选择,并且由于您无法对所选项目进行数据绑定,我建议您不要这样做

相反,对于这个列表框,我完全不需要数据绑定。例如,要填充控件,请执行以下操作:

// populate the listbox with a list of all Products
// allProducts is an IEnumerable<Product> where Product has a Description property
listBoxControl1.Items.AddRange(allProducts.Select(x => x.Description).ToArray());
然后,当需要保存时,清除客户端对象中的Products集合,然后使用
ListBoxControl。选择EdItems
属性重新填充它