Winforms:如何使用数据绑定绑定CheckedListBox的Checkbox项

Fai*_*Dev 16 c# data-binding winforms

我在一个表单中有一个databinded checkedlistbox,我想知道是否甚至可以使用对象的某个属性对每个列表框项的复选框进行数据绑定.

在此先感谢您的任何帮助:)

编辑:也许我的问题被误解了.

我想知道是否可以对CheckedListBox的每个项目的复选框进行数据绑定.我知道如何数据绑定到源以及如何通过迭代itmes以编程方式更改条目.我不知道的是,是否有可能有一个实现INotifyPropertyChanged的类,以便当"CheckedState"属性更改CheckedListBox更新自身时.

Ram*_*eef 32

根据Samich的回答,这是一个完整的例子,绑定源是一个 Object

private void Form1_Load(object sender, EventArgs e)
        {
            List<randomClass> lst = new List<randomClass>();

            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());
            lst.Add(new randomClass());

            ((ListBox)this.checkedListBox1).DataSource = lst;
            ((ListBox)this.checkedListBox1).DisplayMember = "Name";
            ((ListBox)this.checkedListBox1).ValueMember = "IsChecked";


            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                randomClass obj = (randomClass)checkedListBox1.Items[i];
                checkedListBox1.SetItemChecked(i, obj.IsChecked);
            }
        }
    }

    public class randomClass
    {
        public bool IsChecked { get; set; }
        public string Name { get; set; }
        public randomClass()
        {
            this.IsChecked = true;
            Name = "name1";
        }
    }
Run Code Online (Sandbox Code Playgroud)

randomClass 用于演示目的

  • 当然这不是__real双向数据绑定. (7认同)
  • 我已经这样做了.我来自WPF,我曾经将所有内容绑定到属性,我似乎无法添加绑定到checkListBox."isChecked"属性.我知道该属性不存在所以我们怎么能绑定它?我只是想确保没有隐藏的技巧使我们能够做到这一点. (2认同)

Sam*_*ich 7

你可以在这里找到答案:在CheckBoxList中使用数据源

var checkBoxList = (ListBox)MyCheckBoxList;
checkBoxList.DataSource = dataSource;
checkBoxList.DisplayMember = "name";
checkBoxList.ValueMember = "enabled";
Run Code Online (Sandbox Code Playgroud)

确保它ValueMember是类型bool.