使用Tab键选择WPF ComboBoxItem

时间:2011-08-31 09:41:52

标签: wpf

当您点击Tab键时,WPF ComboBox不会选择项目。您必须点击“Enter”或用鼠标点击该项目才能选择它!

这就是我期望它发挥作用的方式:

  1. 展开ComboBox
  2. 使用上/下箭头键查找要选择的项目。
  3. 按当前项目上的“tab”键将其选中,然后转到下一个字段。
  4. 实际上,当你点击Tab键时,它会遍历ComboBox中的所有ComboBoxItem。

2 个答案:

答案 0 :(得分:1)

万一有人来找一个例子(就像我以前一样),以下是对我有用的KeyEvent事件处理程序的内容:

if (e.Key == Key.Tab || e.Key == Key.Enter)
{
    var comboBox = sender as ComboBox;
    var newValue = (e.OriginalSource as ComboBoxItem)?.DataContext;
    if (newValue != null)
    {
        comboBox.SelectedItem = newValue;
    }
    comboBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

答案 1 :(得分:0)

Tab键被KeyUp事件捕获,并且在打开comboBox的下拉列表时跟踪当前突出显示的项目的唯一方法是修改控件模板中的文本框,以便您可以访问该值“选中”并在按Tab键后将其指定为选中状态。

这不是最令人愉快的事情,但这是你要强制执行你想要使用的行为的唯一方式,除了你自己完全不同的控制。