C# 按键关闭事件不存在';ComboBox打开时不工作?

C# 按键关闭事件不存在';ComboBox打开时不工作?,c#,xaml,windows-runtime,uwp,C#,Xaml,Windows Runtime,Uwp,为什么在打开组合框下拉列表时,KeyDown事件未触发? 有没有办法触发这个 我试图使用KeyDown事件来检查按下了哪个键,并从组合框中自动选择一个项目,该组合框以按下的字符开始,模拟部分自动完成功能。但是当组合框打开时,这不起作用 代码: statusComboBox.ItemsSource=inspectionStatusComboList; private void组合框\u KeyDown(对象发送器,KeyRoutedEventArgs e) { ComboBox=发送方作为Com

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

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

代码:


statusComboBox.ItemsSource=inspectionStatusComboList;
private void组合框\u KeyDown(对象发送器,KeyRoutedEventArgs e)
{
ComboBox=发送方作为ComboBox;
int指数=-1;
字符串key=e.key.ToString();
如果(key.Length==1)
{ 
开关(box.Name)
{
案例“statusComboBox”:
index=inspectionStatusComboList.IndexOf(inspectionStatusComboList.FirstOrDefault(x=>x.StartsWith(key));
打破
}
box.SelectedIndex=索引;
}
}
下面是我试图实现的一个片段。

尝试将KeyRoutedEventArgs更改为KeyEventArgs,并查看您的运行情况,因为我们无法查看代码的其余部分来查看您是否创建了路由

我可以想象下拉式弹出窗口会获得焦点,因此您必须访问该窗口并订阅该窗口上的关键事件。参考模板。您可以尝试在
弹出菜单
弹出菜单
元素上订阅这些事件


您也可以使用my中的。

显示一些代码,否则很难找到help@MikaelPuusaari:添加了代码。是否尝试捕获预览事件而不是实际事件?@LordWilmore:预览事件?UIElement.PreviewKeyDown。你能详细说明一下吗?因为我不能仅仅替换它,因为它不会匹配任何重载的KeyDown事件?嘿,Filip,谢谢你的帮助,我已经尝试了你工具包中的AutoCompleteTextBox,首先非常感谢你的帮助,但是就像我的例子一样,我需要下拉列表,即使文本框中没有值,我也无法用你的工具包实现这一点。是否有其他替代方案?您是指替代的自动完成实施方案?我肯定有。您也可以从工具箱中获取一个,并进行更改以使其适合您。
<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;
    }
}