Всем привет! Как и обещал в предыдущей статье, рассказываю, как создать список элементов, среди которых можно отметить галочкой нужные, и сделать с ними определённые действия.
Введение
Одно из преимуществ WPF — удобная реализация разделения пользовательского интерфейса и бизнес-логики. Благодаря этому их можно разрабатывать независимо, и их разработчики могут даже ничего не знать друг о друге, и всё будет работать. Сегодня мы воспользуемся этим преимуществом, оставив ViewModel абсолютно той же, какая была в прошлой статье, а View сделаем новый.
Задача
Нам нужно создать окно со списком уровней. В окне можно отметить галочками нужные нам уровни. По нажатию клавишу в выбранные уровни запишется значение в параметр, а в невыбранные — пустая строка.
Решение
У нас есть полностью готовая ViewModel, дескрипторы для уровней, и команда для запуска. Осталось только сделать другое окно. Для этого я использую класс ListView, и переопределю отображение элементов этого списка.
Вообще, переопределять элементы можно как угодно. Можно добавлять картинки, линии, цвета, другие списки и т.д. — на что хватит вашей фантазии.
Выглядит это так:
На строках 19-26 мы переопределили шаблон, просто добавив туда CheckBox и настроив привязки.
Благодаря тому, что на 8 строке мы задали контекст данных в виде нашей ViewModel, VisualStudio видит нужные свойства и подсказывает нам при выборе привязки:
Причём подсказывает она, не предлагая нам свойства основной ViewModel, а именно свойства класса LevelDescriptor, потому что ItemSource у нас задан как коллекция LevelDescriptor.
Результат
Получилось такое окно. Теперь у нас нет множественного выбора элементов в списке, но есть CheckBox, заменяющий его. Результат выполнения команды такой же, как и в прошлый раз.
Итоговый код в моём репозитории на GitHub.
На этом всё. Не забывайте подписываться на мой телеграм-канал о Revit API и до новых встреч!