带有包装和虚拟化的ListBox
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有包装和虚拟化的ListBox相关的知识,希望对你有一定的参考价值。
我正在尝试在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的构造函数中,我可以看到为集合中的项创建了一个控件,即使它们不可见。在我的情况下这是一个问题,因为要显示的对象和控件很重并占用太多RAM。
我创造了一个VirtualizingWrapPanel for Silverlight。来源是available on GitHub。
需要注意的一点是,为了简化实现,所有项目必须大小相同。
目前唯一可以做到这一点的是(商业上可用的)由www.binarymission.co.uk销售的虚拟化包装板控件
它还可以进行自定义分组,组头渲染等,以及虚拟化+包装。这是昂贵的,但值得每一分钱,并解决了我的要求。我是一个在线相册应用程序,应用程序需要控制,休息是我们整合的所有简单UI,我们可以立即恢复控制成本:)他们的支持也很好。回复几乎在10分钟之内;)你通常不期望第三方控制供应商的东西,但我猜他们的价格肯定会照顾:)
乔我已修复你在那里的链接。直到有人同行评审它才赢了;所有人都可以看到,所以这里是固定的链接:Binarymission Virtualizing Wrap Panel for WPF & SL
我不知道Silverlight的免费Virtualizing WrapPanel,但我找到了一个WPF。您可以将其转换为Silverlight。传统上,创建虚拟化面板非常难以正确。
Virtualizing WrapPanel for Silverlight ($900?)
Virtualizing WrapPanel for WPF
以上是关于带有包装和虚拟化的ListBox的主要内容,如果未能解决你的问题,请参考以下文章
WPF ListBox/ListView/DataGrid 列表滚动与虚拟化