Tengo una ventana bastante mínima definida en XAML. Desafortunadamente, la StatusBar de estado solo ocupa la mitad del ancho y no se extiende por todo el ancho de la ventana.
¿Por qué es eso / cómo lo soluciono?
<Window x:Class="TheProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:TheProject" mc:Ignorable="d" Title="MainWindow" Height="450" Width="771.382"> <DockPanel Margin="0,0,0,0" LastChildFill="False"> <Button Content="Button" HorizontalAlignment="Left" Margin="289,127,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> <StatusBar DockPanel.Dock="Bottom" Height="21"> <StatusBarItem x:Name="actionStatus" Content="StatusBarItem"/> </StatusBar> </DockPanel> </Window>El valor predeterminado de la propiedad DockPanel.Dock es Left . Es por eso que su Button (que viene primero en el marcado) se alinea a la izquierda y luego el espacio restante a la derecha se usa para alinear los otros controles. Dado que asigna Bottom a la StatusBar de estado (que viene en segundo lugar), se alineará en la parte inferior del espacio restante. El orden de los controles es importante en un DockPanel .
Puede probar esto cambiando el orden de los controles, lo que alineará primero la StatusBar de estado.
<DockPanel Margin="0,0,0,0" LastChildFill="False"> <StatusBar DockPanel.Dock="Bottom" Height="21"> <StatusBarItem x:Name="actionStatus" Content="StatusBarItem"/> </StatusBar> <Button Content="Button" HorizontalAlignment="Left" Margin="289,127,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> </DockPanel> Otro enfoque es establecer la propiedad Dock en el Button en la parte Top , lo que lo alinea en la parte superior y deja el espacio restante debajo , lo que también alineará la StatusBar de estado a la derecha.
<DockPanel Margin="0,0,0,0" LastChildFill="False"> <Button DockPanel.Dock="Top" Content="Button" HorizontalAlignment="Left" Margin="289,127,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/> <StatusBar DockPanel.Dock="Bottom" Height="21"> <StatusBarItem x:Name="actionStatus" Content="StatusBarItem"/> </StatusBar> </DockPanel> Solo como una nota, también hay otras opciones, como eliminar LastChildFill="False" y definir el botón en último lugar, pero eso realmente depende de sus requisitos. Lo importante que hay que entender es cómo DockPanel divide el espacio y en qué orden, mira esto como referencia:
La posición de los elementos secundarios de un
DockPanelen la pantalla está determinada por la propiedadDockde los elementos secundarios respectivos y el orden relativo de esos elementos secundarios en elDockPanel. Por lo tanto, un conjunto de elementos secundarios con los mismos valores de propiedadDockse pueden colocar de manera diferente en la pantalla según el orden de estos elementos secundarios enDockPanel. El ordenamiento secundario afecta el posicionamiento porque elDockPanelitera a través de sus elementos secundarios en orden, estableciendo la posición de cada elemento según el espacio restante .