WrapPanel не переносится в StackPanel с горизонтальной ориентацией - PullRequest
13 голосов
/ 27 октября 2009

Ярлыки в приведенном ниже примере (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 ]

23 голосов
/ 27 октября 2009

Вы можете связать WrapPanel MaxWidth с StackPanel ActualWidth.

7 голосов
/ 27 октября 2009

То, что вы делаете, невозможно из-за алгоритма, который StackPanel использует при горизонтальном расположении. По сути, он будет спрашивать каждый дочерний элемент о том, насколько большим он хочет быть, и сколько бы пространства он ни потребовал, чтобы дать ему.

Вы должны либо:

  1. Установите Width или MaxWidth на WrapPanel.
  2. Используйте WrapPanel в качестве внешней панели вместо StackPanel.
...