在StackPanel wpf中换行内容

yquaqz18  于 2023-02-05  发布在  其他
关注(0)|答案(7)|浏览(343)

是否可以在StackPanel中 Package 内容?
我知道我们可以使用WrapPanel来代替,但是由于代码修改的原因,我必须使用StackPanel
那么,有没有办法让项目在一个StackPanel Package 后,说5个项目...谢谢!

hmtdttj4

hmtdttj41#

对我来说,一个简单的WrapPanel就足够了:

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

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

4bbkushb

4bbkushb2#

创建包含所需项目数的嵌套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>
mbskvtky

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

f87krz0w4#

根据您的场景,您可以使用UniformGrid。也可以找到here的一些示例。
您可以定义它在5个项目后换行,如下图所示。

<UniformGrid Columns="5">
 <Button />
 <Button />
 <Button />
</UniformGrid>

每个项目将,但是得到完全相同的宽度,所以不确定这是否会为您工作。

iszxjhcz

iszxjhcz5#

我不认为没有wrap面板就能做到这一点。也许你可以尝试在stack面板里面放一个wrapPanel--把它的宽度设置为stack面板的实际宽度。你可以像Width="{Binding ActualWidth, ElementName=StackPanel1}"一样绑定它
但这将只是一个黑客-我认为 Package 面板是最适合您的需要。

8ftvxx2r

8ftvxx2r6#

我在按钮上放了一个stackpanel,它不会影响按钮的背景,然后在VB代码中我用了Chr(12)来表示换行符:

Button1.Content = "first line" + Chr(12) + "second line"

可以使用Chr(12)添加更多行。

yhived7q

yhived7q7#

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

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

    </ItemsControl>

相关问题