En una ventana que tengo hay una lista de DockPanel
s para especificar un par de archivos. Cada DockPanel tiene un TextBox (para la ruta) y un botón (para buscar un archivo).WPF Dockpanel primer hijo utiliza el espacio restante
He recreado una simple página de WPF a demostrate el problema aquí:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="150"
Height="22">
<DockPanel>
<TextBox HorizontalAlignment="Stretch"/> <!-- path to file -->
<Button Content="..." DockPanel.Dock="Right"/> <!-- button to browse for file -->
</DockPanel>
</Page>
El problema es que quiero el botón a la derecha de la caja de texto, sino que hace que el cuadro de texto a ser muy pequeño, ya LastChild of DockPanel es el botón que usa en el espacio restante. He intentado cambiar esto al mezclarlos y configurar LastChildFill="False"
, pero eso solo hace que el botón vuelva a ser pequeño, sin hacer que el TextBox sea ancho (incluso con HorizontalAlignment="Stretch"
).
La razón por la que deseo que los controles estén en ese orden es que quiero que el usuario llegue al cuadro de texto antes del botón cuando usa tab
para navegar por la ventana. Analicé el ajuste TabIndex
, pero las características favoritas de WPF son que los tabindex están en el orden en que se definen las conexiones en el XAML. Sin mencionar que probablemente tendría que configurar manualmente TabIndex en todo en la ventana.
Para mí, parece que la configuración de TextBox.HorizontalAlignment no se respeta. ¿Cómo puedo hacer que el primer control use tanto espacio como pueda pero aún así conservar el orden de las pestañas?
+1, ya que no tiene problema TabOrder. Si alguien quiere evitar escribir ColumnDefinitions en escenarios tan simples, eche un vistazo a esta solución: http://rachel53461.wordpress.com/2011/09/17/wpf-grids-rowcolumn-count-properties/ – surfen