2010-02-07 2 views
1

В моем приложении я генерирую CheckBoxes для каждой возможной категории (извлекаемой из базы данных), и пользователь может проверить любое число, которое применяется. Я называю флажки «cbCategory [ID]», где ID - это идентификатор этой категории в базе данных.C# WPF Databinding to Unkown Количество флажков

Мне нужно создать какой-то класс коллекции (как свойство моего класса объектов), чтобы сохранить идентификатор категории и логическое значение (отмечено или не отмечено).

Мой вопрос: какой будет лучший тип класса коллекции для использования, и как бы я связался с ним? Как выглядят XAML и Code для привязки?

Надеюсь, это объяснит это достаточно хорошо, заблаговременно за ответы!

ответ

4
  1. Определение класса держать название категории (string) и его проверили состояние (bool).
  2. Определите коллекцию типа ObservableCollection<T> где T - класс, который вы только что определили в (1).
  3. Создайте ItemsControl в XAML и свяжите его имущество ItemsSource с коллекцией (2).
  4. Определите DataTemplate в XAML, в котором вы показываете CheckBox и TextBlock, привяжите их к соответствующим свойствам объекта (1).
  5. Не забудьте установить ItemsControl.ItemTemplate в DataTemplate из (4).

Используя этот способ, вам не нужно создавать элементы управления из кода, то, что вам нужно создать, - это один объект для каждой категории (объект, определенный в (1)).

И как примечание, которое следует учитывать - всякий раз, когда вы создаете элементы управления вручную из кода, вы делаете это неправильно, и есть более простой способ использования привязки, стилизации и шаблонов (а иногда и более расширенных функций, таких как прикрепленные свойства, и т. д.)

+1

«Всякий раз, когда вы генерируете элементы управления вручную из кода - вы делаете это неправильно»: хотя я склонен согласиться с этим, это правда, только если вы используете шаблон, такой как MVVM ... Некоторые люди могут предпочитают использовать код-позади;) –

+1

Предпочитаете использовать код-код, предпочитая, чтобы ваше приложение находилось в реальном времени только до тех пор, пока вы помните, как вы его закодировали. –

+0

Спасибо, Aviad. Я довольно неопытен, когда дело доходит до программирования, тем более с ООП, поэтому это объяснение помогает. – Cam