2009-10-15 6 views

Répondre

4

Si vous voulez que vos articles à tous ont la même taille, je pencherais pour un UniformGrid. C'est l'un de ces contrôles négligés, pourrait être très utile dans cette situation.

Voilà comment je fait une barre d'outils rapide et sale:

<ItemsControl ItemsSource="{Binding}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button Command="{Binding}" 
        ToolTip="{Binding Tooltip}"> 
       <StackPanel Orientation="Vertical"> 
        <Image Height="16" 
          Width="16" 
          RenderOptions.BitmapScalingMode="NearestNeighbor" 
          Source="{Binding Image}" 
          HorizontalAlignment="Center" /> 
       </StackPanel> 
      </Button> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 
+0

Cool. Ça a marché. Cependant, j'ai déjà changé pour deux listview car c'était plutôt urgent. Néanmoins, je me souviendrai de la grille uniforme car mes tests étaient plutôt concluants. –

3

On dirait que vous êtes à la recherche de WrapPanel. Je ne pense pas que cela fonctionne pour ListView, mais si vous voulez un conteneur d'éléments génériques pour utiliser WrapPanel comme c'est la disposition, vous pouvez le faire avec ItemsControl et le remplir avec les éléments que vous voulez. Quelque chose comme ce qui suit:

<ItemsControl> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.Items> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
     <TextBlock Margin="20" Padding="20" Text="Blah" Background="#999" /> 
    </ItemsControl.Items> 
</ItemsControl> 
+0

Comme vous l'avez dit, il ne semble pas travailler avec WrapPanel, mais ce que je vais faire est d'avoir deux listes qui sont au-dessus de un autre, puisque je connais le nombre exact d'articles maximum que je vais avoir. –

+0

Vous pouvez obtenir ceci pour travailler avec ListView. Je l'ai fait, mais je n'ai pas le code à portée de main pour le moment. Faites des recherches Google, et vous le trouverez. –

+0

Est-ce que cela "doit" être un ListView? WPF est si flexible que vous pouvez obtenir une grande partie de la même liste affichant les fonctionnalités d'un certain nombre de conteneurs différents. Le conteneur n'est généralement pas la fonctionnalité que vous recherchez, il s'agit des modèles (ItemsTemplate, ItemsPanelTemplate). – Rich

Questions connexes