1

Windowsエクスプローラー(大きなアイコン)のようにListViewにアイテムを表示したいだけです。同じために、以下のコードを使用しました。

    <ListView Name="lstView" ItemsSource="{Binding MovieList}"  > 

        <ListView.ItemsPanel>
            <ItemsPanelTemplate>

                <!-- <VirtualizingStackPanel/> -->      <!-- Working Fine -->

                <StackPanel/>                           <!-- Items are not displayed -->
                                                        <!-- It must be wrap panel -->
                                                        <!-- OK, lets see with simple -->
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>


        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <Label Content="{Binding Path}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>

    </ListView>

上記のコードでは、VirtualizingStackPanel を使用すると、項目は正常に表示されますが、1 つずつ表示されたくないのです。StackPanel を使用すると、アイテムが StackPanel に追加されていなくても、アイテムが画面に表示されません。Snoopツールで確認しました。アイテムを一覧表示するには、StackPanel の代わりに WrapPanel を使用する必要がありますが、単純な StackPanel を見てみましょう。

項目が StackPanel に表示されないのはなぜですか? 基本的には、WindowExplorer の大きなアイコン ビューのようなアイテムを一覧表示します。

.NET 4.0 を使用しています

4

1 に答える 1

0

私は自分のコードで同じことを試しましたが、うまくいきました。仮想化は、ItemsControl のビューポートのサイズが制限されている限り機能します。以下のコードを置き換えてみてください。

 <ListView ItemsSource="{Binding Movies}" Width="400" HorizontalAlignment="Left" >
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel VirtualizingPanel.IsVirtualizing="True" />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Year}" FontSize="12" Margin="10,0,0,0"/>
                        <TextBlock Text="{Binding Name}" FontSize="12" Margin="10,0,0,0"/>
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Category}" FontSize="12" Margin="10,0,0,0"/>
                        <TextBlock Text="{Binding Director}" FontSize="12" Margin="10,0,0,0"/>
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
于 2014-02-19T06:48:33.333 に答える