带有包装和虚拟化的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的主要内容,如果未能解决你的问题,请参考以下文章

UWP 中 ListBox 内的 WrapPanel

显示 ActionBar 选项卡的两个片段

带有圆角而不是 100% 屏幕宽度的自定义片段对话框

WPF ListBox/ListView/DataGrid 列表滚动与虚拟化

虚拟化ListBox ContextMenu XamlParseException

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用