Любые инфраструктуры MVVM, которые хорошо работают с RoutedCommand?

RoutedCommand и RoutedUICommand имеют много полезного для них. Есть встроенная поддержка текста и жестов клавиатуры. Вы можете привязать коллекцию RoutedUICommands к ItemsSource меню, и он автоматически создаст и привяжет элементы меню для вас. Некоторые команды (Вырезать, Копировать, Paste) автоматически поддерживаются готовыми элементами управления.

Однако всякий раз, когда я использую MVVM, я обнаруживал, что маршрутизированные команды плохо подходят из-за повторяющегося шаблонного XAML и кода, для которого я должен писать каждый. Когда я выполняю MVVM, я обычно использую RelayCommand вместо перенаправленных команд. Иногда это адекватный обходной путь, но у него есть недостатки - например, ключевые жесты становятся намного более сложными .

Но после просмотра Роба Эйзенберга «Создайте свой собственный MVVM Framework» сеанс, меня больше не устраивают команды реле и их недостатки. Единственной проблемой с перенаправленными командами был повторяющийся шаблонный код, и как только вы включите этот повторяющийся код в структуру и примените соглашения, Кажется, больше нет причин не использовать маршрутизированные команды в MVVM.

Технически, похоже, это не будет сложно. Фреймворку нужно просто привязаться к событиям представления CommandManager.CanExecute и Выполнено , а также применять соглашения для поиска методов и свойств в ViewModel - например, когда команда Cut выполняется, найдите метод ExecuteCut (и свойство CanExecuteCut) в ViewModel. Я мог бы создать свой собственный фреймворк MVVM, который упростил бы это.

Но мой вопрос: существуют ли уже фреймворки MVVM, которые работают с RoutedCommand? Единственный фреймворк MVVM, с которым я хорошо знаком, - это Caliburn .Micro, и в настоящее время он не поддерживает маршрутизированные команды таким образом (что меня удивляет, поскольку он поддерживает свой собственный вид пузырящегося действия).

9
задан Community 23 May 2017 в 11:47
поделиться