У меня есть окно, которое работает как дизайнер Visual Studio. Каждый документ имеет два вида:
- Исходный вид,
- Дизайнерский вид.
У меня есть панель инструментов, которая может выдавать разные команды. Кнопка на панели инструментов имеет строковое свойство CommandId, в котором хранится идентификатор команды, например:
- Вырезать, Копировать, Вставить;
- Вставить сетку,
- Автоформат
- ...
У меня возникают проблемы при разработке шаблона команды, в котором выполнение команды различается в зависимости от вида.
В качестве очевидного примера, Команда копирования скопирует выделенный текст в Вид источника , но скопирует выбранный элемент управления в Вид конструктора .
В настоящее время я сопоставляю строку commandId с объектом CopyCommand , но, поскольку выполнение команды отличается в зависимости от представления, я не уверен, как это должно быть реализовано .
Если каждое представление предоставляет список конкретной команды, которую он понимает (и, следовательно, имеет два CopyCommand подобно SourceCopyCommand и DesignCopyCommand , которые совместно используют одну и ту же команду ID)?
Или каждая команда должна быть уникальной, но представление имеет большую функцию отображения, которая меняет поведение в зависимости от идентификатора команды?