チャイルドビューを含むスクロールビューアーがあります。そのチャイルドビューのいずれかにフォーカスがあり、下/上キーを押すと、コンテンツが下/上にスクロールします。
矢印キーに基づくナビゲーションシステムを実装していなければ、これは問題にはなりません。したがって、これらの4つの矢印キーを使用して、オブジェクト間をより簡単にナビゲートします。問題は、ユーザーが上または下を押すとコンテンツがスクロールすることです。スクロール動作を無効にしたい。
私はすでにいくつかのことを試しました:
- KeyDownイベントをscrollviewerに追加しますが、ヒットすることはありません。
- scrollviewerでistabstopをfalseに設定する
- スクロールビューア内のグリッドでkeyeventargs"handled"をtrueに設定すると、コードが実行される(ナビゲーション)前に呼び出されるため、これも使用できません。
編集
XAMLでのイベントの処理方法は次のとおりです。
<i:Interaction.Behaviors>
<catel:KeyPressToCommand Command="{Binding CancelCellInputCommand}" Key="Escape" />
<catel:KeyPressToCommand Command="{Binding LeftArrowNavigationCommand}" Key="Left"/>
<catel:KeyPressToCommand Command="{Binding UpArrowNavigationCommand}" Key="Up"/>
<catel:KeyPressToCommand Command="{Binding RightArrowNavigationCommand}" Key="Right"/>
<catel:KeyPressToCommand Command="{Binding DownArrowNavigationCommand}" Key="Down"/>
</i:Interaction.Behaviors>
コンテンツがキーを上下にスクロールしないようにする他の解決策はありますか?
編集2:
さらに調査したところ、箇条書き1がそのように機能する理由は、scrollviewerがキーダウンイベントを食べて、おそらくスクロールを発生させるためであることがわかりました。しかし、私はまだそれを回避する方法を見つけていません。「IsTabStop」をfalseに設定したと言う人もいますが、それでもまったく違いはありません。KeyUpをキャッチすることはできますが、キーのスクロールを防ぐには遅すぎます。私の最後の手段は、私が望むものに上/下キーを使用しないことですが、セルグリッドで上下に移動するには、上/下キーが必要です。これは単なるロジックです。
私はこの問題に本当に固執しているので、これについての助けと考えをいただければ幸いです。