C# 在wpf中有3列的listbox或listview中加载10000个图像
现在我指的是在listbox或listview的3列中加载10000个图像C# 在wpf中有3列的listbox或listview中加载10000个图像,c#,wpf,listview,mvvm,listbox,C#,Wpf,Listview,Mvvm,Listbox,现在我指的是在listbox或listview的3列中加载10000个图像 <DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}"> <VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}">
<VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<Grid HorizontalAlignment="Left" Width="230" Height="230">
<Border Padding="5" Margin="10" BorderBrush="Orange">
<Image Stretch="Fill" HorizontalAlignment="Center" >
<Image.Source>
<PriorityBinding>
<Binding Path="FastBitmap"></Binding>
<Binding Converter="{StaticResource InstantiatePropertyAsyncConverterKey}"></Binding>
</PriorityBinding>
</Image.Source>
</Image>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="Black" Opacity="0.70" Width="200">
<TextBlock Text="{Binding FileInfo.Name}" Foreground="White" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</VirtualizingStackPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="lstBox1" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="False" ItemsPanel="{DynamicResource ImageGalleryItemsPanelTemplate}" ItemTemplate="{Binding Source={StaticResource ListImageDataTemplate}}" ItemsSource="{Binding Path=ImageList}" Margin="0,10,18,-10" Grid.Row="0" Grid.Column="1"/>
但是,如果在同一个项目中添加3列,从下到上加载图像,则在1列中非常有用。将所有图像加载到listview需要5到7秒
<DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}">
<VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<Grid HorizontalAlignment="Left" Width="230" Height="230">
<Border Padding="5" Margin="10" BorderBrush="Orange">
<Image Stretch="Fill" HorizontalAlignment="Center" >
<Image.Source>
<PriorityBinding>
<Binding Path="FastBitmap"></Binding>
<Binding Converter="{StaticResource InstantiatePropertyAsyncConverterKey}"></Binding>
</PriorityBinding>
</Image.Source>
</Image>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="Black" Opacity="0.70" Width="200">
<TextBlock Text="{Binding FileInfo.Name}" Foreground="White" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</VirtualizingStackPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="lstBox1" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="False" ItemsPanel="{DynamicResource ImageGalleryItemsPanelTemplate}" ItemTemplate="{Binding Source={StaticResource ListImageDataTemplate}}" ItemsSource="{Binding Path=ImageList}" Margin="0,10,18,-10" Grid.Row="0" Grid.Column="1"/>
<DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}">
<VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<Grid HorizontalAlignment="Left" Width="230" Height="230">
<Border Padding="5" Margin="10" BorderBrush="Orange">
<Image Stretch="Fill" HorizontalAlignment="Center" >
<Image.Source>
<PriorityBinding>
<Binding Path="FastBitmap"></Binding>
<Binding Converter="{StaticResource InstantiatePropertyAsyncConverterKey}"></Binding>
</PriorityBinding>
</Image.Source>
</Image>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="Black" Opacity="0.70" Width="200">
<TextBlock Text="{Binding FileInfo.Name}" Foreground="White" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</VirtualizingStackPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="lstBox1" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="False" ItemsPanel="{DynamicResource ImageGalleryItemsPanelTemplate}" ItemTemplate="{Binding Source={StaticResource ListImageDataTemplate}}" ItemsSource="{Binding Path=ImageList}" Margin="0,10,18,-10" Grid.Row="0" Grid.Column="1"/>
从listview中,它在1列中加载图像,工作正常,但通过使用ImageGalleryItemsPanelTemplate添加3列
<DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}">
<VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<Grid HorizontalAlignment="Left" Width="230" Height="230">
<Border Padding="5" Margin="10" BorderBrush="Orange">
<Image Stretch="Fill" HorizontalAlignment="Center" >
<Image.Source>
<PriorityBinding>
<Binding Path="FastBitmap"></Binding>
<Binding Converter="{StaticResource InstantiatePropertyAsyncConverterKey}"></Binding>
</PriorityBinding>
</Image.Source>
</Image>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="Black" Opacity="0.70" Width="200">
<TextBlock Text="{Binding FileInfo.Name}" Foreground="White" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</VirtualizingStackPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="lstBox1" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="False" ItemsPanel="{DynamicResource ImageGalleryItemsPanelTemplate}" ItemTemplate="{Binding Source={StaticResource ListImageDataTemplate}}" ItemsSource="{Binding Path=ImageList}" Margin="0,10,18,-10" Grid.Row="0" Grid.Column="1"/>
<ItemsPanelTemplate x:Key="ImageGalleryItemsPanelTemplate">
<UniformGrid Columns="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></UniformGrid>
</ItemsPanelTemplate>
有人能帮我吗?如果你不告诉我们这个问题,有人该怎么帮你?;)有什么东西不起作用了,还是只是为了减速?应该多快?我想问题很清楚。虚拟化适用于1列,但不适用于1列以上的列。它正在工作,但正在将图像从底部listviewitem加载到顶部listviewitem。我需要从上到下加载图像,否则图像应在scrolling@Manjunath你能粘贴1列和3列的代码以查找差异吗>有没有办法存档这个问题@Peuczyński
<DataTemplate x:Key="ListImageDataTemplate" DataType="{x:Type Model:FileInformation}">
<VirtualizingStackPanel Orientation="Vertical" IsVirtualizing="True" VirtualizationMode="Recycling">
<Grid HorizontalAlignment="Left" Width="230" Height="230">
<Border Padding="5" Margin="10" BorderBrush="Orange">
<Image Stretch="Fill" HorizontalAlignment="Center" >
<Image.Source>
<PriorityBinding>
<Binding Path="FastBitmap"></Binding>
<Binding Converter="{StaticResource InstantiatePropertyAsyncConverterKey}"></Binding>
</PriorityBinding>
</Image.Source>
</Image>
</Border>
<StackPanel VerticalAlignment="Bottom" Background="Black" Opacity="0.70" Width="200">
<TextBlock Text="{Binding FileInfo.Name}" Foreground="White" Height="60" Margin="15,0,15,0" FontWeight="SemiBold"/>
</StackPanel>
</Grid>
</VirtualizingStackPanel>
</DataTemplate>
</Window.Resources>
<ListView Name="lstBox1" ScrollViewer.CanContentScroll="True" VirtualizingStackPanel.IsVirtualizing="False" ItemsPanel="{DynamicResource ImageGalleryItemsPanelTemplate}" ItemTemplate="{Binding Source={StaticResource ListImageDataTemplate}}" ItemsSource="{Binding Path=ImageList}" Margin="0,10,18,-10" Grid.Row="0" Grid.Column="1"/>