加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使滚动查看器不在WPF中捕获控制权和控制权

发布时间:2020-12-15 04:21:02 所属栏目:百科 来源:网络整理
导读:我有一个 WPF应用程序,我已经定义了使用按键手势Ctrl←和Ctrl→的自定义命令.我的窗口有一个TextBox和一个ScrollViewer,当TextBox有焦点时Ctrl←和Ctrl→将光标移动到下一个或上一个单词的开头,这很好. 但是在ScrollViewer上,它使水平滚动移动,好像我只按了
我有一个 WPF应用程序,我已经定义了使用按键手势Ctrl←和Ctrl→的自定义命令.我的窗口有一个TextBox和一个ScrollViewer,当TextBox有焦点时Ctrl←和Ctrl→将光标移动到下一个或上一个单词的开头,这很好.

但是在ScrollViewer上,它使水平滚动移动,好像我只按了←或→.允许Ctrl←和Ctrl→事件从我的ScrollViewer冒泡到定义命令的窗口的最简单方法是什么?

解决方法

所以我通过以下方式完成了这项工作
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);
    }
}

我认为诀窍是要了解事件从顶部开始并且正在向下运行.然后在回来的路上,每个“层”检查Handled布尔值,如果它没有设置为true,它将确定它是否会执行某些操作并设置它.我需要为我的快捷方式短路这种行为,以便Handled在返回Window级别时仍然是假的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读