3164


Windows 7 上の VisualStudio 2013 Community で開発をしております。

Windows フォームの `Listview` では `View` プロパティで `List` を選択すると
縦幅一杯に表示されたら横列へ表示され横スクロールが表示されるのですが、 WPF の `Listview` では同様の動きをさせることはできますでしょうか？


CC BY-SA 3.0
2015-01-05T09:11:10.057
3119
2015-01-06T09:55:56.360
2015-01-05T09:41:46.993
4978
6072
question
.net wpf
WPFのListviewでリストを横スクロールさせたい


ScrollViewerを使えばできるかと思います。

[code]

    <ListView ScrollViewer.HorizontalScrollBarVisibility="Auto"
          ScrollViewer.VerticalScrollBarVisibility="Auto" />
    
[/code]


CC BY-SA 3.0
2015-01-05T10:33:25.550
3127
2015-01-05T10:33:25.550
2207
3119
answer


ItemsPanelを設定する場合はこうです。内部のStackPanelはWrapPanelやUniformGridに変えても良いです。

[code]

    <ListView>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
    
[/code]


CC BY-SA 3.0
2015-01-05T10:45:35.460
3129
2015-01-05T10:45:35.460
5750
3119
answer


WPFの`ListView`とのことなので回答からは外れるかもしれませんが、
`ScrollViewer`と`WrapPanel`を組み合わせることで同様の機能が実現できると思います。

[code]

    <ScrollViewer HorizontalScrollBarVisibility="Auto"
                  VerticalScrollBarVisibility="Disabled">
        <WrapPanel Orientation="Vertical" Height="100" ItemWidth="100">
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
            <TextBlock Text="sample text"/>
        </WrapPanel>
    </ScrollViewer>
    
[/code]

なお`WrapPanel`の`Height`と`ItemWidth`の値は横スクロールバーを表示するためのデバッグ用なので 実際には設定不要です。


CC BY-SA 3.0
2015-01-06T04:47:51.187
3164
2015-01-06T04:47:51.187
295
3119
answer


以下のコードがおそらく一番想定通りに動くと思います。

`ListView` のパネル部分を `WrapPanel` に差し替えて、`ListView` が内部的に持つ `ScrollViewer`
に上下のスクロールバーを出さないように設定しています。

[code]

    <ListView ScrollViewer.VerticalScrollBarVisibility="Disabled">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel Orientation="Vertical" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
    
[/code]


CC BY-SA 3.0
2015-01-06T09:14:52.183
3182
2015-01-06T09:55:56.360
2015-01-06T09:55:56.360
4978
6119
3119
answer