从生产应用程序中,我们注意到我们的WPF按钮通过快速双击触发ICommand.Execute方法两次。WPF的命令在快速双击上触发两次
现在,在每个命令中,应用程序都会覆盖全屏幕微调器动画,从而阻止与应用程序的进一步交互。
This github回购包含问题的简约回购。需要注意的是:
- 时,按钮的命令触发时,“IsBusy”标志被设置为true
- 作为结果,BusyIndicator控件覆盖将显示
- 作为结果,该按钮不能再压直到后300毫秒
然而,特别是在较慢的计算机上,当快速双击(真快,如游戏,快即是),可两次开火命令没有BusyIndicator控件阻止第二个电话(这可以如果输出在o之后显示2个“点击”行,可以看到另一个)。
这对我来说是意想不到的行为,因为IsBusy标志立即在UI线程上设置为true。 第二次点击能够通过吗? 我会希望IsBusy绑定显示UI线程上的覆盖,阻止任何进一步的交互?
GitHub的样品还包括2个解决方法:
- 使用ICommand.CanExecute阻止使用PreviewMouseDown防止双击
我想了解执行处理