2016-12-19 48 views
0

我有一个WPF自定义组合框,作为用户键入,筛选剩余的单词包含(不只是开始)用户输入的列表。现在我想按回车,下拉菜单中的第一项是选定的项目。正确的项目选择用户按enter键组合框

这里是前:

enter image description here

期望的行为:当我按下从这里进入,DHC成为的SelectedItem。

实际发生的:

enter image description here

HEI成为选择的答案,(可能是因为它是与“他”开始的唯一节点

为了解决这个问题,我试图通过在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次。而且当时的文本框不会反映所需的行为

+0

你大概可以绑定选择的项目,并将其设置为过滤列表中的第一项 – Steve

+0

嗯,沿着这些线做某事似乎工作。如果你想回答它,我会接受。后续问题虽然,当我尝试滚动下拉菜单时,它会更改文本框中的值,然后将该列表仅筛选出与该字符串匹配的列表,只留下文本框中的项目作为可能的答案。 。有什么办法让我可以使用箭头按钮进行导航? –

回答

1

您可以在选定的项目绑定在你的模型,每次过滤器改变了您在过滤列表中的SelectedItem设置的第一个项目

会是什么以便我可以使用箭头按钮导航

如果默认情况下WPF组合框不支持箭头导航,则可以使用Command Binding进行操作。

首先你绑定SelectedIndex属性,然后向下命令将刚刚成立SelectedItem = filteredList[SelectedIndex + 1](含边界检查OFC)

但我记得键盘导航应该包含在默认Combobox虽然

相关问题