54 votes

WrapPanel ne s'enroule pas dans une ListView WPF

J'utilise un ListView avec un ItemTemplate comme ceci :

<Window.Resources>
    <DataTemplate x:Key="ItemTemplate">
        <WrapPanel Orientation="Horizontal">
            <Image Width="50" Height="50" Stretch="Fill" Source="{Binding Cover}"/>
            <Label Content="{Binding Title}" />
        </WrapPanel>
    </DataTemplate>
</Window.Resources>

Mais les couvertures ne remplissent pas l'écran comme l'explorateur Windows.

Comment je fais ça ? Ils sont juste empilés verticalement dans ma version.

alt text

131voto

Groky Points 6866

Essayez d'utiliser un WrapPanel comme panneau d'éléments de votre ListView et désactivez la barre de défilement horizontale :

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled">
  <ListView.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
  </ListView.ItemsPanel>
  ...
</ListView>

Mise à jour : itowlson suggère cette explication pour rendre les choses plus claires : ItemTemplate spécifie comment chaque élément doit être rendu. Il n'a aucun effet sur la façon dont les éléments sont disposés. ItemsPanel, par contre, spécifie la disposition.

Vous pouvez également souhaiter que tous les éléments soient affichés à la même taille. Vous pouvez découvrir comment faire cela dans cet article : http://joshsmithonwpf.wordpress.com/2008/09/06/synchronizing-the-width-of-elements-in-an-itemscontrol/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X