Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WrapPanel doesn't wrap in WPF ListView

I am using a ListView with an ItemTemplate like this:

<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>

But the Covers do not fill the screen like windows explorer windows.

How do I do this? They just get stacked vertically in my version.

alt text
(source: functionx.com)

like image 742
Joan Venge Avatar asked Apr 04 '10 02:04

Joan Venge


1 Answers

Try using a WrapPanel as your ListView's item panel and disable the horizontal scrollbar:

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

Update: itowlson suggests this explanation to make things more clear: ItemTemplate specifies how each item should be rendered. It has no effect on how items are laid out. ItemsPanel, by contrast, does specify the layout.

Also, you may want all items to be displayed the same size. You can find out how to do that from this article: http://joshsmithonwpf.wordpress.com/2008/09/06/synchronizing-the-width-of-elements-in-an-itemscontrol/

like image 131
Grokys Avatar answered Nov 17 '22 06:11

Grokys