2014-02-25 3 views
0

Мне нужно TabNavigation для перемещения по всему VisualTree.WPF KeyboardNavigation.TabNavigation с пользовательским управлением

Iv'e получить пользовательский контроль в представлении, в котором мне нужны его внутренние элементы, чтобы принять участие в TabNavigation View.

мне нужно использовать TabIndex с моей точки зрения, так как мне нужно поток вкладку, чтобы быть сверху вниз

Шаблон пользовательского элемента управления:

<ControlTemplate> 

     <Grid> 
      <TextBox x:Name="first"/> 
      <TextBox /> 
      <TextBox /> 
     </Grid> 

     <ControlTemplate.Triggers> 
      <Trigger Property="IsFocused" Value="True"> 
       <Setter TargetName="first" Property="FocusManager.FocusedElement" Value="{Binding ElementName=first}" /> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

Вид:

 <Grid> 
      <Grid.ColumnDefentions> 
       <ColumnDefention /> 
       <ColumnDefention /> 
      </Grid.ColumnDefentions> 


      <TextBox Grid.Column="0" TabIndex="0" /> 
      <local:MyControl Grid.Column="0" TabIndex="1" /> 
      <TextBox Grid.Column="0" TabIndex="2" /> 

      <TextBox Grid.Column="1" TabIndex="3" /> 
      <TextBox Grid.Column="1" TabIndex="4" /> 
      <TextBox Grid.Column="1" TabIndex="5" /> 

     </Grid> 

при навигации TabIndex 0 в navigated to, затем первое текстовое поле в моем контроле, а затем второе и третье, TabIndex 2 НЕ перешел к, это как если бы он потерял индекс табуляции.

Как я могу включить навигацию внутри шаблона настраиваемого элемента управления в поток вкладок всего представления?

+1

вы использовали IsTabStop и AcceptsTab свойства ?? –

ответ

0

Учитывая тот же TabIndex, что и их родительский элемент, элементы в визуальном дереве родителя получают вкладку в порядке.

<ControlTemplate> 

    <Grid> 
     <TextBox TabIndex={TempalteBinding TabIndex} /> 
     <TextBox TabIndex={TempalteBinding TabIndex} /> 
     <TextBox TabIndex={TempalteBinding TabIndex} /> 
    </Grid> 
<ControlTemplate> 

Вид:

<Grid> 
     <Grid.ColumnDefentions> 
      <ColumnDefention /> 
      <ColumnDefention /> 
     </Grid.ColumnDefentions> 


     <TextBox Grid.Column="0" TabIndex="0" /> 
     <local:MyControl Grid.Column="0" TabIndex="1" IsTabStop="False" /> 
     <TextBox Grid.Column="0" TabIndex="2" /> 

     <TextBox Grid.Column="1" TabIndex="3" /> 
     <TextBox Grid.Column="1" TabIndex="4" /> 
     <TextBox Grid.Column="1" TabIndex="5" /> 

    </Grid> 
Смежные вопросы