[WPF][Behavior]DatePickerにフォーカスがあるときに「FocusNavigationDirection.Next」または「FocusNavigationDirection.Previous」が動作しない

Behaviorでエンターキーによるフォーカス移動を実装したとき、DatePickerでは「FocusNavigationDirection.Next」または「FocusNavigationDirection.Previous」が動作しない場合があります。

動作しない一例

次のコードはEnterが押されたときに次のコントロール、Shift+Enterが押されたときは前のコントロールにフォーカス移動をしようとしています。ところが「FocusNavigationDirection.Next」は機能しますが「FocusNavigationDirection.Previous」は機能しないため、前のコントロールにフォーカスが移動しません。

解決方法

UIElementを取得する際、第一引数の「object sender」または第二引数の「KeyEventArgs e.OriginalSource」を使用しますが、DatePickerでは「Keyboard.Modifiers」の値に応じて使い分けが必要になります。

「Keyboard.Modifiers == ModifierKeys.None」 の場合は第二引数の「KeyEventArgs e.OriginalSource」、「Keyboard.Modifiers == ModifierKeys.Shift」の場合は第一引数の「object sender」を使用します。

検証環境

関連ページ