WrapPanel не переносится в WPF ListView - PullRequest
47 голосов
/ 04 апреля 2010

Я использую ListView с ItemTemplate следующим образом:

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

Но обложки не заполняют экран, как Windows Explorer.

Как мне это сделать? Они просто сложены вертикально в моей версии.

альтернативный текст http://www.functionx.com/visualc/applications/images/explorer1.gif

1 Ответ

109 голосов
/ 04 апреля 2010

Попробуйте использовать WrapPanel в качестве панели элементов вашего ListView и отключите горизонтальную полосу прокрутки:

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

Обновление: itowlson предлагает это объяснение, чтобы прояснить ситуацию: ItemTemplate указывает, как каждый элемент должен быть представлен Это не влияет на расположение предметов. ItemsPanel, напротив, определяет макет.

Кроме того, вы можете захотеть, чтобы все элементы отображались одинакового размера. Вы можете узнать, как это сделать из этой статьи: http://joshsmithonwpf.wordpress.com/2008/09/06/synchronizing-the-width-of-elements-in-an-itemscontrol/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...