2009-05-06 18 views
21

Un control deslizante y algunos otros controles no se estirarán para llenar el espacio disponible cuando se colocan en un StackPanel; en cambio, el ancho siempre es MinWidth (o aproximadamente 10 píxeles si MinWidth no está configurado). ¿Cómo lo hago estirar (el equivalente de Anchor.Left | Anchor.Right en WinForms)? Ejemplo:WPF: ¿Cómo hacer que los controles se alarguen en un StackPanel?

<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal"> 
    <Slider Value="14" SmallChange="0.5" Maximum="100" Minimum="4" 
      x:Name="FontSize" MinWidth="30" LargeChange="2" 
      TickFrequency="10" TickPlacement="TopLeft" 
      HorizontalAlignment="Stretch"/> 
    <TextBlock Margin="8" Text="{Binding ElementName=FontSize, Path=Value}" 
       VerticalAlignment="Center"/> 
</StackPanel> 
+1

Ver: http://stackoverflow.com/a/38923924/948700 –

Respuesta

38

¿Quieres DockPanel lugar:

<DockPanel DockPanel.Dock="Bottom" LastChildFill="True"> 
    <TextBlock DockPanel.Dock="Right" ... /> 
    <Slider ... /> 
</DockPanel> 

DockPanel le consigue la funcionalidad "ancla" que desea. StackPanel simplemente apila cosas una al lado de la otra.

Observo desde su bloque de código que su StackPanel ya está acoplado dentro de un panel portuario, por lo que he incluido el mismo atributo de acoplamiento en el ejemplo de código anterior.

+0

¿Qué pasa si en StackPanel el primero y el último deben tener un tamaño fijo y el del medio debe ser elástico? El único uso de un DockPanel parece ser la propiedad 'LastChildFill'. –

+0

No tiene que insertar elementos en DockPanel en el orden en que aparecen. – SamiHuutoniemi

Cuestiones relacionadas