如何在仅前端(.xamlx)中检测任意按键按下触发返回命令
Page和Grid没有原生的anyKeyPressed事件,但可以通过已有的键盘事件结合行为实现你要的效果,全程无需修改后端代码。
核心思路
利用KeyDown或PreviewKeyDown事件替代你设想的anyKeyPressed:
KeyDown:冒泡事件,仅当控件(或其子控件)获得焦点时触发按键事件PreviewKeyDown:隧道事件,会优先捕获页面内所有按键操作,适合全局监听
方案1:Grid层级监听按键
需要给Grid设置Focusable="True",确保它能接收键盘输入:
<Grid Focusable="True"> <Grid.Behaviors> <behaviors:EventHandlerBehavior EventName="KeyDown"> <behaviors:InvokeCommandAction Command="{Binding NavigateBackCommand}" /> </behaviors:EventHandlerBehavior> </Grid.Behaviors> <!-- 你的Grid内容区域 --> </Grid>
方案2:Page层级全局监听按键
如果希望不管焦点在哪个控件上,只要按下任意键就触发命令,直接在Page上绑定PreviewKeyDown事件:
<Page> <Page.Behaviors> <behaviors:EventHandlerBehavior EventName="PreviewKeyDown"> <behaviors:InvokeCommandAction Command="{Binding NavigateBackCommand}" /> </behaviors:EventHandlerBehavior> </Page.Behaviors> <!-- 你的Page内容区域 --> </Page>
内容的提问来源于stack exchange,提问作者Philip
相关产品推荐
相关产品推荐

