2009-10-26 13 views
11

Le etichette nell'esempio seguente (WPF/XAML) sfilano dallo schermo, non si verifica alcun avvolgimento. Rimozione dell'orientamento funziona, ma non ha fornito la funzionalità necessaria/aspetto & sentire. Qualche idea su come rendere il wrap WrapPanel alle dimensioni correnti di StackPanel?WrapPanel non si avvolge quando si trova in uno StackPanel con orientamento orizzontale

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

risposta

21

è possibile associare il WrapPanel s ActualWidth 's MaxWidth al StackPanel'.

+0

Quando dici bind, sembra che ciò accada automaticamente? Come si farebbe questo? – derGral

+4

Non ho provato questo, ma fondamentalmente: NotDan

+0

Sembra funzionare; Grazie! Il problema è che ci sono altre cose nello stackpanel e la loro larghezza non viene presa in considerazione. Qualche idea per gestirlo? – derGral

6

Quello che stai facendo non è possibile a causa del algoritmo che StackPanel utilizza quando si fa layout orizzontale. Fondamentalmente chiederà a ogni elemento figlio quanto sia grande e nonostante tutto lo spazio richiesto.

Si sarebbe sia bisogno di:

  1. impostare un Width o MaxWidth sul WrapPanel.
  2. Utilizzare un WrapPanel come pannello esterno al posto di StackPanel.
Problemi correlati