Stackpanel中的水平方向,Stackpanel宽度末尾的新行

时间:2015-03-25 15:14:01

标签: c# wpf xaml stackpanel

我们假设我们有一个水平方向的Stackpanel,宽度为100px。

在里面我制作了11个宽度为10像素的方形画布。

这意味着最后一个方块将位于视图之外,因为它将扩展stackpanel宽度10px。所以我希望这个方块处于一个新的界限。

是否有可以执行此操作的控件? 困难的部分是Stackpanel是动态的,所以如果我调整WPF窗口的大小,Stackpanel将是50px,这将产生2个完整的方形线和第三个带有单个方形的线。

我希望这样做。 我怎么能这样做?

谢谢,Jonatan

2 个答案:

答案 0 :(得分:10)

在这种情况下你需要Wrap面板

    <WrapPanel  Width="100" Orientation="Horizontal">
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
        <Button   Width="10" Height="20"/>
    </WrapPanel>

答案 1 :(得分:4)

我认为你应该使用WrapPanel而不是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>