Ответ 1
Вы можете связать WrapPanel
MaxWidth
с StackPanel
ActualWidth
.
Я не пробовал это, но в основном:
<WrapPanel MaxWidth="{Binding ActualWidth, ElementName=myStackPanel}"/>
Ярлыки в приведенном ниже примере (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>
Вы можете связать WrapPanel
MaxWidth
с StackPanel
ActualWidth
.
Я не пробовал это, но в основном:
<WrapPanel MaxWidth="{Binding ActualWidth, ElementName=myStackPanel}"/>
То, что вы делаете, невозможно из-за алгоритма, который StackPanel
использует при выполнении горизонтального макета. Он в основном собирается задать каждому дочернему элементу, насколько он хочет, и сколько пространства он просит, чтобы он его дал.
Вам понадобится:
Width
или MaxWidth
на WrapPanel
.WrapPanel
в качестве внешней панели вместо StackPanel
.