ComboBox 打开时 KeyDown 事件不起作用?
KeyDown event doesn't work when ComboBox is opened?
为什么打开 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;
}
}
这是我正在努力实现的目标的剪辑。
尝试将 KeyRoutedEventArgs 更改为 KeyEventArgs 并查看是否成功,因为我们看不到您的其余代码以查看您是否创建了路由
我可以想象下拉弹出窗口获得焦点,因此您必须访问它并订阅关键事件。请参阅模板 here 以供参考。您可以尝试在 Popup
或 PopupBorder
元素上订阅这些事件。
您也可以改用 AutoCompleteTextBox
from my toolkit。
为什么打开 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;
}
}
这是我正在努力实现的目标的剪辑。
尝试将 KeyRoutedEventArgs 更改为 KeyEventArgs 并查看是否成功,因为我们看不到您的其余代码以查看您是否创建了路由
我可以想象下拉弹出窗口获得焦点,因此您必须访问它并订阅关键事件。请参阅模板 here 以供参考。您可以尝试在 Popup
或 PopupBorder
元素上订阅这些事件。
您也可以改用 AutoCompleteTextBox
from my toolkit。