Держу пари, это было в течение ответил много раз, но ...WPF - обрабатывать ApplicationCommand в ViewModel
Для простой ситуации, когда кнопка на UserControl имеет его свойство команды установлено нечто вроде Find (ApplicationCommands .Find), как бы ViewModel обрабатывал эту команду? Обычно я вижу обработчики команд, подключенные с помощью CommandBinding, которые добавляются в коллекцию CommandBindings на UIElement, но моя ViewModel не выводится из UIElement (если?). Сами команды не выставляют события для уведомления, когда они были выполнены, и где я должен подключиться к этой информации?
EDIT: Я бы хотел использовать WPF для решения проблемы, если это возможно. Я знаю, что для этого есть много доступных фреймворков, но хотелось бы, чтобы код был прост.
EDIT2: Включая пример кода.
<UserControl>
<UserControl.DataContext>
<local:MyViewModel/>
</UserControl.DataContext>
<Button Command="Find"/>
</UserControl>
Где:
class MyViewModel
{
// Handle commands from the view here.
}
Я мог бы добавить CommandBinding к UserControl, который будет заниматься вопросами Executed, а затем вызвать гипотетический метод поиска в MyViewModel, который делает фактическую работу, но это лишний и ненужный код. Я бы предпочел, чтобы сам ViewModel обрабатывал команду «Найти». Одно из возможных решений заключалось бы в том, чтобы MyViewModel выводился из UIElement, но это кажется интуитивным.
Я бы предпочел свободное соединение, поэтому я ищу ответ, который показывает, как обрабатывать команду в отдельном классе, отличном от UserControl. –
Вы хотите обрабатывать 'ApplicationCommands.Find' одинаково для всех источников? – Vlad
Добавлен некоторый код, чтобы уточнить, где я хочу обработать выполнение команды - я хотел бы обрабатывать команды в ViewModel, а не сам UserControl в соответствии с общей философией MVVM. –