use*_*434 16 c# wpf wpf-controls
是否有可能将内容包装成StackPanel
?
我知道我们可以使用一个WrapPanel
代替.但是出于代码修改的原因,我必须使用a StackPanel
.
那么,有没有办法StackPanel
在说出5件物品后把物品包起来......谢谢!
byt*_*e77 14
对我来说,一个简单的WrapPanel
工作就好了:
<WrapPanel Orientation="Horizontal" Width="500" />
Run Code Online (Sandbox Code Playgroud)
不在一个StackPanel
或任何其他容器内.在某些情况下,将Width设置为常量值可能会更好,因为将其绑定到ActualWidth可以防止缩小大小(例如,当父控件缩小时,WrapPanel不会)
Dou*_*las 13
创建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>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
根据您的情况,您可以使用UniformGrid。一些示例也可以在这里找到。
您可以将其定义为在 5 个这样的项目之后换行。
<UniformGrid Columns="5">
<Button />
<Button />
<Button />
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)
但是,每个项目都将获得完全相同的宽度,因此不确定这是否适合您。