是否可以将内容包装在一个中StackPanel
?
我知道我们可以使用 aWrapPanel
来代替。但是出于修改代码的原因,我必须使用StackPanel
.
那么,有没有办法StackPanel
在说 5 件物品后将物品包装起来......谢谢!
是否可以将内容包装在一个中StackPanel
?
我知道我们可以使用 aWrapPanel
来代替。但是出于修改代码的原因,我必须使用StackPanel
.
那么,有没有办法StackPanel
在说 5 件物品后将物品包装起来......谢谢!
对我来说,一个简单的WrapPanel
作品就好了:
<WrapPanel Orientation="Horizontal" Width="500" />
不在一个StackPanel
或任何其他容器内。在某些情况下,将Width设置为常数值可能会更好,因为将其绑定到ActualWidth可以防止缩小尺寸(例如,当父控件缩小尺寸时,WrapPanel 不会)
StackPanel
创建包含所需数量项目的嵌套s。
在下面的示例中,您有两行,分别由元素占据<StackPanel Orientation="Horizontal">
,而每行又包含五个项目,这些项目将水平并排显示。
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Item1 />
<Item2 />
<Item3 />
<Item4 />
<Item5 />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Item1 />
<Item2 />
<Item3 />
<Item4 />
<Item5 />
</StackPanel>
</StackPanel>
<StackPanel>
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type StackPanel}">
<WrapPanel/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Style>
</StackPanel>
根据您的情况,您可以使用UniformGrid。也可以在此处找到一些示例。
您可以将其定义为像这样在 5 个项目之后包装。
<UniformGrid Columns="5">
<Button />
<Button />
<Button />
</UniformGrid>
但是,每个项目将获得完全相同的宽度,因此不确定这是否适合您。
我认为没有包装面板就无法做到这一点。也许您可以尝试在堆栈面板中放置一个 wrapPanel - 将其宽度设置为堆栈面板的实际宽度。你可以像这样绑定它Width="{Binding ActualWidth, ElementName=StackPanel1}"
但这只是一个技巧 - 我认为包装面板最适合您的需求。
我在按钮上放了一个堆栈面板。它不会影响按钮背景。然后在我使用的 VB 代码中Chr(12)
,表示换行:
Button1.Content = "first line" + Chr(12) + "second line"
您可以使用添加更多行Chr(12)
。