在具有水平方向的StackPanel中,WrapPanel不会换行

时间:2009-10-26 22:13:18

标签: wpf xaml wpf-controls stackpanel wrappanel

以下示例中的标签(WPF / XAML)只是在屏幕上游行,不会发生包装。删除方向有效,但没有提供所需的功能/外观&感觉。任何想法如何使WrapPanel换行到StackPanel的当前大小?

<Window Height="300" Width="600">
    <StackPanel Orientation="Horizontal">
        <WrapPanel>
            <Label Height="28" Name="label1" Width="120">First Name</Label>
            <Label Height="28" Name="label2" Width="120">John</Label>
            <Label Height="28" Name="label3" Width="120">Last Name</Label>
            <Label Height="28" Name="label4" Width="120">Smith</Label>
            <!-- ...more labels!... -->
        </WrapPanel>
        <!-- ...other controls/panels... -->
    </StackPanel>
</Window>

2 个答案:

答案 0 :(得分:23)

您可以将WrapPanel的{​​{1}}绑定到MaxWidth的{​​{1}}。

答案 1 :(得分:7)

由于StackPanel在进行水平布局时使用的算法,您无法进行的操作。它基本上会问每个子元素它想要的大小,无论它要求多大的空间,它都会给它。

您需要:

  1. Width
  2. 上设置MaxWidthWrapPanel
  3. 使用WrapPanel作为外部面板代替StackPanel