Свойство привязки включено из CheckedListBox.Items - Winforms - PullRequest
3 голосов
/ 22 февраля 2011

Я относительно новичок в программировании winforms, пришедший из ASP.NET, и я изо всех сил пытаюсь связать такие вещи, как поле «Включено» из checklistbox.items.

Например, у меня есть:

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

Затем я создаю элементы списка A и связываюсь с флажком списка проверок.

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» отображались как отключенные вchecklistbox?

Конечно, мне нужно сделать то же самое со свойством Checked, но для простоты я не добавляю его в пример.

Спасибо,

John

1 Ответ

1 голос
/ 23 февраля 2011

Вы не можете выполнить такое расширенное связывание данных с помощью WinForms CheckedListBox.

Вы можете установить DataSource, а затем свойства DisplayMember и ValueMember, но с этого момента вам придется делать все остальное с кодом (включая настройкусвойства Enabled и Checked)

Установите базовую привязку, как показано ниже:

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

Оттуда вам нужно будет перебрать источник данных, задав необходимые свойства отдельных элементов.

Одна вещь, которую вы могли бы сделать (я не пробовал это, но она должна работать), это подкласс CheckedListBox и некоторый пользовательский код привязки в новом классе.

Это может дать вамболее элегантное решение - удаление кода из кода позади, хотя в зависимости от вашей ситуации это может не стоить усилий.

...