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 控件详解