打开ComboBox时,KeyDown事件不起作用?

时间:2016-09-15 07:09:38

标签: c# xaml windows-runtime uwp

为什么在打开KeyDown下拉列表时未触发ComboBox事件? 有没有办法触发这个。

我尝试使用KeyDown事件检查按下了哪个键,并自动从ComboBox中选择一个项目,该项目以模拟部分自动完成功能的按下字符开头。但是,当ComboBox打开时,这不起作用。

代码:

<ComboBox x:Name="statusComboBox" KeyDown="ComboBox_KeyDown"/>

statusComboBox.ItemsSource = inspectionStatusComboList;

private void ComboBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
    ComboBox box = sender as ComboBox;
    int index = -1;
    string key = e.Key.ToString();

    if (key.Length == 1)
    { 
       switch(box.Name)
       {
          case "statusComboBox":
                    index = inspectionStatusComboList.IndexOf(inspectionStatusComboList.FirstOrDefault(x => x.StartsWith(key)));
                    break;
       }
       box.SelectedIndex = index;
    }
}

这是我想要实现的内容的剪辑。 enter image description here

2 个答案:

答案 0 :(得分:1)

我可以想象下拉弹出窗口会成为焦点,因此您必须访问它并订阅关键事件。请参阅模板here以供参考。您可以尝试在PopupPopupBorder元素上订阅这些活动。

您也可以使用AutoCompleteTextBox中的toolkit代替。

答案 1 :(得分:0)

尝试将KeyRoutedEventArgs更改为KeyEventArgs并看到你顺利进行,因为我们无法看到你的其余代码,看看你是否创建了路径