将内容包装在StackPanel中

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)


den*_*zov 9

<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)

  • LOLZ.这让我很恼火. (10认同)
  • :)我听到你了,Ritch!..但是,很难说为什么在问题中没有任何上下文的情况下保持stackPanel有这样的坚持!那有!这是一个使用WrapPanel作为内部癌症的typeof(StackPanel)! (4认同)

shr*_*iek 6

根据您的情况,您可以使用UniformGrid。一些示例也可以在这里找到。

您可以将其定义为在 5 个这样的项目之后换行。

<UniformGrid Columns="5">
 <Button />
 <Button />
 <Button />
</UniformGrid>
Run Code Online (Sandbox Code Playgroud)

但是,每个项目都将获得完全相同的宽度,因此不确定这是否适合您。