Как перехватить выполнение RoutedCommand в представлении?(WPF / MVVM) - PullRequest
7 голосов
/ 07 июля 2010

В приложении WPF / MVVM я пытаюсь найти эффективный для кода способ установки курсора основного вида на Cursors.Wait перед любой продолжительной операцией и восстановления его курсором по умолчанию после завершения.

Поскольку все операции вызываются с помощью перенаправленных команд, я хотел бы найти способ перехвата выполнения команд, в идеале путем создания универсального класса команд, который оборачивает экземпляр встроенной перенаправленной команды, но я не могу представить, какчтобы сделать это.

В частности, метод RoutedCommand.Execute не является виртуальным, поэтому мне нужен другой механизм для перехвата его вызовов.Кроме того, я не уверен, как экземпляр общего командного класса будет ссылаться на представление, для которого он должен установить курсор.

Любой совет, пожалуйста?

Спасибо,

Тим

1 Ответ

3 голосов
/ 12 июля 2010

Вы можете установить курсор в статической манере.В результате курсор будет «Ждать», пока приложение находится в фокусе, а не когда оно находится над определенным элементом управления.

Код, который будет частью ViewModel в начале длительной операции:

Mouse.OverrideCursor = Cursors.Wait;

После завершения операции вы должны очистить переопределение следующим образом:

Move.OverrideCursor = null;
...