问题标签 [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 的树视图,具有层次结构和虚拟化
我在为应用程序设计 UI 时遵循要求。我们有如下所示的层次结构
1级
2.1级
- 3级
- 1000Thumbnails .....(在 ListBox 内的 Wrap Panel 内)
- 3级
2.2级
- 3级
- 1000Thumbnails .....(在 ListBox 内的 Wrap Panel 内)
- 3级
我们希望为缩略图启用虚拟化,因为控件的数量可以超过 1000。
然而,为了使虚拟化工作,我们需要限制 TreeView 中 ListBox 的大小。有了这个限制,我们最终有两个滚动条,如上图所示。
无论如何我们可以避免在 ListBox 中滚动查看器,但仍然可以使用 TreeView 控件的 ScrollViewer 进行虚拟化和滚动(使用鼠标)缩略图?
如果您需要更多信息,请告诉我。
提前感谢您的帮助!
wpf - ListViewItems 的生命周期
默认情况下,WPF ListView
(带有GridView
)是虚拟化的。ItemSource
因此,当我使用 MVVM 模式(使用 Caliburn.Micro 但我想这并不重要)时,我将我的属性绑定到 ViewModel 中的可观察集合。
当ListView使用(在范围内并由 UI listviewitem 表示)和未使用时(不再在范围内并在用户界面)?
延迟加载一些详细数据会非常好,但仅适用于可见记录。
aurelia - Aurelia ui-virtualization infinite-scroll-next 功能在数据刷新后没有被命中
我正在使用 aurelia 的库来使用andui-virtualization
创建一个表。Html 看起来像这样:virtual-repeat
infinite-scroll-next
这很好用,除了我有某些 ui 组件和交互来更新我的list
数组中的内容。一旦更新,infinite-scroll-next
函数 ( getMore()
) 永远不会被调用。我更新这样的东西:
在哪里filterOptions
通过 ui 更改并apiService.getData()
从 http 调用返回一个承诺。表中的数据正确更新,但无限滚动随后被破坏。
我做错了什么,还是这是一个错误ui-virtualization
?
编辑:
似乎有一些属性添加到数组__array_observer__
和__observers__
. 考虑覆盖整个数组并因此删除这些属性可能会导致问题,我尝试了一种方法,我只需适当地添加或删除元素。这也不起作用。
编辑:
如果我在数组中留下少于 7 个原始元素,它似乎会失败。
c# - 自定义树视图的虚拟化
我制作了一个包含多列的自定义 TreeView。一切都运行良好,直到树中有很多项目。
我尝试通过这样做来启用虚拟化VirtualizingPanel.IsVirtualizing="True"
(VirtualizingStackPanel.IsVirtualizing
如果您是 < .NET 4.5 则将是),但它不仅没有加快速度,而且实际上使加载时间变得更糟。
在普通的 TreeView 上,这个属性可以解决问题,但我找不到让它在我的自定义树上工作的方法
树视图项.cs
树列表视图.cs
节点.cs
视图模型.cs
主窗口.xaml
我尝试将 ItemPanel 模板化VirtualizingStackPanel
,但它也没有帮助。
我去掉了扩展器部分,因为它不相关。您可以双击父节点展开树,加载子节点需要很长时间。
c# - Popup 内的 UI 虚拟化
我无法让虚拟化在TreeView
内部工作,Popup
而TreeView
在Popup
.
ViewModel 和 Node 类
当我在窗口内展开树的父级时,它不需要时间,而在弹出窗口内展开一个需要大约 20 秒。
MS 确认这是2010 年代的一个错误,并建议使用 ControlTemplate 将 ToggleButton 和 TreeView 合并到一个控件中,但它对我没有任何影响。
c# - 内部具有不同方向的 WPF 虚拟化 TreeView 不会虚拟化?
我有一个TreeView
多层的 XAML。使用此解决方案,我可以获得每个不同层的 XAML 配置外观,并确认它是 UI 虚拟化。
但是,当我将特定层切换为与其父层VirtualizingStackPanel
不同Orientation
(无论是通过像这个解决方案这样的代码还是使用Snoop都无关紧要),然后 UI 虚拟化就会关闭,并且一旦我展开它就会TreeView
实现所有TreeViewItem
层。
在研究这种行为时,我注意到在VirtualizingStackPanel
您深入研究其MeasureOverride
功能的参考源中,您会在第 2116 行找到以下评论:
计算此面板的方向是否不同(原文如此)其父或后代
微软似乎有意为这种情况禁用了 UI 虚拟化。所以我有两个问题:
- 为什么层之间的方向一致性很重要?
- 如何让 UI 虚拟化在其中
TreeView
具有不同方向的情况下工作?
wpf - 设置 WPF 控件的 MinHeight 是否可以作为 VirtualizingStackPanel.ExtendViewport 失败的解决方法?
如果是的话,最好的选择是什么?具有虚拟化或其他功能的 DataGrid?这种情况很少发生,所以试错不是一种选择。我使用的 xaml 和转换器的一部分在最后。
当刷新 DataGrid 的 itemssource (ICollectionView) 时,有时会发生这种情况(可能是 1/1000?)。
2017-10-06 09:00:35:myapp.exe 错误:0:未处理的异常。System.ArgumentException:高度必须为非负数。
在 System.Windows.Rect.set_Height(双值)
在 System.Windows.Controls.VirtualizingStackPanel.ExtendViewport(IHierarchicalVirtualizationAndScrollInfo 虚拟化信息提供者,布尔是水平的,矩形视口,VirtualizationCacheLength 缓存长度,VirtualizationCacheLengthUnit 缓存单元,大小 stackPixelSizeInCacheBeforeViewport,大小 stackLogicalSizeInCacheBeforeViewport,大小 stackPixelSizeInCacheAfterViewport,大小 stackLogicalSizeInCacheAfterViewport,大小 stackPixelSize&,InxtendedViewport 大小)
在 System.Windows.Controls.VirtualizingStackPanel.IsExtendedViewportFull()
在 System.Windows.Controls.VirtualizingStackPanel.ShouldItemsChangeAffectLayoutCore(布尔 areItemChangesLocal,ItemsChangedEventArgs 参数)
在 System.Windows.Controls.VirtualizingPanel.OnItemsChangedInternal(对象发送者,ItemsChangedEventArgs 参数)
在 System.Windows.Controls.Panel.OnItemsChanged(对象发送者,ItemsChangedEventArgs args)
在 System.Windows.Controls.ItemContainerGenerator.OnItemAdded(对象项,Int32 索引)
在 System.Windows.Controls.ItemContainerGenerator.OnCollectionChanged(对象发送者,NotifyCollectionChangedEventArgs 参数)
在 System.Windows.WeakEventManager.ListenerList`1.DeliverEvent(对象发送者,EventArgs e,类型 managerType)
在 System.Windows.WeakEventManager.DeliverEvent(对象发送者,EventArgs 参数)
在 System.Collections.ObjectModel.ReadOnlyObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs 参数)
在 System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
在 System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 索引,T 项)
在 MS.Internal.Data.CollectionViewGroupInternal.Insert(对象项,对象种子,IComparer 比较器)
在 MS.Internal.Data.CollectionViewGroupRoot.AddToSubgroup(对象项,LiveShapingItem lsi,CollectionViewGroupInternal 组,Int32 级别,对象名称,布尔加载)
在 MS.Internal.Data.CollectionViewGroupRoot.AddToSubgroups(对象项,LiveShapingItem lsi,CollectionViewGroupInternal 组,Int32 级别,布尔加载)
在 System.Windows.Data.ListCollectionView.AddItemToGroups(对象项,LiveShapingItem lsi)
在 System.Windows.Data.ListCollectionView.ProcessCollectionChangedWithAdjustedIndex(NotifyCollectionChangedEventArgs 参数,Int32 调整的OldIndex,Int32 调整的新索引)
在 System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
在 System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 索引,T 项)
在 MS.Internal.Data.EnumerableCollectionView.LoadSnapshotCore(IEnumerable 源)
在 MS.Internal.Data.EnumerableCollectionView.LoadSnapshot(IEnumerable 源)
在 System.Windows.Data.CollectionView.RefreshInternal()
XAML:
上面 XAML 中使用的 IMultivalueConverter 的转换方法:
c# - 滚动时不应用模板
我正在使用带有滚动查看器的网格。我设计了没有更多 UI 元素的网格。在打开该报告时,由于性能问题,我只呈现了第一页 UI 元素。滚动时,需要呈现剩余的 UI 元素。
我的问题是,
滚动滚动查看器模板不会应用于几秒钟的剩余元素。但首页 UI 元素已使用模板正确更新。
为什么执行滚动模板一秒钟都没有应用?
Xaml 文件的代码片段:
后面的代码:
提前致谢。
wpf - 组合框的虚拟滚动选项
我需要将可见项目显示到视图中,而不是在组合框控件中显示所有行。滚动时,我们需要加载下一个可见项目。
我怎样才能做到这一点?另外,如何确保它是否虚拟加载?
示例:
前端:
参考链接后: