Tengo una DockPanel estableció en el DataTemplate de ItemsControl de la siguiente manera:DockPanel orden de tabulación
<ItemsControl HorizontalContentAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<ComboBox DockPanel.Dock="Left"/>
<ComboBox DockPanel.Dock="Left"/>
<Button DockPanel.Dock="Right">Button</Button>
<!-- This will appear before the button...it has to go after it in the XAML so it will fill properly in the DockPanel -->
<TextBox DockPanel.Dock="Left" MinWidth="100" HorizontalAlignment="Stretch"/>
</DockPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
quiero que el cuadro de texto para llenar todo el espacio que queda entre los cuadros combinados y el botón. Tuve que poner el cuadro de texto al final en XAML porque DockPanel solo ocupará el último hijo. Se ve genial; sin embargo, el orden de las pestañas ahora está arruinado. Ahora pestañas combobox-combobox-button-textbox en lugar de combobox-combobox-textbox-button.
He intentado usar KeyboardNavigation.TabIndex
propiedades en cada elemento, pero dado que esto es un DataTemplate para un ItemsControl (cada uno de estos dockpanels será para un elemento separado), el orden de tabulación salta verticalmente hacia abajo en cada cuadro combinado de los elementos. luego verticalmente hacia abajo cada cuadro de texto, luego hacia abajo verticalmente cada botón, en lugar del comportamiento deseado de ir a través de cada fila, luego hacia abajo.
Ejemplo UI:
[Combo11] [Combo12] [Text1] [Button1]
[Combo21] [Combo22] [Text2] [Button2]
En el estado actual de las cosas, va Combo11,Combo12,Button1,Text1,Combo21,Combo22,Button2,Text2
. Si agrego las propiedades de TabOrder, va al Combo11,Combo21,Combo12,Combo22,Text1,Text2,Button1,Button2
.
me gustaría que vaya Combo11,Combo12,Text1,Button1,Combo21,Combo22,Text2,Button2
.
¿Alguien tiene alguna idea sobre cómo resolver este problema de interfaz de usuario?
Eso funcionó muy bien ... y tengo que preguntar, ¿por qué el primer cuadro combinado no tiene un número de columna? ¿Significa eso que se asigna automáticamente a la columna # 0? Y muchas gracias por la sugerencia de SharedSizeGroup: ¡no tenía ni idea de qué buscar! (p.s. has olvidado/en Grid.ColumnDefinitions>) – NickAldwin
Podría tener un Grid.Column = "0" - pero 0 es el valor predeterminado - y soy perezoso :-). Sí, SharedSizeGroup es una especie de joya escondida. Actualicé mi ejemplo para otros. – Goblin
Bah, no se pudo conseguir que SharedSizeGroup funcione correctamente, probablemente debido al tamaño en estrella de la tercera columna. :( – NickAldwin