2009-05-06 12 views
21

Suwak i inne elementy sterujące nie rozciągają się, aby wypełnić dostępne miejsce po umieszczeniu w StackPanel; zamiast tego szerokość zawsze wynosi MinWidth (lub około 10 pikseli, jeśli nie ustawiono MinWidth). Jak mogę go rozciągnąć (odpowiednik Anchor.Left | Anchor.Right w WinForms)? Przykład:WPF: Jak rozłożyć elementy sterujące w 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

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

Odpowiedz

38

Chcesz DockPanel Zamiast:

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

DockPanel dostaje się "kotwicy" funkcjonalność chcesz. StackPanel po prostu układa rzeczy obok siebie.

Z bloku kodu widzę, że twój StackPanel jest już zadokowany wewnątrz panelu pomocniczego, więc dodałem ten sam atrybut do dokowania w powyższym przykładzie kodu.

+0

Co jeśli w StackPanel pierwszy i ostatni powinien mieć stały rozmiar, a środkowy powinien być rozciągliwy? Jedynym zastosowaniem DockPanel wydaje się być właściwość 'LastChildFill'. –

+0

Nie musisz wstawiać elementów do panelu DockPanel w kolejności, w jakiej się pojawiają. – SamiHuutoniemi