wpf - 如何在 View 中拦截 RoutedCommand 的执行? (WPF/MVVM)

标签 wpf mvvm cursor routed-commands

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

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

具体来说,RoutedCommand.Execute方法不是虚拟的,所以我需要另一种机制来拦截它的调用。另外,我不确定通用命令类的实例如何引用它必须为其设置光标的 View 。

请问有什么建议吗?

谢谢,

蒂姆

最佳答案

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

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

Mouse.OverrideCursor = Cursors.Wait;

操作完成后,您必须像这样清除覆盖:
Move.OverrideCursor = null;

关于wpf - 如何在 View 中拦截 RoutedCommand 的执行? (WPF/MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193907/

相关文章:

wpf - 在 Model V/s ViewModel 中使用 IDataErrorInfo

wpf - 如何将 DataRow 绑定(bind)到 TextBlock?

c# - 选项卡控件默认选择第一个选项卡

c# - 在 MVVM WPF 应用程序中打开新窗口

android - 从图库中选取图像并设置为 imageview

jquery - 对于具有 CSS 定义的光标的 div,如果在该 div 隐藏时鼠标不移动,IE 不会自动重置光标

wpf - Microsoft.Build.BuildEngine.Engine 在构建 WPF 应用程序时抛出错误

c# - EF4.0 中的延迟加载正在卡住 UI

WPF MVVM Light - 关于 View 通信

java - SQLite 查询 - 一旦找到特定项目就停止从数据库返回行