如何在视图中拦截RoutedCommand的执行?(WPF/MVVM)

Tim*_*ter 7 wpf cursor routed-commands mvvm

在WPF/MVVM应用程序中,我试图找到一种代码有效的方法,将主视图光标设置Cursors.Wait为任何冗长的操作之前,并在完成后将其恢复为默认光标.

由于使用路由命令调用所有操作,我想找到一种拦截命令执行的方法,理想情况是通过创建包装内置路由命令实例的通用命令类,但我无法想象如何执行这个.

具体来说,该RoutedCommand.Execute方法不是虚拟的,所以我需要另一种机制来拦截它的调用.另外,我不确定泛型命令类的实例如何引用它必须设置游标的视图.

有什么建议吗?

谢谢,

蒂姆

Ste*_*ven 3

您可以以静态方式设置光标。效果是,当应用程序获得焦点时,而不是在某个控件上时,光标将处于“等待”状态。

代码,在冗长的操作开始时将成为 ViewModel 的一部分:

Mouse.OverrideCursor = Cursors.Wait;
Run Code Online (Sandbox Code Playgroud)

操作完成后,您必须像这样清除覆盖:

Move.OverrideCursor = null;
Run Code Online (Sandbox Code Playgroud)