2016-12-19 47 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雖然

相關問題