代码之家  ›  专栏  ›  技术社区  ›  AbsoluteSith

当组合框打开时,KeyDown事件不起作用?

  •  3
  • AbsoluteSith  · 技术社区  · 8 年前

    为什么 KeyDown 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 回复  |  直到 8 年前
        1
  •  2
  •   Filip Skakun    8 年前

    我可以想象下拉式弹出窗口获得焦点,因此您必须访问该窗口并订阅有关该窗口的关键事件。参见模板 here 供参考。您可以尝试在 Popup PopupBorder 元素。

    AutoCompleteTextBox 来自我的 toolkit 相反

        2
  •  0
  •   Mikael Puusaari    8 年前

    尝试将KeyRoutedEventArgs更改为KeyEventArgss,然后看看你是否能成功,因为我们无法看到你的其余代码来查看你是否创建了路由