2016-12-19 25 views
0

ユーザー入力として、ユーザー入力としてCONTAIN(始まりではない)の残りのリストをフィルタリングするカスタムコンボボックスを持つWPFがあります。今私はEnterを押したいとドロップダウンの最初の項目が選択された項目です。ユーザーがコンボボックスのEnterキーを押したときに選択された正しい項目

enter image description here

望ましい行動:ここ

前で、私はここからEnterキーを押したときに、DHCはのSelectedItemになります。

が実際に何が起こる:それは「HE」で開始ノードだけだったので、

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; 
    } 
} 

スイッチステートメントのリターン部分にブレークポイントを設定しようとしましたが、スイッチがトリガーされる前に3回押してください。その場合でも、テキストボックスが

+0

もののキーボードナビゲーションがデフォルトComboboxに含まれるべき覚えて選択した項目をフィルタリングされたリストの最初の項目に設定します – Steve

+0

これらの行に沿って何かをしているのがうまくいくようです。それに答えるなら、私は受け入れます。しかし、私がドロップダウンをスクロールしようとすると、テキストボックスの値が変更され、文字列に一致するものだけのリストがフィルタリングされ、可能な答えとしてテキストボックスに項目が残されます。 。矢印ボタンを使用して移動できるようにする方法は何ですか? –

答えて

1

あなたは、あなたのモデルで選択した項目をバインドすることができ、目的の動作を反映していないと毎回フィルタを使用すると、フィルタリングされたリストの最初の項目にのSelectedItemを設定変更する

何だろう

WPFコンボボックスがデフォルトで矢印ナビゲーションをサポートしていない場合は、コマンドバインディングを使用して何かを行うことができます。

まずあなたがSelectedIndexプロパティをバインドし、ダウンコマンドがちょうど(境界チェックOFCで)

SelectedItem = filteredList[SelectedIndex + 1]を設定します。しかし、私はあなたがおそらくバインドできる

関連する問題