2010-01-27 4 views
1

je n'ai pas un ItemsControl avec un ScrollViewer intérieur que j'ai un WrapPanelsilverlight WrapPanel ne wrap

la chose ne sera pas envelopper si je mets une largeur à elle. Est-ce que je ne comprends pas comment utiliser ce contrôle? Puis-je l'utiliser sans largeur? Je veux qu'il utilise l'auto stretch.

+0

À quoi sert le site ScrollViewer? – AnthonyWJones

Répondre

3

Le panneau d'enrubannage doit pouvoir se déplacer quelque part dans sa largeur. Il semble que vous voulez qu'il soit limité à l'espace disponible dans le conteneur. Dans ce cas, le conteneur doit être d'un type qui limitera la largeur. Par exemple, le suivant fonctionne très bien: -

<UserControl x:Class="SilverlightApplication1.WrapPanelStuff" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkitControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <ScrollViewer> 
      <toolkitControls:WrapPanel> 
       <Border BorderBrush="Black" BorderThickness="2"> 
        <TextBlock Text="This should be quite long so that it takes up some horizontal space" /> 
       </Border> 
       <Border BorderBrush="Black" BorderThickness="2"> 
        <TextBlock Text="This should be quite long so that it takes up some horizontal space" /> 
       </Border> 
       <Border BorderBrush="Black" BorderThickness="2"> 
        <TextBlock Text="This should be quite long so that it takes up some horizontal space" /> 
       </Border> 
      </toolkitControls:WrapPanel> 
     </ScrollViewer> 
    </Grid> 
</UserControl> 

Le Grid limite la WrapPanel à la largeur disponible. Remplacez Grid par Canvas et cela ne fonctionne plus car Canvas ne limite pas la largeur de son contenu.

1

La logique WrapPanel va continuer à placer les enfants le long d'une même ligne jusqu'à ce qu'elle soit contrainte d'une manière ou d'une autre. Probablement le moyen le plus simple de le faire sans spécifier une largeur serait de désactiver la barre de défilement horizontale du ScrollViewer.

<ScrollViewer HorizontalScrollBarVisibility="Disabled"> 
     <toolkitControls:WrapPanel /> 
    </ScrollViewer> 

Vous pouvez ensuite étirer le ItemsControl contenant horizontalement et forcer le wrapping.

+0

Cela n'aide pas, le ScrollViewer est encore juste un aller entre les calculs de taille de loin sont concernés. – AnthonyWJones

+0

A travaillé pour moi ... – Alyce