El equivalente de WPF WinForms DockStyle.Fill es:
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Este es el valor por defecto para casi controles, por lo , en general, usted no tiene que hacer nada para tener un control WPF llene su contenedor principal: Lo hacen de forma automática. Esto es cierto para todos los contenedores que no exprimen a sus hijos al tamaño mínimo.
errores comunes
Ahora voy a explicar algunos errores comunes que impiden HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
de trabajar como se esperaba.
1. explícita alto o ancho
Un error común es especificar explícitamente una anchura o altura para un control. Así que si usted tiene esto:
<Grid>
<Button Content="Why am I not filling the window?" Width="200" Height="20" />
...
</Grid>
Basta con retirar la atributos de anchura y altura:
<Grid>
<Button Content="Ahhh... problem solved" />
...
</Grid>
2. panel que contiene aprieta control al mínimo
Otro error común es tener la que contiene el panel apretando tu control tan fuerte como sea posible.Por ejemplo, un StackPanel vertical, siempre va a exprimir su contenido verticalmente tan pequeño como van a ir:
<StackPanel>
<Button Content="Why am I squished flat?" />
</StackPanel>
cambio a otro panel y usted será bueno para ir:
<DockPanel>
<Button Content="I am no longer squished." />
</DockPanel>
Además, cualquier fila de la cuadrícula o la columna cuya altura es "Auto" comprimirá su contenido de manera similar en esa dirección.
Algunos ejemplos de envases que no aprieten sus hijos son:
- ContentControls No presionar a sus hijos (esto incluye Frontera, Button, CheckBox ScrollViewer, y muchos otros)
- cuadrícula con una sola fila y columna
- cuadrícula con "*" filas y columnas de tamaño
- DockPanel no exprime su último hijo
- TabControl no exprimir su contenido
Algunos ejemplos de envases que exprimir sus hijos son:
- StackPanel se contrae en su dirección de orientación
- cuadrícula con un "Auto" fila de tamaño o columna aprieta en esa dirección
- DockPanel aprieta todo menos su último hijo en su dirección de base
- TabControl comprime su encabezado (lo que se muestra en la pestaña)
3. Altura explícita o Ancho más lejos
Es sorprendente cuántas veces veo cuadrícula o DockPanel les da la altura y la anchura explícita, así:
<Grid Width="200" Height="100">
<Button Content="I am unnecessarily constrainted by my containing panel" />
</Grid>
En general nunca se quiere otorgar a cualquier Panel un Alto o Ancho explícito. Mi primer paso al diagnosticar problemas de diseño es eliminar cada alto o ancho explícito que puedo encontrar.
4. Ventana es SizeToContent cuando no debería ser
Cuando se utiliza SizeToContent, su contenido será extraída al mínimo. En muchas aplicaciones, esto es muy útil y es la elección correcta. Pero si su contenido no tiene un tamaño "natural", es probable que desee omitir SizeToContent.
Dejé una [pregunta relacionada con el diseño nuevo] bastante compleja aquí (http://stackoverflow.com/questions/3326623/multiple-grid-layout-wpf). Después de leer tu respuesta, estoy pensando que puedes resolverlo. Cheers – Berryl
¡Excelente respuesta! Ojalá pudiera darte puntos de bonificación de alguna manera. :) –
@Jim Raden: Puede agregar una recompensa a esta pregunta y asignar los puntos a Ray Burns;) – citronas