2009-05-06 8 views
21

Un dispositivo di scorrimento e alcuni altri controlli non si estenderanno per riempire lo spazio disponibile quando sono posizionati in uno StackPanel; invece la larghezza è sempre MinWidth (o circa 10 pixel se MinWidth non è impostato). Come faccio a farlo allungare (l'equivalente di Anchor.Left | Anchor.Right in WinForms)? Esempio:WPF: come rendere estesi i controlli in uno 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

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

risposta

38

Volete DockPanel invece:

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

DockPanel si ottiene la funzionalità "ancoraggio" che si desidera. StackPanel semplicemente impila cose l'una accanto all'altra.

Dal blocco di codice ho notato che lo StackPanel è già inserito in un dockpanel, quindi ho incluso lo stesso attributo di aggancio nel mio esempio di codice sopra riportato.

+0

Cosa succede se in StackPanel il primo e l'ultimo devono avere una dimensione fissa e quella centrale deve essere estensibile? L'unico uso di un DockPanel sembra essere la proprietà 'LastChildFill'. –

+0

Non è necessario inserire elementi nel DockPanel nell'ordine in cui appaiono. – SamiHuutoniemi