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

der*_*ral 14 wpf xaml wrappanel wpf-controls stackpanel

以下示例中的标签(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>
Run Code Online (Sandbox Code Playgroud)

Not*_*Dan 24

你可以将WrapPanel's 绑定MaxWidthStackPanel's ActualWidth.


Dre*_*rsh 7

由于StackPanel在进行水平布局时使用的算法,您正在做的事情是不可能的.它基本上会问每个子元素它想要的大小,无论它要求多大的空间,它都会给它.

您可能需要:

  1. 设置一个WidthMaxWidthWrapPanel.
  2. 使用a WrapPanel作为外部面板代替StackPanel.