14

下面示例中的标签 (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>
4

2 回答 2

27

您可以将 's 绑定WrapPanelMaxWidth' StackPanels ActualWidth

我没有尝试过,但基本上:

<WrapPanel MaxWidth="{Binding ActualWidth, ElementName=myStackPanel}"/>

于 2009-10-26T22:55:59.057 回答
8

StackPanel由于进行水平布局时使用的算法,您正在做的事情是不可能的。它基本上会询问每个子元素它想要多大,以及它要求它提供多少空间。

您要么需要:

  1. 在 上设置一个Width或。MaxWidthWrapPanel
  2. 使用 aWrapPanel作为外部面板代替StackPanel.
于 2009-10-26T22:39:45.953 回答