В приложении WPF/MVVM я пытаюсь найти эффективный для кода способ установить курсор основного вида на Cursors.Wait
перед любой длительной операцией и восстановить его по умолчанию после завершения.Как перехватить выполнение RoutedCommand в представлении? (WPF/MVVM)
Поскольку все операции вызываются с помощью маршрутизируемых команд, я хотел бы найти способ перехвата выполнения команды, в идеале, создав общий командный класс, который обертывает экземпляр встроенной маршрутизируемой команды, но я не могу визуализируйте, как это сделать.
В частности, метод RoutedCommand.Execute
не является виртуальным, поэтому мне нужен другой механизм для перехвата его вызовов. Кроме того, я не уверен, как экземпляр обобщенного командного класса ссылается на представление, для которого он должен установить курсор.
Любые советы, пожалуйста?
Спасибо,
Tim
Там вполне может быть причиной того, что вы хотите сделать это, что звучит несколько сложно, но есть ли причина, по которой вы не можете просто создать свойство CurrentCursor в своей модели ViewModel и привязать курсор в своих представлениях к этому свойству? –
@Wonko. Спасибо - это хороший вопрос, и я согласен, что это похоже на самый MVVM-совместимый подход. Однако это означает, что мне придется применить одно и то же изменение кода из двух строк ко многим методам ViewModel, тогда как я надеялся централизовать код управления курсором. Второе осложнение состоит в том, что в моем представлении содержатся некоторые элементы управления, которые принимают маршрутизируемые команды. Как применить ту же логику к их операциям, поскольку они не являются частью ViewModel? –