c# - ComboBox 打开时 KeyDown 事件不起作用?

标签 c# xaml windows-runtime uwp

为什么 ComboBox 下拉菜单打开时没有触发 KeyDown 事件? 有什么办法可以触发这个。

我正在尝试使用 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

最佳答案

我可以想象下拉弹出窗口获得焦点,因此您必须访问它并订阅关键事件。见模板here以供引用。您可以尝试在 PopupPopupBorder 元素上订阅这些事件。

您还可以使用 AutoCompleteTextBox来 self 的 toolkit相反。

关于c# - ComboBox 打开时 KeyDown 事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39504970/

相关文章:

c# - 如何删除段落中的文字?

c# - Redis快速插入5000万条记录的方法

c# - xaml 文本框控件中的光标位置

c# - WPF 在 TextBlock 中插入变量

javascript - Windows 应用商店应用程序中未显示多个 Javascript 警报

.net - 在 Windows 8 Metro 风格的 c# 应用程序上捕获 Enter 和空格键

c# - 无法使用 Mapbox "Create an Upload"api 上传数据文件

c# - 获取注册表项是否存在,如果存在,则执行此操作,如果不存在,则执行此操作

c# - 为什么我不能在 CQL 中按主键排序?

xaml - 如何在 Windows 8 中的 Metro 应用程序中创建菜单项