WPF:如何使控件在StackPanel中自适应?

24

当将滑块和其他控件放在StackPanel中时,它们不会拉伸以填充可用空间;相反,宽度始终为MinWidth(如果未设置MinWidth,则约为10像素)。如何使其拉伸(相当于WinForms中的Anchor.Left | Anchor.Right)?例如:

<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
请参见:http://stackoverflow.com/a/38923924/948700 - Dvor_nik
1个回答

43
你需要使用 DockPanel:

你需要使用 DockPanel:

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

DockPanel可以提供您所需的"Anchor"功能,StackPanel只是将元素堆叠在一起。

从您的代码块中我可以看到您的StackPanel已经被停靠在DockPanel内部,因此我在我的代码示例中也包含了相同的停靠属性。


如果在StackPanel中,第一个和最后一个应该有固定的大小,而中间的应该是可伸缩的,那该怎么办呢?唯一使用DockPanel的方法似乎是属性“LastChildFill”。 - Matthias Pospiech
您不必按照它们的出现顺序将项目插入到 DockPanel 中。 - SamiHuutoniemi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接