繁体   English   中英

在 StackPanel 中包装内容 wpf

[英]wrapping content in a StackPanel wpf

是否可以将内容包装在StackPanel中?

我知道我们可以改用WrapPanel 但是出于修改代码的原因,我必须使用StackPanel

那么,有没有办法让StackPanel中的物品在说 5 件物品后包装......谢谢!

对我来说,一个简单的WrapPanel工作正常:

<WrapPanel Orientation="Horizontal" Width="500" />

不在StackPanel或任何其他容器内。 在某些情况下,将Width设置为常量值可能会更好,因为将其绑定到ActualWidth可以防止缩小大小(例如,当父控件缩小时,WrapPanel不会)

创建包含所需项目数的嵌套StackPanel

在下面的示例中,您有两行,分别由<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)添加更多行。

对我来说,这是最好和最简单的解决方案。 设置 ItemsPanel 属性。

    <ItemsControl>
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

    </ItemsControl>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM