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

wpf - 如何避免在 VirtualizingStackPanel.MeasureOverride 中冻结在分组虚拟化 ListView 中?

当 ListView 被分组并且

(只有上面的 IsVirtualizingWhenGrouping="True" 会导致冻结)

向下滚动会导致整个程序冻结。它再也不会变得活跃。在 VS2015 中中断时,调用堆栈如下所示:

所以我的问题是:如何避免冻结并仍然具有分组虚拟化?

0 投票
1 回答
911 浏览

c# - C# wpf 搜索文本并在使用滚动视图虚拟化堆栈面板中查找下一个功能

我有一些小应用程序可以读取一个非常大的文件。为了显示这个文件(可以有大约百万行),我使用 virtualizedStackpanel 和滚动视图来虚拟化 UI。

在这个文件中,我实现了类似搜索的功能,它突出显示包含搜索字符串的行。每行由文本块表示。

所以我有我的集合绑定到的 ItemsControl。作为项目数据模板,我有 contentControl(带有高亮转换器,因此行会改变颜色)并且 ItemsPanelTemplate 是 VirtualizingStackPanel 和 ItemsControl 的 ControlTemplate 是带有嵌套 ItemsPresenter 的 ScrollViewer

在后台代码(ViewModel)中,我有一个接受字符串的函数,并在包含所有行的 ObservableCollection 中搜索这个字符串(并且文本块由每一行组成)。和两种搜索方法。第一种方法在集合中查找结果并将特殊字符插入到 TextBlock 文本中,以便可以应用突出显示。(以及从先前搜索中删除突出显示的文本的第二个功能)

现在我想有一些能力将滚动视图集中到找到的结果上。当您在文本编辑器中按 CTRL + F 然后单击“查找下一个”时,类似的东西。

但我不知道如何在不破坏 MVVM 规则的情况下实现这一点。我想过在文本块中添加更多的控制字符串/字符和结果,但是我怎样才能强制滚动视图滚动到它们上呢?

如果没有像 ListView 这样的东西,这甚至可能吗?

0 投票
1 回答
165 浏览

wpf - 如何让很少发生的 WPF 异常更频繁地重现?

此时将没有最小的可重现示例,因为我最多只能每天重现一次,并且只能使用在多个控件中有数千个 xaml 行的产品主窗口。

我正在调查另一个 WPF 导致的崩溃,当主窗口调整大小或程序认为它调整大小 (WM_SIZE) 时可能发生崩溃。stacktrace 中的控件是一个虚拟化的 Treeview。所以我问是否有想法如何更频繁地复制下面的异常?

例外

0 投票
1 回答
923 浏览

c# - ItemsControl 未虚拟化

我无法ItemsControl让它正确虚拟化。调试显示集合被快速初始化,但所有项目都被添加到控件而不是子集(我只是在组成项目的 TextBox_Initialize event in theUserControl` 中放置了一个 TracePoint)。

注意:我看过其他类似的问题,但无法用这些答案解决这个问题。

视图模型:

SingleTransactionViewModel只是另一个实现INotifyPropertyChanged. 没什么特别的。

这是包含ItemsControl

我把它SingleTransactionView归结为一些非常简单的东西:

0 投票
1 回答
379 浏览

wpf - 如何防止 WPF 的 ContentControl 重用 DataTemplates?

我偶然发现了著名的TabControl虚拟问题。我想TabControl用样式列表(以显示选项卡)和ContentControl(以显示选项卡的内容)替换。但是,如果两个内容共享它们的类型,它似乎ContentControl具有相同的重用行为。DataTemplates

有没有办法强制为所有显示的项目ContentControl单独实例化?DataTemplates


编辑:示例

假设我们有以下 UserControl 作为文档视图模型的 DataTemplate:

文档控制.xaml:

文档控制.xaml.cs:

主窗口的视图模型如下所示:

主窗口.xaml

我希望文档显示两个相等的索引 - 一个直接来自文档的视图模型,第二个由控件从文档的视图模型中提取(这是在附加视图模型时对控件执行一些初始化的模拟)。在启动应用程序并选择不同的项目后,将始终产生 (0),而 0 是因为控件只初始化了一次,并且 ContentControl 重用了 DataTemplate。

我问的另一个问题是:如何在设置 DataContext之后和DataContext 即将更改之前可靠地调用代码?然后我就可以(再次)reliaby初始化和取消初始化特定视图模型的视觉效果。

0 投票
2 回答
64 浏览

wpf - ListBox内DataGrid的虚拟化

我的布局:
在此处输入图像描述

外部作品的虚拟化,ListBox但内部作品DataGrid没有。可能是因为外部ListBox包含ScrollViewer内部:

提供了一个关于ScrollViewer其子内容的窗口。问题是子内容被赋予了无限的虚拟空间。在这个虚拟空间中,DataGrid它以全尺寸呈现自身,并显示其所有子项。

看起来没有简单的解决方案。
但我什至想要一个解决方法。也许以某种方式限制外部的虚拟ScrollViewer空间?

0 投票
2 回答
552 浏览

c# - 在 ItemsHost 面板上调用 Measure 后,无法更改 ItemsControl 上的 VirtualizationMode 附加属性

当我尝试VirtualizationMode在我ListView的 to上设置时,我Recycling从标题中得到错误:

在 ItemsHost 面板上调用 Measure 后,无法更改 ItemsControl 上的 VirtualizationMode 附加属性。

我正在尝试以编程方式设置附加属性,但是当我尝试VirtualizationMode在 XAML 设计器中定义时,会从标题中抛出相同的错误。有人遇到过类似的问题吗?

我对 XAML 的看法是:

我尝试在VirtualizationMode这里设置:

编辑:我将listview传递给viewmodel的窗口代码是:

以及代码的视图模型部分(减去 getter 和 setter 以减少占用的空间):

0 投票
1 回答
5616 浏览

javascript - 如何将 Material-UI Autocomplete 与 react-virtualized 一起使用?

我在项目中使用Material-UI中的自动完成组件。由于我有很多渲染选项,因此虚拟化将非常有益。所以我从文档中的虚拟化示例react-window开始,使用. 一切都很好,但是该项目已经依赖于react-virtualized,我想避免添加一个解决类似问题的新项目。因此,基于示例,我尝试使用fromreact-window重新实现它。Listreact-virtualized

代码示例

https://codesandbox.io/s/sleepy-hypatia-igog8?fontsize=14&hidenavigation=1&module=%2Fsrc%2FVirtualizedAutocomplete.js&theme=dark

问题

如上面的沙箱所示,它有点工作。不起作用的是键盘导航。您可以使用键盘导航,但是Listbox当您在可见元素之外导航时,不会滚动到突出显示的值。

我试过的:

  • 覆盖组件onKeyDownAutocomplete然而,这完全覆盖了 keydown 功能,需要我重新实现它。
  • onKeyUp用于保留onKeyDown功能并找到具有data-focus属性的元素,然后scrollToIndexList组件上使用。这适用于某些情况,但如果用户按住键一段时间并最终出现在过度扫描渲染项目之外的索引上,它就会中断。

有没有人有一个很好的方法react-virtualized来虚拟化 Material-UI Autoselect 组件中的选项?我应该使用其他东西List吗?

我最后的手段是使用useAutocomplete钩子并重新实现渲染逻辑,但由于我只是在虚拟化之后我想尽可能避免这种情况。

0 投票
2 回答
616 浏览

reactjs - 有没有办法虚拟化(例如使用 react-window)antd 嵌套表?

antd在他们的文档中有一个示例,用于通过react-window集成虚拟滚动以提高大型表数据的性能

有人为antd中的嵌套表做过类似的事情吗?或者有任何指示/提示如何做?

0 投票
1 回答
151 浏览

c# - ScrollViewer 中的 WPF ListView 虚拟化

我有一个要求,即在页面顶部显示用户信息,并且图像的 ListView 将跟随它,并且我编写了以下代码(这是一个伪代码,但我认为这足以解释我所做的事情):

但是在这种情况下,VirtualizingWrapPanel(已经在另一个没有明确 ScrollViewer 声明的单独 ListView 上进行了测试并且它可以正常工作)和 ListView 的虚拟化将不起作用,因为 ScrollViewer 的所需高度是正无穷大并且所有项目都在ListView 将被扩展和渲染,我想知道是否有一种方法可以使 ScrollViewer 中的 ListView 可以虚拟化?谢谢