问题标签 [data-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 回答
545 浏览

r - 在R中聚合具有一定半径的经度和纬度数据

我有位置经度和纬度的传感器数据。我有以下数据点:

在此处输入图像描述

我想将彼此一定距离内的点聚合到路线上的一个点,如下所示:

在此处输入图像描述

每个新点都将位于圆的中心,并将包括给定区域的所有传感器读数的平均值。我尝试从经度和纬度中删除精度,但我得到的结果很糟糕,并且路线失去了形状。

0 投票
0 回答
1123 浏览

animation - 在 Matplotlib 中动画 3D 散点图序列

我有 3D 的时间序列数据:

矢量数据的散点图,随着绘图沿索引行进,颜色会发生变化。

如何为一次出现一个的点设置动画?我找到了这个答案,但不明白如何修改更新程序功能,以便新点不会摆脱旧点。

奖励:如果旧点可以随着时间的推移逐渐消失,这样音量就不会变得混乱,那就太好了。

0 投票
0 回答
104 浏览

c# - 带有数据网格和行详细信息的 Windows 10 数据虚拟化

我正在使用带有 rowdetails 的数据网格,它的 ItemsSource 绑定到基于Paul McClean的这个项目的 AsynchronousVirtualizingCollection 。使用 Windows 7、.Net Framework 4.5 我在选择网格中的行时遇到了麻烦,整个集合在不需要时被获取。如本项目中所述,我使用数据包装器找到了解决此问题的方法。这对我来说很好。现在我将系统升级到 Windows 10,仍然使用相同的框架。选择仍然可以正常工作,但是当我想显示行详细信息时,会再次获取整个集合。这不会发生在 Windows 7 系统上。有没有人遇到过同样的问题,或者有没有人解释为什么它可以在 Windows 7 上运行而不是在 Windows 10 上运行?谢谢

0 投票
1 回答
143 浏览

wpf - 通过 ListCollectionView 虚拟化 DataGrid

我在提供对特定数据库表的读取访问权限的自定义列表上使用 ListCollectionView。下面是自定义列表的定义。

问题是在DataGrid 的初始填充期间,对每一行(即0 到Count - 1)调用this[int index] 方法。

由于该表可能包含数百万行并且读取操作的成本很高(即传统 HDD 上的 SQLite),因此这样的操作是不可接受的。此外,当屏幕只能容纳 50 个左右的项目时,加载所有数百万行是没有意义的。

我想让 DataGrid 只获取它正在显示的行,而不是获取整个表。这样的工作怎么可能?

(PS 我已确保为 DataGrid 本身启用了虚拟化)

0 投票
1 回答
529 浏览

wpf - WPF DataGrid 在按特定列排序时失去虚拟化

我正在使用绑定到实现 IList(而不是 IEnumerable)的自定义 ItemsSource 的 WPF DataGrid。自定义 ItemsSource 执行数据虚拟化并仅根据需要加载项目页面。MyDataGrid 实际上继承自 DataGrid 并覆盖 DataGrid 排序方法的处理,以便我可以在排序时维护数据虚拟化。我为 MyDataGrid 打开了 UI 虚拟化。

当我运行应用程序时,MyDataGrid 显示得很好,告诉我我有大约 20,000 个项目,并且只向我的 ItemsSource 询问前 20 个左右的项目。然后我可以单击列标题对各个列进行排序,并且我的 ItemsSource 只需重新加载 40 个项目的第一页,因为 MyDataGrid 只要求刷新前 20 个左右。

但是,当我单击我的姓氏列进行排序时,MyDataGrid 失去了它的 UI 虚拟化并要求我的 ItemsSource 加载每个项目,即使它只需要前 20 个左右。我可以看到它按索引(this[0])要求每个项目。

我已经尝试研究 ICollectionView、UI 虚拟化和数据虚拟化,我读过的唯一可能适用的内容是关于多行选择(在DataGrid 行请求模式与数据虚拟化中,我已将 MyDataGrid 的 SelectionMode 设置为 Single 所以这不应该适用。

另一个提示可能是,在按姓氏排序之前,MyDataGrid 中的第一项具有以字母 V 开头的姓氏(在字母表中很晚),并且我实际上可以按姓氏的降序对列表进行排序在不丢失虚拟化的情况下。同样的事情发生在我的 Title 列中,它的第一个项目以字母 S 开头。我对任何其他列都没有问题。

有任何想法吗?

0 投票
1 回答
387 浏览

c# - 在 wpf 中重复打开对话框时的性能问题

我有一个启动对话框按钮,它创建一个窗口的视图模型并将其绑定到窗口(它启用了 UI 虚拟化)。第一次单击时启动对话框只需 1 秒钟。但是,如果我非常频繁地或背靠背地打开同一个对话框,它会开始花费更多时间来填充网格数据源以进行下一次迭代。如果我暂停一下,然后再次打开窗口,则只需大约 1 或 2 秒。

但是,如果我不推荐调用 GC.Collect(),那么填充网格数据源总是需要大约 1 秒。但调用

每次迭代都花费了我一些时间。

我知道打电话GC.Collect不是一个好的选择。任何人都可以建议我如何提高我的应用程序性能。

我更关心用户机器,因为我的机器配置非常好,而用户机器可能没有那么快。

0 投票
1 回答
602 浏览

c# - WPF - VirtualizingStackPanel 在 DataGrid 中进入编辑模式时请求所有项目

我正在使用DataGridwith CellEditingTemplates。由于ItemsSource使用了数据虚拟化集合(AlphaChiTech 解决方案),它一次只能按需获取大小为 100 个项目的页面。

它工作得很好,直到一个单元格被双击进入编辑表单,然后VirtualizingStackPanel一个接一个地请求所有项目。当然,作为副作用,最终会请求所有页面。

有没有办法解决这个问题?

编辑:

我找到了一种解决方法,它可能会帮助我遇到这种情况的人:

最终我观察到,在切换到编辑表单后行高保持不变的情况下,VirtualizingStackPanel 并没有请求所有项目。在解决方法之前,我的编辑表单略高。

现在我设置了单元格(正常和编辑)中控件的 MinHeight,这样在切换到编辑表单时高度不会改变。

不幸的是,这仅在某些条件下有效。在某些情况下它不起作用:

  • 使用RowDetailsTemplate. 一旦可见,虚拟化就被破坏了。我假设行详细信息属于行本身,因此行高再次增加。

  • 分别在 CollectionView 上分别引发 Collection 的 Reset 事件。根据我的经验,这通常是使用DataGrids.

  • 减少Count集合的数量(这也不会引发 Reset 事件)。

有趣的是,增加Count集合的数量确实有效。但是我必须增强 AlphaChiTech 的功能(幸运的是,源代码在 github 上),因为没有Count开箱即用的 Reset 事件就无法更改(至少我没有找到)。此外,DataGrid's项目必须在之后立即刷新,否则会引发异常,说明ItemsControl和集合确实具有不一致的状态。

行详细信息对我来说是可选的,但在不破坏数据虚拟化的情况下删除项目至关重要。因此,问题仍然存在。我的解决方法很可能会帮助拥有固定大小集合的人,但不幸的是不是我自己。

0 投票
2 回答
836 浏览

c# - 具有列的 Wpf TreeView,具有 UI 虚拟化和 DataVirtualization

我正在寻找一个 wpf 控件(免费或商业)。树应支持所有常规树视图特征(样式、数据模板、控件模板……)并支持使用列布局(有点像 Visual Studio 中的 Watch 窗口)。

但是也:

  1. 良好的虚拟化 - 应该支持数千个元素
  2. 内置数据虚拟化- 数据的加载和处理速度很慢,不能一次按一定顺序完成(有点像分页)
  3. 视图模型支持和绑定,我更喜欢使用视图模型来研究树而不是研究树本身
  4. 内置支持搜索和过滤数据表示,然后将匹配反映在树上的可视元素上
  5. 准确、快速的滚动和移动到特定元素的选项(我更喜欢使用项目的 ViewModel 表示)。

不想自己构建树,我正在寻找至少支持虚拟化和数据虚拟化的现有实现。

0 投票
0 回答
307 浏览

data-binding - 使用数据虚拟化设置 FlipView 项目源的问题

这是我之前的问题( UWP Problems Setting GridView Items source using x:Bind )的后续。

在那种情况下,我使用了 Mirosoft 的数据虚拟化示例中的随机访问文件数据源,并且从未填充过网格。问题是我没有提出属性更改事件。网格现在运行良好。

我现在的问题是,我试图在翻转视图控件中使用数据源,而不是网格视图。数据源确实被初始化,更改属性通知被提出,但翻转视图中没有显示任何内容。

翻转视图可以显示来自虚拟集合的数据吗?

这是我的模型的代码:

我在 XAML 中的 FlipView:

谢谢,任何建议表示赞赏。

0 投票
0 回答
342 浏览

c# - WPF Listbox UI 虚拟化不起作用

基本列表框模板

DataTemplater 项目模板包含一个带有绑定控件的堆栈面板。绑定源是来自数据集的数据表。

这里的问题是虚拟化不起作用,因为我在项目模板中指定了 C# 代码查找,并且该代码被数据表中的所有项目命中,而不仅仅是可见项目?

我该如何解决这个问题?