tramo de alineación WPF
-
11-09-2019 - |
Pregunta
Puede alguien ayudarme a entender la alineación tramo de WPF. A menudo me encuentro con problemas en el que necesito un control para rellenar un área, pero nunca entiendo de qué nivel debería poner el VerticalAlignment = "estiramiento". Especialmente cuando se trata de UserControls.
Siempre a resolver el problema al tratar cosas diferentes o poner estiramiento en todos los niveles, pero me gustaría saber cómo hacerlo correctamente.
Vamos a tomar el ejemplo que tengo ahora:
- Tengo una rejilla con una célula de tamaño fijo (que se puede cambiar de tamaño con un GridSplitter)
- En esta célula tengo un control de usuario que contiene un StackPanel con un TabControl
- En el TabControl tengo TabItems que contiene otro UserControl con un ListView
O en una especie de seudo XAML
<ns:MyUserControl1 Grid.Row="0" Grid.Column="0">
<!-- this is in MyUserControl1 -->
<StackPanel>
<TabControl>
<TabItem>
<ns:MyUserControl2>
<!-- This is in MyUserControl2 -->
<ListView/>
</ns:MyUserControl2>
</TabItem>
</TabControl>
</StackPanel>
</ns:MyUserControl>
Ahora quiero ListView para llenar toda la celda de la cuadrícula (excluyendo el TabControl y los márgenes, por supuesto).
Solución
Su ListView llenará su MyUserControl2 - si quieres que esto encaja dentro de todo el Tab, que necesita para asegurarse de quitar las restricciones altura y anchura dentro del archivo XAML del control de usuario (estos serán por defecto a 300 cada uno)
Edit: Disculpas - me salté la parte importante de su xaml ... El contenedor MyUserControl1 es un StackPanel ... esto va a apilar los controles secundarios y cambiar el tamaño para adaptarse a ellos; Si se reemplaza con un DockPanel (o una rejilla), los controles secundarios llenarán el espacio disponible y le dará el resultado que está después ...
Tener un vistazo a este MSDN artículo ... Esperanza esto ayuda:)