Какие-нибудь фреймворки MVVM, которые хорошо работают с RoutedCommand? - PullRequest
9 голосов
/ 21 ноября 2010

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 11 января 2011

с большим количеством исследовательского марафона в SO и других сайтах, не нашел подходящей среды для ИГРА с RoutedCommand.

, но один из WPF Disciple Джош Смит реализовал хорошее решение использования Routed Command с MVVM.

Вы можете проверить Используя RoutedCommands с ViewModel в WPF , который заявлен как чистый и легкий для использования RoutedCommands в архитектуре MVVM.

1 голос
/ 10 января 2011

Если я правильно помню, Саша Барбер что-то сделал в этом направлении, думаю, вы могли бы посмотреть здесь .

...