web-dev-qa-db-ja.com

WrapPanelがWPFリストビューでラップしない

私はこのようなItemTemplateでListViewを使用しています:

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

ただし、カバーはウィンドウズエクスプローラーウィンドウのように画面いっぱいに表示されません。

どうすればよいですか?彼らは私のバージョンでは垂直に積み重なるだけです。

alt text
(ソース: functionx.com

49
Joan Venge

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

110
Grokys