1

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

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

例如

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

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

PS我发现了一个老话题,无法通过多选绑定到列表框......仍然不可能吗?也许您可以建议以不同的方式进行操作?

多选WinForms列表框上的两种方式绑定?

4

1 回答 1

1

SelectedItemsDevEx的属性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" 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);
}

然后,当需要保存时,清除 Client 对象中的 Products 集合,然后使用该ListBoxControl.SelectedItems属性重新填充它。

于 2013-08-24T13:54:46.397 回答