C# 在StackPanel wpf中包装内容

C# 在StackPanel wpf中包装内容,c#,wpf,wpf-controls,C#,Wpf,Wpf Controls,是否可以将内容包装在堆叠面板中 我知道我们可以使用WrapPanel。 但是由于代码修改的原因,我必须使用堆栈面板 那么,有没有一种方法可以让堆栈面板中的项目在5个项目之后进行包装。。。 谢谢 创建嵌套的StackPanels,其中包含所需数量的项目 在下面的示例中,您有两行,分别由元素占据,每个元素依次包含五个项目,这些项目将水平显示在彼此旁边 <StackPanel Orientation="Vertical"> <StackPanel Orientation="H

是否可以将内容包装在
堆叠面板中

我知道我们可以使用
WrapPanel
。 但是由于代码修改的原因,我必须使用
堆栈面板

那么,有没有一种方法可以让
堆栈面板中的项目在5个项目之后进行包装。。。

谢谢

创建嵌套的
StackPanel
s,其中包含所需数量的项目

在下面的示例中,您有两行,分别由
元素占据,每个元素依次包含五个项目,这些项目将水平显示在彼此旁边

<StackPanel Orientation="Vertical">
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
    <StackPanel Orientation="Horizontal">
        <Item1 />
        <Item2 />
        <Item3 />
        <Item4 />
        <Item5 />
    </StackPanel>
</StackPanel>

根据您的场景,您可以使用。也可以找到一些例子

您可以将其定义为在5项之后换行,如下所示

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


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

我认为如果没有包装面板,您无法完成这项工作。也许您可以尝试在堆栈面板内放置一个wrapPanel-将其宽度设置为堆栈面板的实际宽度。您可以像
Width=“{Binding ActualWidth,ElementName=StackPanel1}”那样绑定它

但这只是一个小技巧-我认为wrap面板最适合您的需要。


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

对我来说,一个简单的
包装就可以了:

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


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

我在按钮上方放置了一个堆栈面板。它不会影响按钮背景。然后在VB代码中,我使用了
Chr(12)
,表示换行:

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

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

为什么你必须使用
堆叠面板
而不是
包裹面板
?我们已经定制了堆叠面板的某些功能。因此,我们的堆叠面板支持我们自己的虚拟化。我不想重新发明虚拟包裹面板的轮子。:)我听到了,里奇。。但是,很难说为什么在没有任何上下文的情况下坚持保留stackPanel!就这样!这是一种(StackPanel),WrapPanel是一种内部癌症!这是严重的吗?这非常适合于没有固定数量的每行项目=)