2008-12-11 15 views
80

¿Cómo puedo configurar las pestañas en WPF? Tengo un ItemsControl con algunos elementos expandidos y algunos colapsados ​​y me gustaría omitir los que se colapsaron cuando estoy tabbrando.Configuración del orden de las pestañas en WPF

¿Alguna idea?

+0

La respuesta propuesta de Jesse es el camino a seguir ... –

+0

que parece ser el comportamiento predeterminado? –

Respuesta

55

Puede omitir elementos en la secuencia de tabulaciones configurando KeyboardNavigation.IsTabStop en el elemento en XAML.

KeyboardNavigation.IsTabStop="False" 

Puede configurar un disparador que alternar esta propiedad en función del estado expandido.

+0

También puede Focusable = "False", que lo elimina del enfoque del teclado y del orden de las pestañas. –

+1

@Geoff Hice esto con un montón de botones y no funcionó, solo fyi. – ToastyMallows

-9

También .NET 3.0 tiene una clase que establece automáticamente el orden de las pestañas y puede anularlo en función de las secciones de su formulario.

(new TabOrderManager(this)).SetTabOrder(TabOrderManager.TabScheme.AcrossFirst); 
+11

¿El TabOrderManager no es solo una clase de Windows Forms? – Krimson

+6

No funciona en WPF. – theMayer

+2

Esta es una pregunta de WPF, no de Windows Forms. – Martin

78

Si desea establecer explícitamente el orden de tabulación de los elementos en su formulario, el siguiente bien embargado se supone para ayudar:

<Control KeyboardNavigation.TabIndex="0" ... /> 

Digo "supuestamente para ayudar", ya que no tengo Lo encontré muy confiable aunque probablemente necesite leer más sobre cómo se debe usar. Solo publico esta respuesta medio horneada porque nadie más mencionó esta propiedad.


Tenga en cuenta que en Win RT, la propiedad es solo TabIndex="0".

+10

El truco es usar TabIndex con varios valores de KeyboardNavigation.TabNavigation en el elemento padre. Me encuentro usando TabNavigation "Local" con más frecuencia. :) –

+0

Tuve que agregar esto a cada uno de mis controles, en lugar de solo agregarlos a los diferentes StackPanels que alojan dichos controles. –

+0

Me parece que la configuración '' ayuda a ordenar el punto de entrada de los paneles de nivel superior. – avenmore

22

<Control KeyboardNavigation.TabIndex="0" ... /> funciona perfectamente bien ... por ejemplo-

<ComboBox Height="23" 
      Margin="148,24,78,0" 
      Name="comboBoxDataSet" 
      VerticalAlignment="Top" 
      SelectionChanged="comboBoxDestMarketDataSet_SelectionChanged" 
      DropDownOpened="comboBoxDestMarketDataSet_DropDownOpened" 
      KeyboardNavigation.TabIndex="0" /> 
<ComboBox Height="23" 
      Margin="148,56,78,0" 
      Name="comboBoxCategory" 
      VerticalAlignment="Top" 
      SelectionChanged="comboBoxDestCategory_SelectionChanged" 
      DropDownOpened="comboBoxDestCategory_DropDownOpened" 
      KeyboardNavigation.TabIndex="1" /> 

Le permitirá navegar a través de estos dos cuadros combinados utilizando tecla TAB.

9

Creo que hay una solución mucho más fácil aquí, en la parte superior dentro de su control o ventana o lo que sea, se podría añadir:

KeyboardNavigation.TabNavigation="Cycle" 

Esto también hace caso omiso de las pestañas de forma automática colapsadas.

4

Otra alternativa que me ha funcionado en el pasado es simplemente eliminar todas las declaraciones TabIndex explícitas, y dejar que los controles usen el orden en que se declaran en XAML para que funcionen de manera mágica.

Esto, por supuesto, puede requerir que reordene sus controles. Pero esta es una operación simple de copiar y pegar.

Cuestiones relacionadas