У меня есть программа управления задачами с полем «Срочность». Допустимые значения: Int16 в настоящее время сопоставлены с 1 (Высокий), 2 (Средний), 3 (Низкий), 4 (Нет) и 99 (Закрыт). Поле срочности используется для ранжирования задач, а также для изменения вида элементов в списке и подробном представлении.
Когда пользователь редактирует или добавляет новую задачу, он выбирает или просматривает срочность в ComboBox. Конвертер передает строки для замены Ints. Коллекция срочности настолько проста, что я не сделал ее таблицей в базе данных, вместо этого это ObservableCollection (Int16), который заполняется методом.
Поскольку один и тот же экран может использоваться для просмотра закрытой задачи, срочность «Закрыто» должна быть в ItemsSource, но я не хочу, чтобы пользователь мог ее выбрать. Для того, чтобы пользователь не мог выбрать этот элемент в ComboBox, но все равно мог видеть его, если элемент в базе данных имеет это значение, я должен ...
- Вручную отключите элемент в ComboBox в коде или Xaml (я сомневаюсь в этом)
- Измените коллекцию Urgency с Int16 на Объект с Свойством Selectable, к которому привязывается свойство isEnabled объекта ComboBoxItem.
- Сделайте, как в 2, но также разделите информацию о срочности в свою собственную таблицу в базе данных с внешним ключом в таблице Задачи
- Ничего из вышеперечисленного (я подозреваю, что это правильный ответ)
Я спрашиваю об этом, потому что это учебный проект (мой первый настоящий WPF и первый в истории проект MVVM). Я знаю, что редко существует один правильный способ что-то сделать, но я хочу убедиться, что я учусь разумным образом, поскольку гораздо труднее отучиться от вредных привычек
Спасибо
Mike