是否可以在StackPanel中 Package 内容?我知道我们可以使用WrapPanel来代替,但是由于代码修改的原因,我必须使用StackPanel。那么,有没有办法让项目在一个StackPanel Package 后,说5个项目...谢谢!
StackPanel
WrapPanel
hmtdttj41#
对我来说,一个简单的WrapPanel就足够了:
<WrapPanel Orientation="Horizontal" Width="500" />
不在StackPanel或任何其他容器中。在某些情况下,将Width设置为常数值可能上级,因为将其绑定到ActualWidth可以防止缩小 (例如,当父控件缩小时,WrapPanel不会缩小)
4bbkushb2#
创建包含所需项目数的嵌套StackPanel。在下面的示例中,您有两行,分别由<StackPanel Orientation="Horizontal">元素占据,而每行又包含五个项目,这些项目将水平显示在彼此旁边。
<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>
mbskvtky3#
<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>
f87krz0w4#
根据您的场景,您可以使用UniformGrid。也可以找到here的一些示例。您可以定义它在5个项目后换行,如下图所示。
<UniformGrid Columns="5"> <Button /> <Button /> <Button /> </UniformGrid>
每个项目将,但是得到完全相同的宽度,所以不确定这是否会为您工作。
iszxjhcz5#
我不认为没有wrap面板就能做到这一点。也许你可以尝试在stack面板里面放一个wrapPanel--把它的宽度设置为stack面板的实际宽度。你可以像Width="{Binding ActualWidth, ElementName=StackPanel1}"一样绑定它但这将只是一个黑客-我认为 Package 面板是最适合您的需要。
Width="{Binding ActualWidth, ElementName=StackPanel1}"
8ftvxx2r6#
我在按钮上放了一个stackpanel,它不会影响按钮的背景,然后在VB代码中我用了Chr(12)来表示换行符:
Chr(12)
Button1.Content = "first line" + Chr(12) + "second line"
可以使用Chr(12)添加更多行。
yhived7q7#
对我来说,这是最好的和最简单的解决方案。设置ItemsPanel属性。
<ItemsControl> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation="Horizontal" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl>
7条答案
按热度按时间hmtdttj41#
对我来说,一个简单的
WrapPanel
就足够了:不在
StackPanel
或任何其他容器中。在某些情况下,将Width设置为常数值可能上级,因为将其绑定到ActualWidth可以防止缩小 (例如,当父控件缩小时,WrapPanel不会缩小)4bbkushb2#
创建包含所需项目数的嵌套
StackPanel
。在下面的示例中,您有两行,分别由
<StackPanel Orientation="Horizontal">
元素占据,而每行又包含五个项目,这些项目将水平显示在彼此旁边。mbskvtky3#
f87krz0w4#
根据您的场景,您可以使用UniformGrid。也可以找到here的一些示例。
您可以定义它在5个项目后换行,如下图所示。
每个项目将,但是得到完全相同的宽度,所以不确定这是否会为您工作。
iszxjhcz5#
我不认为没有wrap面板就能做到这一点。也许你可以尝试在stack面板里面放一个wrapPanel--把它的宽度设置为stack面板的实际宽度。你可以像
Width="{Binding ActualWidth, ElementName=StackPanel1}"
一样绑定它但这将只是一个黑客-我认为 Package 面板是最适合您的需要。
8ftvxx2r6#
我在按钮上放了一个stackpanel,它不会影响按钮的背景,然后在VB代码中我用了
Chr(12)
来表示换行符:可以使用
Chr(12)
添加更多行。yhived7q7#
对我来说,这是最好的和最简单的解决方案。设置ItemsPanel属性。