2009-05-06 7 views
21

Un curseur et d'autres contrôles ne s'étirent pas pour remplir l'espace disponible lorsqu'ils sont placés dans un StackPanel; à la place, la largeur est toujours MinWidth (ou environ 10 pixels si MinWidth n'est pas défini). Comment puis-je l'étirer (l'équivalent de Anchor.Left | Anchor.Right dans WinForms)? Exemple:WPF: comment étendre les contrôles dans 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

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

Répondre

38

Vous voulez DockPanel à la place:

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

DockPanel vous obtient la fonctionnalité "Anchor" vous voulez. StackPanel empile simplement les choses les unes à côté des autres.

Je remarque dans votre bloc de code que votre StackPanel est déjà ancré dans un dockpanel, j'ai donc inclus le même attribut d'ancrage dans mon exemple de code ci-dessus.

+0

Que faire si dans StackPanel le premier et le dernier devrait avoir une taille fixe et le milieu devrait être extensible? La seule utilisation d'un DockPanel semble être la propriété 'LastChildFill'. –

+0

Il n'est pas nécessaire d'insérer des éléments dans le DockPanel dans l'ordre dans lequel ils apparaissent. – SamiHuutoniemi

Questions connexes