web-dev-qa-db-fra.com

WrapPanel ne s'emballe pas dans WPF ListView

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 les fenêtres de l'Explorateur Windows.

Comment puis-je faire cela? Ils sont juste empilés verticalement dans ma version.

alt text
(source: functionx.com )

49
Joan Venge

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. Cela n'a aucun effet sur la disposition des éléments. ItemsPanel, en revanche, spécifie la disposition.

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

110
Grokys