2012-06-27 41 views
2

如何将我的对象集合绑定到CheckedListBox项目与IsChecked属性?CheckedListBox WinForms绑定

这里是我的对象:

public class Person 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public bool IsChecked {get;set;} 
} 

public class EditorModel 
{ 
    public BindingList<Person> People {get;set;} 
} 

这些对象都实现INotifyPropertyChanged的也。

我可以做这样的结合:

checkedListBox.DataSource = editorViewModel.People; 
checkedListBox.ValueMember = "Id"; 
checkedListBox.DisplayMember = "Name"; 

我如何可以将绑定在第三个属性器isChecked?我试图谷歌它,但我还没有找到任何解决方案。

+0

我不认为'Person'类的'IsChecked'成员命名得非常好。 'Id'和'Name'本身是有意义的,但没有任何更多信息的'IsChecked'没有'CheckedListBox'的上下文是没有意义的。此外,我不认为你可以直接绑定它考虑到检查状态似乎主要是为了创建列表中的项目的子集迭代,通过'CheckedItemsCollection'这里的东西:http://msdn.microsoft .COM/EN-US /库/ system.windows.forms.checkedlistbox.aspx。 – JAB

+0

(尽管如此,您仍可以利用[ItemCheck'事件](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.checkedlistbox.itemcheck.aspx)手动设置属性。 ) – JAB

+0

这对我来说很合理。我将这些记录存储在数据库中,并且我不希望在保存对象之前在代码中手动设置此属性。如果这是不可能的,我会通过DataGridView控件来做到这一点。谢谢。 –

回答

3

将数据源绑定到CheckedListBox的所有解决方案都不是很优雅。改为使用带有复选框列的DataGridView。