WPF:如何使控件在 StackPanel 中拉伸?

Posted

技术标签:

【中文标题】WPF:如何使控件在 StackPanel 中拉伸?【英文标题】:WPF: How to make controls stretch in a StackPanel? 【发布时间】:2010-10-24 08:25:09 【问题描述】:

当放置在 StackPanel 中时,Slider 和其他一些控件不会拉伸以填充可用空间;相反,宽度始终为 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>

【问题讨论】:

见:***.com/a/38923924/948700 【参考方案1】:

你想要 DockPanel 代替:

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

DockPanel 为您提供所需的“锚”功能。 StackPanel 只是将事物彼此相邻堆叠。

我从您的代码块中注意到您的 StackPanel 已经停靠在停靠面板中,因此我在上面的代码示例中包含了相同的停靠属性。

【讨论】:

如果在 StackPanel 中第一个和最后一个应该有固定的大小,而中间的应该是可拉伸的怎么办? DockPanel 的唯一用途似乎是属性LastChildFill 您不必按照项目出现的顺序将项目插入 DockPanel。

以上是关于WPF:如何使控件在 StackPanel 中拉伸?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 如何让 Viewbox 从 StackPanel 中了解其可用空间

UWP ItemsControl 内容不像 WPF 中那样拉伸

2021-08-16 WPF控件专题 StackPanel 控件详解

如何将 WPF 选项卡项标题拉伸到父控件宽度

2021-08-16 WPF控件专题 WrapPanel 控件详解

网格和stackpanel之间的WPF组合