问题标签 [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.
wpf - WPF 虚拟化在 Windows 经典主题的 Windows 2008 服务器 R2 上不起作用(禁用 aero)
我在使用 windows server 2008 R2 时遇到了一个奇怪的问题。我有启用虚拟化的 WPF 应用程序(虚拟化堆栈面板和树视图的延迟加载)。它在 Windows 7 系统上按预期工作。然而,在具有经典 wndows 主题(没有关闭 aero aka destop experiance)的 Windows 2008 R2 系统上,它没有。当我调试它时,控件的私有属性指示启用了虚拟化,但是我看到所有数据都是通过我的虚拟化模型获取的。
编辑:启用用户体验等但不是windwos7主题仍然存在问题。这是在 TreeView 控件上。我使用 thsi 技术来启用数据虚拟化:http: //www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx
关于可能发生的事情的任何想法
c# - 带有嵌套 ScrollViewer 的 ScrollIntoView
在我的应用程序中,我有一个包裹在 ScrollViewer 中的画布(画布比屏幕尺寸大)。在这个画布上,我放置了其他控件。画布上的元素之一包含一个虚拟化的 DataGrid(有 2000 多行......所以也涉及滚动)。现在我有一个函数,它根据行元素的某些值(自动触发)在 DataGrid 中选择一行。选择行后,我调用
什么工作得很好。事实上,它正在向好的方向发展。我想要的是选择 DataGrid 中的元素,然后 DataGrid 应该滚动到正确的位置。但我的 Canvas scrollviewer 也以某种方式接收了这个请求并在那里滚动。
我已经尝试拦截 ScrollChangedEvent 并设置处理标志。但它不起作用。
问题:
1)如何限制 ScrollIntoView 调用对本地用户控件的影响。
2)如果那不可能,我该如何自己滚动?我需要计算滚动查看器的垂直偏移量,但由于它是虚拟化的,我不知道如何找出行高?
有什么建议么?
我添加了一个快速示例来演示主要设置。当点击其中一个按钮时,我只希望 DataGrid 滚动,而不是 ScrollViewer 继续画布。
silverlight-4.0 - 具有可写位图的项目的列表框的 Silverlight UI 虚拟化
我创建了一个带有两列的显示控件 - 1. 缩略图列表和 2. 图像列表框。图像被写入可写位图,然后添加到列表框项目。
我创建了自定义选项卡控件,以便可以打开多个实例。这里的问题是打开多个选项卡,内存使用量高达 1.2GB。
列表框本身是否使用 ui 虚拟化?
想知道是否有更好的解决方案。
wpf - DataGrid 滚动问题修复导致性能和内存问题
我们遇到了 WPF 数据网格的滚动问题。通过一些分析发现 ScrollViewer.CanContentScroll = true 是罪魁祸首。删除并使其为假,滚动问题已得到修复。但是昨天我正在分析由于错误地绑定了 50k 记录而导致 WPF 应用程序的内存占用增加到超过 1.3Gb 的错误。它仍然质疑绑定甚至 10k 记录的能力。用户不想要分页。(这是一个要求,对此无能为力!)
在进一步的读者中发现设置 ScrollViewer.CanContentScroll = false 会使 UI 虚拟化为 false。这使 WPF 绑定所有记录并将其呈现在屏幕上。这会导致内存占用量激增和性能问题。
现在我们认为如果要绑定的记录最少,则设置 ScrollViewer.CanContentScroll= false,否则设置为 true。
简而言之:我们要么陷入滚动问题,要么陷入 UI 虚拟化。有什么东西可以同时解决吗?已阅读有关数据虚拟化的信息,但我们真的需要走那么远吗?我是否遗漏了 .net4.0 中的任何可以帮助我们的东西?
wpf - 如何在 ListView 中为不可见(虚拟化)项目绑定 IsSelected
我需要在 WPF 应用程序中处理大量数据。
我已将大型集合绑定到 ListView,并且正在使用ItemContainerStyle
将列表项的 IsSelected 属性与我的对象的IsSelected
属性绑定,这样当在 中选择该项目时ListView
,我的对象的IsSelected
属性也将设置为 true。通过这样做,我可以轻松地仅对列表中已选择的对象执行命令。
我在 ListView 中使用 UI 虚拟化,因为否则应用程序会很缓慢。但是因为我的整个集合中只有一个子集在列表中可见,所以当我使用 CTRL+A 选择列表中的所有项目时,只有加载的项目的IsSelected
属性设置为 true。不可见的项目(虚拟化的项目)的IsSelected
属性设置为 false。这是一个问题,因为当我选择列表中的所有项目时,我希望IsSelected
集合中所有项目的属性都设置为 true。
我创建了一些示例代码来说明问题:
主窗口.xaml
主窗口.xaml.cs
单击表单顶部的按钮时,它会计算集合中“IsSelected”属性设置为 true 的项目。可以看到,当你按下CTRL+A选择列表中的所有项目时,它显示只选择了 19 个项目。
有人知道解决这个问题的方法吗?我不能关闭虚拟化,因为我会得到可怕的性能。
wpf - 滚动查看器作为视频内存管理的主人
我不知道你们中有多少人观察到这一点,当我们最小化一个复杂的 WPF 应用程序时,我们可以观察到使用内存的减少。此外,当我们恢复 WPF 窗口时,它会重新获得该内存。
我的问题是这个
- 这就是我们所说的显存吗?
- 我们在 WinForms 应用程序中也观察到同样的事情吗?我问这个是因为我看到 MSWord 在我最小化它时没有做任何类似的事情。
- 另外,如果windows操作系统能很好地管理这个内存,那么我们为什么不虚拟化所有东西,而不是虚拟化堆栈面板,为什么我们不让滚动查看器成为UI虚拟化的大师呢?
我希望我能得到一些有趣的答案。
c# - 数据虚拟化和 SelectionMode 扩展
我有一个 ListBox 绑定到实现 IList 和 IList 的 ItemsSource,但与绑定到非虚拟化 IList 相比,SelectionMode=Extended 行为似乎不是我所期望的
IList 行为:
VirtualizedCollection:IList,IList 行为:
它几乎像黑匣子?方法正在调用某种“获取当前选定的行”,在第二种情况下返回 1,但在第一种情况下获取真正的第 10 行。
如果特异性会有所帮助,Paul McClean 的 WPF 数据虚拟化是我正在使用的 virtualizedcollection 实现。当绑定时使用可视化集合时,他的源代码也有相同的错误。
wpf - 如何在 Canvas 中选择性地加载大量控件
我有一个大尺寸的 Canvas 和许多小的用户控件。一次只有一小部分画布在屏幕上可见。用户控件由绑定到 ViewModel 的数据的 ItemsControl 创建。
现在由于用户控件的数量很大,加载整个画布需要很长时间。我只想加载当前可见框架中的那些控件。如果我移动画布,则应加载新可见区域下的用户控件。我想这样做的主要原因是与加载大量用户控件相关的性能滞后。我想在 Canvas 中完成 VirtualizingStackPanel 对 StackPanel 所做的事情。
有没有办法做到这一点?
谢谢您的帮助
wpf - 当我为列表视图使用模板时 UI 虚拟化停止
我有一个从 WPF 中的 listview 扩展的控件。如果我使用自定义模板覆盖“模板”,则 UI 虚拟化将不再存在。
有人可以帮助我进行 UI 虚拟化和自定义模板。
我的 ListView 控件 XAML
模板“CustomListView2”如下。
任何帮助,将不胜感激。
wpf - 在设置 CanContentScroll =“false”时是否有虚拟化 ItemsControl 列表的解决方法?
正如我在虚拟化 ItemsControl 中学到的那样?, 我需要设置
ScrollViewer.CanContentScroll = "true"
能够在我的 ItemsControl 中虚拟化列表。然而,这会导致很多滚动问题,包括但不限于颠簸滚动和我展开的孩子的一部分在窗口底部被切断。我已经对此进行了广泛的搜索,似乎很多人都对此有疑问。但是,我还没有遇到任何解决方法。
有没有人可以解决这个问题?