C# 有没有更好的方法可以在不丢失虚拟化的情况下将WrapPanel“like”控件实现为ListView的PanelTemplate
我目前有一个ListView,它有一个datatemplate,以便显示给定文件夹中的所有.jpg文件。目前我把它设置为一个包裹面板,我发现当这个文件夹中的JPG变大时,程序会变慢。我猜是因为失去了视觉效果。我尝试过使用-这对我不起作用的原因是,我仍然得到模糊的滚动条行为,即使每个项目的高度/宽度相同。我只是想知道是否有更好的方法来实现这一点。如果我必须固定列的数量,例如一次显示一个3 x 3的列,我不会感到烦恼 我当前的列表视图如下所示:C# 有没有更好的方法可以在不丢失虚拟化的情况下将WrapPanel“like”控件实现为ListView的PanelTemplate,c#,wpf,listview,virtualization,C#,Wpf,Listview,Virtualization,我目前有一个ListView,它有一个datatemplate,以便显示给定文件夹中的所有.jpg文件。目前我把它设置为一个包裹面板,我发现当这个文件夹中的JPG变大时,程序会变慢。我猜是因为失去了视觉效果。我尝试过使用-这对我不起作用的原因是,我仍然得到模糊的滚动条行为,即使每个项目的高度/宽度相同。我只是想知道是否有更好的方法来实现这一点。如果我必须固定列的数量,例如一次显示一个3 x 3的列,我不会感到烦恼 我当前的列表视图如下所示: <ListView ItemsSource="
<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?如果您可以使用每行3列,那么可以使用ListView/GridView。您需要一个将这三列作为属性的ItemsSource。@user1-请从中尝试答案。