1

我只想在 ListView 中显示项目,如 Windows 资源管理器(大图标)。同样,我使用了下面的代码。

    <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,那么项目会显示得很好,但是我不想要一个一个。如果我使用 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 回答