CheckedListBox.Items的绑定启用属性 - Winforms

时间:2011-02-22 20:49:08

标签: .net winforms data-binding .net-3.5

我对winforms编程相对较新,来自ASP.NET,我正在努力绑定诸如checklistbox.items中的“Enabled”字段之类的内容。

例如,我有一个:

class A
{
    public string Name {get;set;}
    public bool Enabled {get; set;}
}

然后我创建一个列表项A并绑定到checkedlistbox。

List<A> aList = new List<A>(
    new A{Name="Item1", Enabled=true}, 
    new A{Name="Item2", Enabled=false} );

CheckedListBox.DataSource = aList;
CheckedListBox.DisplayMember = "Name";

最后,如何使用“Enabled == false”创建项目以在checkedlistbox中显示为已禁用?

当然,我需要对Checked属性执行相同操作,但为了简单起见,我不会将其添加到示例中。

谢谢,

约翰

1 个答案:

答案 0 :(得分:1)

您无法使用WinForms CheckedListBox执行此类丰富的数据绑定。

您可以设置DataSource,然后设置DisplayMember和ValueMember属性,但是从那里开始,您必须使用代码完成剩下的工作(包括设置Enabled和Checked属性)

设置基本绑定,如下所示:

checkedListBox.DataSource = aList; 
checkedListBox.DisplayMember = "Name";
checkedListBox.ValueMember = "Name";

从那里你需要迭代数据源,根据需要设置单个项属性。

你可以做的一件事(我没试过但它应该工作)是CheckedListBox的子类,但是新类中有一些自定义绑定代码。

这可能会给你一个更优雅的解决方案 - 从后面的代码中删除代码,虽然根据你的情况可能不值得努力。