2009-08-13 18 views
3

(TabキーまたはMoveFocusメソッドによって制御される)フォーカスナビゲーションを強制的に指定したコンテナ内にラップする方法はありますか?この問題を以下に示すコードを含めました。 MenuItem「Alpha」に移動するのではなく、TextBox「Charlie」からTextBox「Able」(Shift + Tabの場合はTextBox「Able」)にフォーカスを移動する最も簡単な方法は何ですか?WPFフォーカスのナビゲーションの折り返し

<Window x:Class="NavWrapExample.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <DockPanel LastChildFill="True"> 
     <Menu DockPanel.Dock="Top"> 
      <MenuItem Header="Alpha" /> 
      <MenuItem Header="Bravo" /> 
      <MenuItem Header="Charlie" /> 
     </Menu> 
     <StackPanel> 
      <TextBox Text="Able" /> 
      <TextBox Text="Baker" /> 
      <TextBox Text="Charlie" /> 
     </StackPanel> 
    </DockPanel> 
</Window> 

答えて

4

そうのように、柯yboardNavigation.TabNavigation添付プロパティを使用します。

<StackPanel KeyboardNavigation.TabNavigation="Cycle"> 
    <TextBox Text="Able" /> 
    <TextBox Text="Baker" /> 
    <TextBox Text="Charlie" /> 
</StackPanel> 

Mark Smith's blogに答えを見つけました。

-1

ツールバーと同じ動作ですが、ツールバー内の要素がキーボードフォーカスを取得すると、フォーカスループが内側に移動します。その場合は、次のように、FocusManagerを使用します。

<StackPanel FocusManager.IsFocusScope="True"> 
    <!-- Controls go here... --> 
</StackPanel> 
+2

'IsFocusScope'は全く異なるものである - それはその範囲内で論理フォーカスを覚えて新しい論理フォーカス範囲を定義し、キーボード一度それを復元します(「物理的」 )フォーカスがそのスコープに戻ります。これにより、タブループの動作が有効にならず、これは他の答えに記述されているように 'KeyboardNavigation.TabNavigation'プロパティによって制御されます。 –

+0

Doh!明確化のためにありがとう。 – AndyM

関連する問題