我有一个类,它包含各种属性和相关对象列表。 我正在制作一个表单来输入/编辑类的实例。我将对象(类实例)的属性数据绑定到输入/编辑表单的控件。
除了我找不到将相关对象列表绑定到列表框(选择SelectionMode MultiExtended)的方法之外,一切正常。列表框控件应包含所有可能的值,并选择相关对象列表中的那些值。
假设我有一个“客户”类,其中包含相关对象“产品”(这将是此特定客户从我这里购买的产品列表) 当我在表单中编辑客户记录时,我需要列表框(或devexpress listboxcontrol)“产品”包含我可以提供的所有产品,并且仅选择客户购买的那些产品。
如何使用数据绑定完成此任务?
P.S。我找到了一个老话题,用多选择绑定到列表框是不可能的...它仍然不可能吗?也许你可以建议以不同的方式做到这一点?
答案 0 :(得分:1)
DevEx SelectedItems
的{{1}}属性是只读的,因此您无法将集合绑定到它。所以,简短的回答是不,你仍然无法在这种情况下使用数据绑定。您仍然可以绑定所有产品列表的数据以填充ListBoxControl
,但由于您使用的是多个选择,并且因为您无法对所选项目进行数据绑定,我建议不要使用它。
相反,只是对于这个列表框,我会完全没有数据绑定。例如,填充您的控件:
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());
然后,在需要保存时,清除Client对象中的Products集合,然后使用// "client" is type Client which contains a collection of selected Products
foreach (var product in client.Products)
{
var idx = listBoxControl1.FindStringExact(product.Description);
listBoxControl1.SetSelected(idx, true);
}
属性重新填充它。