有没有更好的方法来实现WrapPanel"喜欢"控制作为ListView的PanelTemplate而不会丢失虚拟化

时间:2014-08-04 14:54:13

标签: c# wpf listview virtualization

我目前有一个ListView,它有一个datatemplate,以便显示给定文件夹中的所有.jpg文件。目前我将它设置为一个包装面板,我发现当这个文件夹中的jpgs变大时,程序会变慢。我猜测是由于可视化的丢失。我尝试过使用This Example of a Visualizing WrapPanel - 这对我不起作用的原因是因为即使每个项目的高度/宽度相同,我仍然会得到模糊的滚动条行为。我只是想知道是否有更好的方法来实现这一点。如果我必须修改列数,例如,我就不会感到困扰。一次显示3 x 3。

我目前的列表视图如下所示:

 <ListView ItemsSource="{Binding FilteredPhotoFiles}" SelectedItem="{Binding SelectedPhotoVM.SelectedPhoto}">
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType={x:Type ScrollContentPresenter}}}"
                            ItemWidth="{Binding (ListView.View).ItemWidth, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"
                            MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
                            ItemHeight="{Binding (ListView.View).ItemHeight, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}"/>
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="2,4,2,4">
                            <Grid.Background>
                                <SolidColorBrush Color="LightGray" Opacity="0.5"/>
                            </Grid.Background>
                            <Image Source="{Binding PhotoFileInfo.FullName}" Width="300" Height="170" />                                
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

我只是想知道是否有更好的方法来做到这一点,这样我就不会失去性能,也许是某种GridView?

0 个答案:

没有答案