wpf - WPF 中的可聚焦面板

标签 wpf focus panel keydown

我需要在 WPF 中使面板可聚焦,以便它像任何其他可聚焦控件一样捕获键盘事件:

  • 用户在面板内部单击以使其获得焦点
  • 任何 KeyDownKeyUp事件在面板级别引发
  • 如果单击面板外的另一个可聚焦元素,面板将失去焦点

  • 我实验过 FocusManager.IsFocusScope="True"在面板和 myPanel.Focus()返回 true但仍然没有调用 Panel KeyUp 事件处理程序。

    我错过了什么吗?

    最佳答案

    经过更多调查,面板具有键盘焦点并保持它直到按下箭头键或 TAB(启动焦点循环)。

    我刚刚为 KeyDown 添加了一个处理程序带有“e.Handled = true;”的事件现在一切正常。

    总而言之,要有一个可聚焦的面板:

  • 添加 FocusManager.IsFocusScope="True"到面板
  • 防止失去对箭头和 Tab 键的关注:

  • myPanel.KeyDown += new KeyEventHandler(
        delegate(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Left ||
                e.Key == Key.Up ||
                e.Key == Key.Right ||
                e.Key == Key.Down ||
                e.Key == Key.Tab)
                e.Handled = true;
        }
    );
    


    最后用 myPanel.Focus(); 给它一个焦点.

    关于wpf - WPF 中的可聚焦面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1721458/

    相关文章:

    c# - WPF 自定义 TextTrimming

    WPF DataGrid 绑定(bind)到 string.Length 而不是字符串文本

    使用多个变量和一些时间不变的从宽到面板 reshape 数据框

    c# - Visual Studio 中没有父窗体的设计面板

    html - :focus on class doesn't work

    html - 带有溢出滚动条的垂直响应面板

    wpf - 发生拖动操作时,如何在 XAML 中激活 WPF 触发器?

    wpf - 图像识别驱动测试自动化

    c# - 有没有办法接收焦点输入的关键输入?

    jquery - 使用最接近焦点的最接近文本框