Программирование в вопросах и ответах
Придумал такую схему. Создал класс public class MyCommand : ICommand, ICollection То есть каждая команда включает еще вложенные команды (вложенные меню)В классе окна добавляю свойствоpublic MyCommand Menu { get; set; } В дизайнере делаю так
Разделитель — это часть представления, а не вью-модели. Идея делать маппинг один-к-одному между абстрактными командами и элементами управления во всём приложении — порочна. Подобный подход может использоваться в отдельных случаях, например, при генерации списка недавно открытых файлов в меню или предоставлении плагину абстрактного интерфейса для управления представлением (и то я бы задумался об альтернативах).Запихнуть разделитель в список можно. Всего-то нужно сделать иерархию классов ("пункт меню", "пункт меню-разделитель", "пункт меню-команда"), присыпать шаблончиками и биндингами... Но хорошо задумайтесь: а правильно ли это? Если вы пойдёте по пути маппинга один-к-одному между элементами управления и вью-моделями, то вы превратите MVVM в фарс: у вас в слое вью-моделей появится упрощённая проекция представления, и представление станет полностью управляться из слоя вью-моделей. Сама вью-модель превратится в помесь контроллера и презентера. Это уже не MVVM.Короче, не надо так делать.
Комментариев нет:
Отправить комментарий