【发布时间】:2019-03-14 12:01:26
【问题描述】:
我正在开发一个使用 MVVM、KeyBinding 和 ICommand 的项目。
我在同一个窗口上有多个嵌套视图 (UserControls),其中许多使用相同的 KeyBinding "Ctrl+S" 来运行 SaveCommand。
与 View 关联的 ViewModel 有一个 IsSaveCommandAvailable 属性,可以判断 SaveCommand 在该 ViewModel 中是否可用。
在我的情况下,只有“根”视图必须能够通过按 Ctrl+S 来启动SaveCommand,嵌套的视图必须忽略按键并让它冒泡到根视图,确实如此所有保存的东西。
我用谷歌搜索了一个解决方案,只发现我可以使用ICommand.CanExecute返回false并避免运行KeyBinding。
但是这个解决方案不符合我的需求,因为如果我在子视图上按 Ctrl+S,它的 SaveCommandCanExecute 返回 false,并且按键丢失。
有没有办法在 KeyBinding 可以运行之前使按键冒泡?
【问题讨论】: