2012-04-03 14 views
1

ユーザーコントロールを作成し、Focusable = "True"と設定します。これは、ボタンWPF:フォーカスが適切にUsercontrolで転送されない

<Button Grid.Column="1" Name="btnPreviousClip" Focusable="True" Template="{StaticResource controlButtonStart}" Margin="2,2,2,4" Click="btnReverse_Click" KeyboardNavigation.TabIndex="0" KeyDown="btnPreviousClip_KeyDown" /> 
<Button Grid.Column="2" Name="btnReverse" Focusable="True" Template="{StaticResource controlButtonReverse}" Margin="2,2,2,4" Click="btnReverse_Click" KeyboardNavigation.TabIndex="1" KeyDown="btnReverse_KeyDown" /> 
<Button Grid.Column="3" Name="btnPlay" Focusable="True" Template="{StaticResource controlButtonPlay}" Click="btnPlay_Click" Margin="2,2,2,4" KeyboardNavigation.TabIndex="2" KeyDown="btnPlay_KeyDown" /> 
<Button Grid.Column="3" Name="btnPause" Focusable="True" Template="{StaticResource controlButtonPause}" Margin="2,2,2,4" Visibility="Hidden" Click="btnPause_Click" KeyboardNavigation.TabIndex="3" KeyDown="btnPause_KeyDown" /> 
<Button Grid.Column="4" Name="btnForward" Focusable="True" Template="{StaticResource controlButtonForward}" Margin="2,2,2,4" Click="btnForward_Click" KeyboardNavigation.TabIndex="4" KeyDown="btnForward_KeyDown" /> 
<Button Grid.Column="5" Name="btnNextClip" Focusable="True" Template="{StaticResource controlButtonEnd}" Margin="2,2,2,4" Click="btnForward_Click" KeyboardNavigation.TabIndex="5" KeyDown="btnNextClip_KeyDown" /> 

<Button Grid.Column="7" Name="btnFav" Focusable="True" Template="{StaticResource controlButtonFav}" Margin="2,2,2,4" KeyboardNavigation.TabIndex="6" Click="btnFav_Click" KeyDown="btnFav_KeyDown" /> 
<Button Grid.Column="8" Name="btnResize" Focusable="True" Template="{StaticResource controlButtonResize}" Margin="2,2,2,4" Click="btnResize_Click" KeyboardNavigation.TabIndex="7" KeyDown="btnResize_KeyDown" /> 

を次しているユーザーコントロールのコード上記

private void UserControl_GotFocus(object sender, RoutedEventArgs e) 
     { 

      Keyboard.Focus(btnPlay); 
     } 

がうまく機能し、フォーカスがbtnplayに設定されている次のようにまた、私は、このユーザーコントロールのだフォーカスイベントを書きました。タブを押すと、フォーカスはusercontrol(btnForwardの代わりに)に転送されます。私は問題を見つけて、多くのグーグルをやっていますが、今まで運が上手くいません。

ここで、スペースバーを使用して任意のボタンを押すと、タブシーケンス(フォーカス)がうまく動作することを通知します。

私は間違っていることをお勧めします。

+0

ユーザーコントロールにIsTabStop = "False"を試しましたか? – LPL

答えて

0

ボタン用に指定されたControlTemplateのコードを見ることなく、この質問にもっと徹底的に答えにくいです。

UserControlにKeyboardNavigation.TabNavigation="Local"を設定し、Focusable="True"を削除する必要があります。このように、UserControl内のボタンに指定したTabIndexプロパティはローカルスコープ内でのみ考慮され、UserControlから親コンテナ内の次の適切な要素に移動します。一番高いTabindex(btnResize )が注目されている。

GotFocusイベントは、フォーカスが変更されるたびに発生します。したがって、このイベントハンドラを使用すると、効果的にUserControl内のフォーカスを切り替えることができなくなります。一度上げた場合、フォーカスは常に再生ボタンに戻ります。イベントハンドラを削除する必要があります。

関連する問題