2009-10-26 7 views
11

Las etiquetas en el siguiente ejemplo (WPF/XAML) simplemente desfilan fuera de la pantalla, no se produce ningún ajuste. La eliminación de la orientación funciona, pero no proporciona la funcionalidad/apariencia deseada & feel. ¿Alguna idea de cómo hacer que el WrapPanel se ajuste al tamaño actual del StackPanel?WrapPanel no se ajusta cuando está en un StackPanel con orientación horizontal

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

Respuesta

21

puede enlazar las WrapPanel 's MaxWidth a la StackPanel' s ActualWidth.

+0

Cuando dices bind, parece que eso sucedería automáticamente? ¿Cómo podría uno hacer esto? – derGral

+4

No he intentado esto, pero básicamente: NotDan

+0

Parece que funciona; ¡Gracias! El problema es que hay otras cosas en el stackpanel y sus anchos no se tienen en cuenta. Alguna idea para manejar eso? – derGral

6

Lo que está haciendo no es posible debido a que el algoritmo que se utiliza cuando se hace StackPanel disposición horizontal. Básicamente va a preguntarle a cada elemento infantil qué tan grande quiere ser y sin importar cuánto espacio le pida va a darlo.

Se podría o bien tendrá que:

  1. Establecer un Width o MaxWidth en el WrapPanel.
  2. Utilice un WrapPanel como el panel exterior en lugar del StackPanel.
Cuestiones relacionadas