このような画面で、以下のような画面を作成します。
タブAのボタンにはMoveFocusでフォーカス移動するようにしてあります。
private void Button_Click(object sender, RoutedEventArgs e)
{
var ctl = Keyboard.FocusedElement as UIElement;
if (ctl != null)
{
ctl.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
これを普通に実行しても、何もおきません。
でも、Ctrlキーを押しながらボタンをクリックすると・・・
タブBに切り替わった!!
どうやら、TabControlは、Ctrl+Tabでタブの切り替えが発生するようです。
もしかして、MoveFocusメソッドで指定しているFocusNavigationDirection.NextがTabキーとして認識されている・・・?
この現象、フォーカスの移動先がTextBoxなどの場合は発生しなかったりなのですが、
もし、MoveFocusを使用することで予期しない動作をする場合は、確認していたほうがいいかも?
もしかして、MoveFocusメソッドで指定しているFocusNavigationDirection.NextがTabキーとして認識されている・・・?
この現象、フォーカスの移動先がTextBoxなどの場合は発生しなかったりなのですが、
もし、MoveFocusを使用することで予期しない動作をする場合は、確認していたほうがいいかも?