2009-10-26 5 views
11

Die Beschriftungen im folgenden Beispiel (WPF/XAML) werden nur vom Bildschirm weggeführt, es erfolgt kein Umbruch. Entfernen der Ausrichtung funktioniert, aber bietet nicht die erforderliche Funktionalität/Aussehen & fühlen. Irgendwelche Ideen, wie man die WrapPanel Wrap auf die aktuelle Größe der StackPanel?WrapPanel wird nicht umgebrochen, wenn es sich in einem StackPanel mit horizontaler Ausrichtung befindet

<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> 

Antwort

21

können Sie binden die WrapPanel 's MaxWidth auf die StackPanel' s ActualWidth.

+0

Wenn Sie bind sagen, klingt das so, als würde das automatisch passieren? Wie würde man das machen? – derGral

+4

Ich habe das nicht versucht, aber im Grunde genommen: NotDan

+0

Das scheint zu funktionieren; Vielen Dank! Das Problem ist, dass es im Stackpanel noch andere Dinge gibt und deren Breite nicht berücksichtigt wird. Irgendwelche Ideen für den Umgang damit? – derGral

6

Was Sie tun, ist nicht möglich, da der Algorithmus, der StackPanel verwendet, wenn das horizontale Layout zu tun. Es wird im Grunde jedes Kind Element fragen, wie groß es sein will und wie viel Platz es für es verlangt.

Sie würden entweder müssen:

  1. Stellen Sie einen Width oder MaxWidth auf dem WrapPanel.
  2. Verwenden Sie eine WrapPanel als äußere Verkleidung anstelle der StackPanel.
Verwandte Themen