[英]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.