2009-08-13 11 views
3

Gibt es eine Möglichkeit, Focus Navigation (wie durch die Tab-Taste oder MoveFocus Methode gesteuert) zu zwingen, in einem bestimmten Container zu wickeln? Ich habe Code eingefügt, der dieses Problem unten zeigt. Was ist der einfachste Weg, um Tab bewegen Fokus von TextBox "Charlie" zu TextBox "Able" (und umgekehrt für Shift + Tab auf TextBox "Able"), anstatt es auf MenuItem "Alpha" bewegen?WPF Fokus Navigation Wrapping

<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> 

Antwort

4

die Ke yboardNavigation.TabNavigation angebracht Eigenschaft verwenden, etwa so:

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

Konnten Sie die Antwort auf Mark Smith's blog.

-1

Es klingt wie das, was Sie wollen, ist das gleiche Verhalten wie Symbolleisten: Sie können in sie ein Tab, aber sobald ein Element innerhalb der Symbolleiste Tastaturfokus erhält, Scharfstellen im Inneren. Wenn ja, verwenden Focusmanager wie folgt:

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

'IsFocusScope' ist eine ganz andere Sache - es einen neuen logischen Fokusbereich definiert, den den logischen Fokus innerhalb dieses Bereichs erinnert, und wiederherstellen, sobald die Tastatur („physische“) Der Fokus kehrt zu diesem Bereich zurück. Wenn dies aktiviert ist, wird das Tab-Looping-Verhalten nicht aktiviert. Dies wird durch die Eigenschaft "KeyboardNavigation.TabNavigation" gesteuert, wie in der anderen Antwort beschrieben. –

+0

Doh! Danke fürs klarstellen. – AndyM