[英]Correct item selected upon user pressing enter for a combobox
我有一个带有自定义组合框的WPF,当用户键入时,该组合框将过滤其余列表,以包含那些包含(而不是以开头)用户输入的单词。 现在,我想按Enter键,下拉菜单中的第一项就是selecteditem。
这是之前:
所需的行为:当我从此处按Enter键时,DHC成为SelectedItem。
实际发生的情况:
HEI成为选定的答案,(可能是因为它是唯一以“ HE”开头的节点。
为了解决这个问题,我试图通过在xaml中包含以下内容来使按键功能过载:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown" >
<cmd:EventToCommand Command="{Binding KeyPress}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
在代码中路由到此:
private void OnDownPress(KeyEventArgs e)
{
var key = e.Key.ToString().ToLower();
switch (key)
{
case "up":
break;
case "down"
break;
case "return":
SelectedNode = NodeTokenList[0];
UserInput = NodeTokenList[0].FullNodeName;
break;
}
}
现在,我尝试在switch语句的返回部分设置一个断点,在触发开关之前,我必须按Enter 3次。 即使这样,文本框也无法反映所需的行为
您可以在模型中绑定“选定项目”,并且每次过滤器更改时,都将“选定项目”设置为过滤列表中的第一个项目
这将是一种方法,以便我可以使用箭头按钮进行导航
如果WPF组合框默认情况下不支持箭头导航,则可以使用“命令绑定”执行某些操作。
首先,您绑定SelectedIndex
属性,然后按下命令将仅设置SelectedItem = filteredList[SelectedIndex + 1]
(带有边界检查ofc)
但是我记得默认的组合Combobox
应该包含键盘导航
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.