WPF trata todo el árbol de la interfaz de usuario como un único ámbito de pestaña. No se divide en áreas más pequeñas, como cabría esperar. Esto incluye controles dentro de UserControls.
Por ejemplo, si usted tenía
<StackPanel>
<TextBox Name="TextBox1" />
<MyUserControl />
<TextBox Name="TextBox3" />
</StackPanel>
Y MyUserControl
parecía
<MyUserControl>
<TextBox Name="TextBox2" />
</MyUserControl>
El ciclo pestaña predeterminada sería TextBox1, TextBox2 TextBox3. Esto se debe a que no se definen las propiedades de TabIndex, por lo que todos los controles se ejecutan en el orden de tabulación predeterminado, que es el orden en que se agregan a la interfaz de usuario.
Si se establece el ÍndiceDeTabulación en sus controles tales como abajo,
<StackPanel>
<TextBox Name="TextBox1" TabIndex="1" />
<MyUserControl TabIndex="2" />
<TextBox Name="TextBox3" TabIndex="3" />
</StackPanel>
Su tabulación cambiaría a TextBox1, TextBox3, TextBox2. Esto se debe a que TextBox2 no tiene un TabIndex especificado, por lo que se asume el valor predeterminado y se asigna a una pestaña después de que todos los otros controles con un TabIndex especificado pasan por un ciclo.
La forma en que normalmente soluciono esto es unir el TabIndex
de los controles dentro del UserControl al UserControl.TabIndex.
Por ejemplo añadiendo el siguiente enlace al control de usuario haría que el ciclo ficha correcta de nuevo
<MyUserControl>
<TextBox Name="TextBox2" TabIndex="{Binding Path=TabIndex, RelativeSource={RelativeSource AncestorType={x:Type local:MyUserControl}}}" />
</MyUserControl>
Por lo general prefieren para establecer esta unión en el Loaded
caso del control de usuario en lugar de tener que recordar para establecer esta unión en todos los controles dentro del UserControl. Estoy seguro de que también hay formas más eficientes de hacerlo, sin embargo, el problema no ha surgido con la frecuencia suficiente para que me siente y me tome el tiempo de investigar cómo usar los ámbitos de las pestañas correctamente para evitar esta solución alternativa.
Cómo ¿está configurando las propiedades de TabIndex para sus controles en el código subyacente para esta interfaz? Debe ser más claro sobre lo que no funciona. Publica un código – Bernard
¿Qué quiere decir con "no funciona"? ¿Es "presionas Tab pero el foco no se mueve"? O se mueve, pero se mueve mal? ¿De qué manera está mal? –
¿Ha mirado la clase [KeyboardNavigation] (http://msdn.microsoft.com/en-us/library/aa969768.aspx#Keyboard_Navigation)? – rfmodulator