我正在尝试在Silverlight中配置ListBox以同时进行包装和虚拟化。
这是我当前的解决方案,使用Silverlight工具包WrapPanel:
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ItemsSource="{Binding}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<my:MyControl/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
此代码正确包装。但是虚拟化被禁用:如果我将日志添加到MyControl的构造函数中,我可以看到为集合中的项创建了一个控件,即使它们不可见。在我的情况下这是一个问题,因为要显示的对象和控件很重,占用的内存太多。
答案 0 :(得分:2)
我创建了一个VirtualizingWrapPanel for Silverlight。来源是available on GitHub。
需要注意的一点是,为了简化实施,所有项目的大小必须相同。
答案 1 :(得分:0)
我不知道Silverlight的免费虚拟化WrapPanel,但我找到了一个WPF。您可以将其转换为Silverlight。传统上,创建虚拟化面板非常难以正确使用。
答案 2 :(得分:0)
目前唯一能够实现此目的的是(商用)是由www.binarymission.co.uk出售的虚拟化包装面板控件
它还可以进行自定义分组,组头呈现等以及虚拟化+包装。 这是昂贵的,但值得每一分钱,并解决了我的要求。我是一个在线相册应用程序,该应用程序需要控制,休息是我们整合的所有简单UI,我们可以立即恢复控制成本:) 他们的支持也非常好。回复几乎在10分钟之内;)你通常不期望第三方控制供应商提供的东西,但我猜他们的价格当然会照顾到:)
Joe我已经修复了你在那里的链接。 直到有人对其进行了同行评审,它才能获胜;所有人都可以看到,所以这里是固定链接: Binarymission Virtualizing Wrap Panel for WPF & SL