将内容包装在StackPanel中

时间:2012-04-13 18:35:13

标签: c# wpf wpf-controls

是否可以将内容包装在StackPanel

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

那么,有没有办法在说出5个项目之后在StackPanel包装中制作物品...... 谢谢!

6 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:13)

对我来说,一个简单的<WrapPanel Orientation="Horizontal" Width="500" /> 可以正常工作:

StackPanel

不在<!DOCTYPE html> <html> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.0.272/jspdf.debug.js"></script> <body> <p id="to-pdf">HTML content...</p> </body> <script> var pdf = new jsPDF('p', 'pt', 'a4'); var pdfFile; pdf.addHTML(document.body, function() { console.log(pdf); var pdfBlob = pdf.output('blob'); var fileURL = URL.createObjectURL(pdfBlob); window.open(fileURL); }); </script> </html> 或任何其他容器内。在某些情况下,将宽度设置为常量值可能会更好,因为将其绑定到 ActualWidth 可以防止缩小(例如,当父控件缩小时) ,WrapPanel不是)

答案 2 :(得分: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>

答案 3 :(得分:4)

根据您的情况,您可以使用UniformGrid。还可以找到一些示例here

您可以将其定义为包含5个这样的项目。

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

然而,每个项目的宽度都相同,所以不确定这是否适合你。

答案 4 :(得分:0)

我不认为没有包装面板就可以做到。也许你可以尝试将一个wrapPanel放在堆栈面板中 - 将其宽度设置为堆栈面板的实际宽度。您可以像Width="{Binding ActualWidth, ElementName=StackPanel1}"

一样绑定它

但这只是一个黑客 - 我认为包装面板最适合您的需求。

答案 5 :(得分:0)

我在按钮上放了一块面板。它不会影响按钮背景。然后,在VB代码我用Chr(12),以指示线饲料:

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

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