2015-04-19 3 views
0

Je suis à la recherche d'un contrôle ListView personnalisé qui organise les éléments horizontalement et si la largeur maximale est atteinte, ajoutez l'élément à la rangée suivante.Contrôle ListView personnalisé avec WrapPanel

Le WrapGrid comme ListView.ItemsPanel ne fonctionne pas car il utilise une largeur égale pour chaque élément (structure de grille).

Le WrapPanel de la boîte à outils WinRT XAML n'a pas ItemTemplate et je ne peux pas utiliser la liaison en raison de la propriété ItemSource manquante. Puis-je écrire ma propre implémentation ListView avec le wrapping? Quelles méthodes dois-je remplacer?

+0

pourquoi ne pas GRIDVIEW? – fex

+0

Les articles ont une largeur différente et doivent être affichés dans une rangée, puis enroulés dans la rangée suivante. –

+2

essayez d'utiliser VariableSizedWrapGrid http://blog.jerrynixon.com/2012/08/windows-8-beauty-tip-using.html – fex

Répondre

0

La solution est d'utiliser la WrapPanel de WinRT XAML Toolkit intérieur la listviews ItemsPanel:

  <ListView x:Name="Keywords" SelectionMode="Multiple" ItemContainerStyle="{ThemeResource ListViewItemStyle}"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding}" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" /> 
         </StackPanel> 
        </DataTemplate> 
       </ListView.ItemTemplate> 

       <ListView.ItemsPanel> 
        <ItemsPanelTemplate> 
         <toolkit:WrapPanel /> 
        </ItemsPanelTemplate> 
       </ListView.ItemsPanel> 
      </ListView>