2009-08-13 3 views
3

Есть ли способ заставить Focus Navigation (как управляется клавишей Tab или MoveFocus), чтобы обернуть внутри данного контейнера? Я включил код, который демонстрирует эту проблему ниже. Самый простой способ сделать Tab сфокусировать фокус от TextBox «Charlie» до TextBox «Able» (и, наоборот, для Shift + Tab на TextBox «Able») вместо того, чтобы переместить его на MenuItem «Альфа»?WPF Focus 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> 

ответ

4

Используйте Ke 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