2009-05-06 7 views
21

Ein Slider und einige andere Steuerelemente werden nicht erweitert, um den verfügbaren Platz zu füllen, wenn sie in einem StackPanel platziert werden. stattdessen ist die Breite immer MinWidth (oder ungefähr 10 Pixel, wenn MinWidth nicht gesetzt ist). Wie mache ich es dehnbar (das Äquivalent von Anchor.Left | Anchor.Right in WinForms)? Beispiel:WPF: Wie können Steuerelemente in einem StackPanel gedehnt werden?

<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

Siehe: http://Stackoverflow.com/a/38923924/948700 –

Antwort

38

Sie wollen DockPanel statt:

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

DockPanel bekommt man die "Anchor" Funktionalität, die Sie wollen. StackPanel stapelt einfach Dinge nebeneinander.

Ich merke von Ihrem Codeblock, dass Ihr StackPanel bereits in einem Dockpanel angedockt ist, also habe ich das gleiche Docking-Attribut in mein Codebeispiel oben eingefügt.

+0

Was ist, wenn in StackPanel die erste und die letzte eine feste Größe haben sollte und die mittlere sollte dehnbar sein? Die einzige Verwendung eines DockPanels scheint die Eigenschaft 'LastChildFill' zu sein. –

+0

Sie müssen keine Elemente in der Reihenfolge, in der sie angezeigt werden, in das DockPanel einfügen. – SamiHuutoniemi