我正在尝试创建一个列表框,该列表框可能包含像设计一样的网格中的一千多个图像。在设计方面,它与此非常相似:
由于我不能使用 wrappanel,因为它会破坏 UI 虚拟化,并且 stackpanel 不能在这样的网格中列出图像(?),我正在尝试使用https://virtualwrappanel.codeplex的修改版本来解决这个问题.com
我的 XAML:
<ListBox x:Name="GameWheel" ItemsSource="{Binding GameData}" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<c:VirtualizingWrapPanel IsItemsHost="True" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Image x:Name="GameImage" Source="{Binding Path=ImagePath}" Width="{Binding ElementName=GameWheel, Path=ActualWidth, Converter={StaticResource widthConverter}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
虽然这种方法有效,但它仍然非常缓慢且有问题,尤其是在对图像宽度使用绑定时。有没有更好的方法来归档相同的结果?最好没有定制包装板。