- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含大量嵌套数据的 WPF TreeView ,我已启用虚拟化,该虚拟化在加载数据方面发挥作用。但是滚动变得不稳定,直到整个 View 滚动一次然后它才稳定下来(仍然不是很好)。我已经覆盖了 ScrollViewer,我可以看到 VirtualizingStackPanel 中的范围高度在滚动时不规则地变化。
有谁知道解决这个问题的方法吗?
感谢任何帮助。
以下 TreeView Xaml 的相关部分:
<TreeView ItemsSource="{Binding Folders.ObservableTree}" Name="FoldersTreeView"
AutomationProperties.AutomationId="foldersview_treeview_folders" TabIndex="0" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
VirtualizingStackPanel.CleanUpVirtualizedItem="VirtualizingStackPanel_OnCleanUpVirtualizedItem"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.IsDeferredScrollingEnabled ="True"
VirtualizingStackPanel.IsVirtualizing="True"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
VirtualizingStackPanel.ScrollUnit="Pixel"
VirtualizingStackPanel.VirtualizationMode="Standard"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
VirtualizingStackPanel.CacheLengthUnit="Item">
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True" CanVerticallyScroll="True"/>
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeView.Template>
<ControlTemplate>
<view:ScrollViewer2 Padding="{TemplateBinding Control.Padding}" Focusable="False" Name="TreeViewScrollViewer"
CanContentScroll="True">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</view:ScrollViewer2>
</ControlTemplate>
</TreeView.Template>
最佳答案
仅当 ItemsPresenter
中的所有项目都有效时,虚拟化才能正常工作。 (并且 TreeView
实现为具有嵌套 ItemsPresenter
的 ItemsPresenters
)具有相同的高度。与 TreeView
通常情况并非如此。
这样做的主要原因是,因为它是虚拟化的,所以它必须估计某些本来可以精确测量的东西:
VirtualizationStackPanel
将假设所有 child 与当前可见的 child 具有相同的高度,并根据此估计所需的高度(而不是实际测量所有 child ),这将报告给 ScrollViewer
,如果子项的高度可变,则此估计值可能会相差很大,并且会根据滚动位置而变化,从而导致滚动条不断调整大小。
关于wpf - Treeview 虚拟化和不稳定的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132989/
首先让我说,我知道这是一个相当普遍的话题,但在搜索它时,我找不到另一个可以澄清以下情况的问题。如果这可能是重复的,我很抱歉,但是你去: 我是并发新手,为了回答问题,我得到了以下代码: a)为什么除了“
我有这个简单的 MigLayout: 最后两个组件 (JScrollPanes) 应具有相同的宽度。但事实上,如果我调整窗口大小,它们会随机跳跃。是否可以使它们的宽度相等?我还能如何排列组件使其看起来
我的 jQuery 导航存在问题。它没有通常的导航设置(ul > li > ul 等)。我这里有一个 jsfiddle:http://jsfiddle.net/RMRGH/2/ 如果将代码放在本主题中
我只使用 HTML/CSS 制作了一个饼图计时器动画。你可以在这里看到它: https://jsfiddle.net/yisusans/why2wy5q/ .timer-container { b
我有一个菱形网格(因此是一个正常的正方形网格,旋转了 45 度),我希望能够在该网格内部拖动一个点。我使用 canvas 元素制作了我的网格并应用了一个转换:rotate(45deg)。但是,这会导致
我目前正在用 C 编写应用程序,我打算在其中模拟 ubuntu 中的 CPU 负载低于 100%。我使用阶乘算法对我的 CPU 施加压力,并使用 nanosleep 函数来调节 CPU 使用率。目标是
我想使用subprocess.Popen来运行一个进程,具有以下要求。 我想在进程运行时将 stdout 和 stderr 通过管道传回 Popen 的调用者。 如果进程仍在运行,我想在 timeou
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个客户端,使用套接字从记录 PC (RP) 接收 EEG 数据,以产生一些在线反馈。 RP 有一个通过 TCP 发送数据的服务器。数据与 block 一起发送,每个 block 都有一个标
我在 Win 10 64 位上运行 PG 9.5。我正在 VS 2016 下编译 C。 我正在形成一个函数,它将演变成一个有点复杂的野兽。为了测试我最初的努力,该函数接受一个 int4 数组(这工作正
我正在尝试更新 使用 jquery 标记,但是,当我单击“提交”按钮时,我使用 innerHTML 插入的文本很快就会消失。除非我使用 Firefox,在这种情况下它似乎可以工作 - 如果 - 我插入
使用 st_distance_sphere 时从 MySQL 给出的结果看起来真的很不稳定。 在用户表上运行此查询:(距离点9.45公里以内的用户列表) select *, st_distance_s
所以我昨天发布了一个关于在容器中放置一些 div 的问题,以便它们与容器的边缘对齐,但在中间它们之间的间距相等。由于它们是可排序的(使用 jQuery UI Sortable),所以这很复杂。 Gre
我正在尝试将一个 int 字符串转换为一个 int 数组。 这是我的代码: int premaster1 = 3255859; char hashString[100]; int hashString
我用 Codeigniter 的 Active Record 做了一个简单的选择查询,但不知何故它与我真正的 MySQL 记录有不同的结果。 MyModel.php class MyModel ext
我正面临关于 StampedLock 的奇怪行为.以下是主要有问题的代码行: StampedLock lock = new StampedLock(); long stamp1 = lock.read
我使用 Cython 做了一个相当复杂的 python 扩展。在我得到一些奇怪的内存行为之前,它工作正常,形式如下: *** glibc detected *** /usr/bin/python2.7
请引用这个 fiddle :http://jsfiddle.net/eQegA/3/ .spinner { width: 100px; height: 100px; bord
我有一个不稳定的 Java JMS 问题。片刻工作正常,但不规律地抛出以下异常并中断执行。 请务必注意,这不会停止代理。 javax.jms.JMSException: Peer (vm://test
我编写了一个使用 永久运行的程序C 库。 它基本上解密参数中给出的密码。问题是有时它可以完美地工作,有时它会失败(使用相同的公钥/私钥/密码,返回此错误: message: error:040650
我是一名优秀的程序员,十分优秀!