问题标签 [ui-virtualization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6453 浏览

.net - WPF 中 UI 虚拟化的资源和指南

UI 虚拟化是一个尴尬的术语,它描述了 WPF UI 控件,这些控件按需加载和处置子元素(基于它们的可见性)以减少内存占用。ListBox 和 ListView 默认使用一个名为 VirtualizingStackPanel 的类来实现更高的性能。

我发现这个控件非常有用,它是一个虚拟画布,它生成一个可滚动的 Canvas 对象,该对象使用四叉树管理其子级。它产生了一些很好的结果,并且可以很容易地根据您的需要进行调整。

是否有任何其他指南或示例 wpf 控件来处理此问题?也许通用的处理其他语言和工具包中gui对象的动态内存分配?

0 投票
3 回答
9198 浏览

wpf - WPF 性能:在画布上显示数千个路径/形状

我目前正在开发一种可视化工具,可以在 Canvas 上绘制 WPF 形状,例如路径、椭圆等。我已经实现了一种虚拟化方法,其中根据形状的可见性动态销毁和创建形状。然而,即使只有大约 600 个椭圆可见,该应用程序似乎也很困难。

我有哪些加快速度的选择?我正在考虑将分组的形状(假设一次 500 个)渲染为透明位图,并且只在画布上绘制这些形状。但我不知道这是否是个好主意......据我所知,如果应用了转换,这需要某种破解:

使用大的 WritableBitmap 怎么样?那会是另一种方法吗?

0 投票
1 回答
761 浏览

c# - Silverlight MediaElement 和 UI 虚拟化

我有一个应用程序,它在面板上包含许多控件,每个控件都有自己的 MediaElement 播放视频。我一直在研究 Silverlight 3 的新 UI 虚拟化功能,以在较小的视口中滚动浏览这些控件中的许多控件时提高性能。

根据我的经验,我的理解是,每当 MediaElement 控件被删除然后重新添加到可视化树中时,媒体都必须重新缓冲。我猜想尝试在填充有 MediaElement 控件的任何类型的自定义面板上实现 UI 虚拟化会导致任何屏幕外元素停止播放,然后在它们滚动到屏幕后立即播放之前重新缓冲。有没有人遇到过这种情况?

如果是这种情况,是否有任何解决方法或可能的方法来使用包含 MediaElements 的控件实现 UI 虚拟化而不影响正在进行的播放?

0 投票
1 回答
2849 浏览

android - Android ListView 数据虚拟化 - 延迟加载超过 10,000 个项目

有没有人从 Sqlite 数据库中延迟加载(大约 10,000 个项目)Android ListView 的示例?

0 投票
2 回答
8050 浏览

.net - 是否有(好的/免费的)可用于 WPF 的 VirtualizingWrapPanel?

我找到了几个替代方案,这个 CodePlex 项目这个商业项目,但是前者在我的测试中效率极低,而后者,嗯,成本 $$。我也找到了这个实现,但它与其说是 WrapPanel 不如说是“TilePanel”,并且不支持自动调整大小的项目(尽管它看起来确实很快)。

我还找到了一些关于如何在这里编写自己的“提示” ,但是由于开发人员在公司时间开发它,他无法发布他的完整源代码。

有没有人花时间实现一个像样的 VirtualizingWrapPanel 并公开发布,还是我必须花一天时间自己写?

0 投票
3 回答
25951 浏览

wpf - 为什么将 ScrollViewer.CanContentScroll 设置为 false 禁用虚拟化

正如大多数 WPF 开发人员所知,设置ScrollViewer.CanContentScrollfalse将禁用虚拟化;但我想知道它是如何工作的,因为我尝试在设置ScrollViewer.CanContentScrollfalse.

0 投票
0 回答
674 浏览

.net - 在 WPFToolkit Accordion 上启用 UI 虚拟化

我正在使用 WPFToolkit Accordion 控件,其中手风琴中的项目定义为 TreeView。

对于上下文,这里是 XAML 的相关部分:

最初我只用一个 TreeView(没有 WPFToolkit Accordian)和一秒钟内加载的 40,000 个项目来实现这一点。

当我在根级别使用手风琴实现结构时,单击扩展器时的加载时间超过 7 秒。这太长了。

我对应用程序进行了概要分析,发现第一级中的 500 个项目正在被递归测量,这导致加载时间增加。看来 Accordion 控件没有使用 UI 虚拟化。有没有办法让手风琴使用 UI 虚拟化?如果没有,有什么办法可以提高手风琴的性能,以便更快地加载第一级项目?

0 投票
2 回答
3941 浏览

wpf - WPF:TreeView 虚拟化不起作用

如果 TreeView 设置如下,什么可以阻止 TreeView 虚拟化?

我有一个不是虚拟化的,当我扩展节点(并使用 snoop 进行检查)时,我创建了所有 TreeViewItems。我想知道是否有一些容器组合会阻止 TreeView 虚拟化其内容。(例如将其托管在 StackPanel 中)

0 投票
0 回答
272 浏览

.net - 如何获取数据绑定列表框的虚拟项?

如果我有一个绑定到ListBox. 我现在想实现第一个项目最初是集中的,另外我想在显示的 ListBox 项目之间实现全键盘导航,因此我需要访问虚拟创建的项目控件。

问题是itemStack.Items[i]返回Car本身而不是CarEditControl. 如何获得虚拟创建的项目?

0 投票
1 回答
1123 浏览

wpf - VirtualizingStackPanel 不适用于 ComboBox

我对 WPF 完全陌生。我不明白为什么 VirtualizingStackPanel 不能用于以下工作。我已经尝试过 ScrollViewer,但它对我不起作用。我已经尝试将 VirtualizingStackPanel 放置在任何地方,但它似乎根本没有影响。当组合框填充 3000 个项目并且每个项目都有 16x16 图像时,大约需要 30 秒才能显示出来。因此,任何帮助将不胜感激。

更新:数据模板已添加