下キーと上キー(方向行)をキャプチャしようとしていますが、このキーを押してもイベントキーダウンが発生しません。
ただし、他のキーを押すと、イベントが発生します。たとえば、numlockがキャッチされます。行キーは特別なキーですか?
MVVMLightを使用してイベントをコマンドに変換し、KeyEventArgsを渡します。
ありがとう。
編集:いくつかのコードを追加します
上手。本当に私はコンボボックスを持っていて、編集可能なので、コンボボックス内にテキストを書くことができます。検索オプションを有効にする方法、私が書いている間、選択が変更されます。
したがって、選択はさまざまな理由で変更される可能性があります。検索オプションのために、comboBoxで選択を変更し、マウスで選択を変更し、矢印キーで選択を変更できます。
どちらが選択変更の理由なのか知りたいのですが。したがって、コンボボックスで下矢印キーまたは上矢印キーを押すタイミングを知る必要があります。
私はこのコードを持っています:
AXML
<ComboBox DisplayMemberPath="Type" Height="23" HorizontalAlignment="Left" IsSynchronizedWithCurrentItem="True" Margin="0,16,0,0" Name="cmbType" VerticalAlignment="Top" Width="238"
ItemsSource="{Binding Path=Types}"
SelectedIndex="{Binding Path=TypesIndex}" IsEditable="True"
Text="{Binding TypesText}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewKeyDown">
<cmd:EventToCommand Command="{Binding TypesPreviewKeyDownCommand, Mode=OneWay}" PassEventArgsToCommand="True" />
</i:EventTrigger>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding TypesSelectionChangedCommand, Mode=OneWay}" CommandParameter="{Binding ElementName=cmbTypes, Path=SelectedItems}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
私のviewModelでは:
private RelayCommand<KeyEventArgs> _typesPreviewKeyDownCommand = null;
public RelayCommand<KeyEventArgs> typesPreviewKeyDownCommand
{
get
{
if (_typesPreviewKeyDownCommand == null)
{
_typesPreviewKeyDownCommand = new RelayCommand<KeyEventArgs>(typesPreviewKeyDownCommand);
}
return _typesPreviewKeyDownCommand;
}
}
private void typesPreviewKeyDownCommand(KeyEventArgs e)
{
if (e.Key == Key.Down || e.Key == Key.Up)
{
//my code
}
else
{
//more code
}
}