【问题标题】:How do I work with keyboard shortcuts in WPF?如何在 WPF 中使用键盘快捷键?
【发布时间】:2013-02-21 04:46:52
【问题描述】:

我有 10 个按字母顺序排列的复选框项目,例如:

Apple、AirCraft、Ball、Bottom、Cat 等

A 键,焦点必须设置到 Apple 复选框,B - 到 Ball。我怎样才能做到这一点?由于项目来源计数,这些复选框项目是动态变化的。

由于复选框项目没有在 XAML 中硬编码,我猜我无法标记;我在运行时加载它们。如果我有以下物品怎么办?

  1. 苹果
  2. Apple1
  3. Apple2

在这种情况下,我无法将快捷方式设置为正确,因此,如果我按下 A,第一个以字母 A 开头的项目将获得焦点并再次按下A,焦点设置到下一个以字母A开头的项目。如果它到达以字母 A 开头的最后一个项目,那么如果我再次按 A 它必须转到第一个以字母 A 开头的项目>,所以这是我的要求:)。我该怎么做?

【问题讨论】:

    标签: wpf keyboard shortcut


    【解决方案1】:

    您可以使用键盘导航,方法是先按 alt 键,然后将复选框内容设置为:

    <CheckBox Content="_Apple" />
    <CheckBox Content="_Ball" />
    

    请记住,相关的键盘快捷键将位于“_”符号之后。

    【讨论】:

    • 真的非常感谢,现在我遇到了另一个问题,我按照你的指导做了,问题是,我将通过未排序的配置文件加载我的复选框项目,所以在代码后面生病了使用 Icomparer 排序,当我使用 _ 作为快捷方式时,项目没有得到排序。
    • 我的配置看起来
    【解决方案2】:

    遍历item非常简单:

    A键,焦点必须设置到Apple复选框,B - 到Ball强>。由于项目来源计数,这些复选框项目是动态变化的。

    只需按照以下方式进行即可。将下划线符号 "_" 放在 "A" 之前:

    1. _Apple
    2. _Apple1
    3. _Apple2

    如果我按 A 以字母 A 开头的第一个项目将获得焦点,再次按 A 焦点将设置为下一个项目以字母 A 开头。如果它到达最后一个以字母 A 开头的项目,那么如果我再次按 A,它将转到第一个以字母 A 开头的项目。如果要选中复选框,可以使用 SpaceBar。提供的复选框项目必须在 ItemsControl 内。

    【讨论】:

      【解决方案3】:

      您需要制定一些规则来确定哪些按键会导致哪个项目 - 即,如果有两个“A”项目,则在“A”上选择哪个项目?

      然后您必须手动找到与按键上输入的按键匹配的项目并突出显示它。

      【讨论】:

        【解决方案4】:

        订阅包含您的 CheckBox 项目的容器的 OnPreviewKeyDown 事件。然后实现按下特定按钮时会发生什么。

        【讨论】:

          猜你喜欢
          • 2010-11-24
          • 1970-01-01
          • 1970-01-01
          • 2018-08-18
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          • 1970-01-01
          相关资源
          最近更新 更多