juh*_*arr 6 c# wpf keyboard-shortcuts
我有一个WPF应用程序,我已经定义了使用键手势Ctrl+ ←和Ctrl+的自定义命令→.我的窗口有a TextBox和a ScrollViewer,当TextBox有焦点时Ctrl+ ←和Ctrl+ →将光标移动到下一个或上一个单词的开头,这很好.
但是在ScrollViewer它上面使水平滚动移动就像我按下了←或者→.允许Ctrl+ ←和Ctrl+ →事件从我ScrollViewer到Command定义的窗口冒泡的最简单方法是什么?
所以我通过以下方式完成了这项工作
public class MyScrollViewer : ScrollViewer
{
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.Control)
{
if (e.Key == Key.Left || e.Key == Key.Right)
return;
}
base.OnKeyDown(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为诀窍是要了解事件从顶部开始并且正在向下运行.然后在回来的路上,每个"层"检查Handled布尔值,如果它没有设置为true,它将确定它是否会执行某些操作并设置它.我需要为我的快捷方式短路这种行为,以便Handled在返回Window级别时仍然是假的.
| 归档时间: |
|
| 查看次数: |
3072 次 |
| 最近记录: |