问题标签 [virtualizingstackpanel]
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 - VirtualizingStackPanel 在应用主题时未垂直对齐菜单项
在应用 WPF 主题 - BureauBlue.xaml 主题之前,我可以看到菜单项与以下代码垂直对齐:
但是,一旦我应用主题,相同的逻辑就是水平对齐菜单项。
你能帮我解决这个问题吗?
windows-store-apps - VirtualizingStackPanel 滚出屏幕时丢失图像
我有一个 GridView,它有一个 VirtualizingStackPanel 作为 ItemsPanel。这些项目绑定到我的 viewModel 上的模型对象的集合。我在 itemtemplate 中绑定的特定属性是一个图像和三个字符串。当应用程序启动时,一切都按预期工作。但是,当我将项目滚动到屏幕外并返回时,图像会消失。字符串继续按预期运行。如果我将 ItemsPanel 更改为堆栈面板,我没有这个问题,所以我很确定它与 virtualizingstackpanel 有关。我只是不知道从哪里开始调试问题。
非常感谢任何回应。
谢谢,詹姆斯
wpf - 如何获取下拉菜单中显示的 wpf 组合框的第一项?
我在 ComboBox 中有一个大列表(约 10000 个项目),它使用 VirtualizingStackPanel 类。滚动性能很好,无论如何我想知道如何识别 GUI 中显示的顶部项目 - 不一定是索引为零的项目,而是当前滚动项目列表顶部的项目。? 谢谢你。
windows-store-apps - 检测 VirtualizingStackPanel 中的项目可见性以延迟加载图像
这是我的场景:
我有一个显示从网络服务检索到的数据的 Gridview。数据的数量可能非常大。因此,VirtualizingStackPanel 用于显示内容。其中一些数据在渲染时可能需要检索图像(延迟加载)
我(非常有限)的理解是,VirtualStackPanel 将自动请求数据,因为网格需要呈现数据。如果需要渲染的元素是图像类型,我会发送一个占位符图像并提交一个异步网络调用来检索该图像。
但是,我注意到正在接收渲染所有元素的调用,因此发送了大量用于检索图像的网络调用(尤其是如果大多数项目都是图像类型)。
问题:我是否应该在代码(XAML 或 C#)中为 VirtualizingStackPanel 配置一些东西,或者应该去检测项目是否真的被显示然后发出网络调用?
这是我的 XAML。
这是绑定到 XAML 中的图像的项的属性
这是下载拇指的异步调用
c# - VirtualizingStackPanel 中 ListBoxItem 的高度
我正在开发一个应用程序,其中整个 UI 按百分比调整大小。因此,我的 ListBoxItems 的高度也需要由它来控制。但是我在让它工作时遇到了一些问题。
列表框样式:
列表框项目样式:
我有一个 PercentageConverter,我在其他地方使用它,它就像一个魅力。但在这种情况下,它看起来从未被调用或没有效果。项目的高度大于 ListBox 本身。
gridview - GridView and Virtualizing Stackpanel to display a grid of items
I am trying to create a grid containing elements such as
Since the data is very large, I need to use UI virtualization and what I see in most example is the VirtualizingStackPanel
Here is how I have setup my Gridview in XAML . The problem is that the following code creates a horizontal row of single element (which makes sense given it is just a stack panel).
How would one go about making it display a grid that extends horizontally using virtualizingstackpanel? I have no groups in my data so all the examples that show virtualizingstackpanel show this ? I am completely new at Windows Store app dev (mostly have been on iOS and Android ) so would appreciate any code sample or resources.
Thank you
wpf - 具有 IsPixelBased=true 和正确拇指大小的 VirtualizingStackPanel?
我正在使用 itemscontrol 来保存许多不同大小的控件。由于需要显示的控件数量,我决定启用虚拟化(在某些情况下“加载”控件需要一秒钟左右的时间,我真的需要将它们显示在一个长列表中,而不是使用某种崩溃)。
下面是我所拥有的一个简单测试(我正在使用这里提到的反射黑客)。问题是垂直滚动条上的拇指在您拖动时会更新,我认为这是有道理的,因为滚动查看器本身会随着新控件的出现而即时更新,但我想知道是否有解决方案?
是否可以进行虚拟化、基于像素的滚动和大小反映所有控件而不仅仅是其处理的控件的拇指?
作为次要问题。为了查看禁用虚拟化时花费了这么长时间,我从 StackPanel 派生了 Measure/Arrange 函数,发现所有加载时间都花在了这些函数上。在我的情况下,测量时间为 600 毫秒,排列时间为 200 毫秒。WPF 分析工具也指出布局是杀手。这似乎是一个非常长的时间。诚然,像这样渲染 250 个控件(根据 Snoop 是 10k 个元素)并不是您最想做的事情,但是任何人都可以解释为什么需要这么长时间吗?是否在创建新控件时更新整个布局?我已经为 Slider 控件尝试了一些自定义模板,以尝试减少它使用的元素的数量并取得了一些成功,但后来我失去了功能。
wpf - .Net 4.0 中 VirtualizingStackPanel.CacheSize 的替代方案
virtualizingstackpanel 在决定可视化可见项目周围的项目时会考虑哪些因素?
例如:有一个列表视图,当查看项目 7 时,项目 6 和 8 也将被可视化,尽管它们没有被看到。
如何限制可视化项目,以便仅可视化可见项目?
c# - wpf如何在scrollviewer的虚拟化stackpanel中对所有可见容器调用measure
目标:重新测量,然后仅重绘那些在滚动查看器的虚拟化堆栈面板中显示的信号图。
当前版本:
目前我有一个依赖属性(UnitsOfTimePerAxisDivision),只要滚动查看器(信号图)中的容器更新,它就会影响度量。
但是,这会更新每个信号图,包括那些不可见的信号图。运行测量然后重绘每个信号太耗时了。
- 我怎样才能只更新可见的?
我想过做一些这样的测试,
通过基本上设置一个propertychangedcallback,我在其中测试每个信号是否可见。我最终还是会测试所有的信号,但至少我不会画出所有的信号。
我的第二个问题是是否有某种方法可以通过在测量/排列中调用的函数来实现这一点。
我对虚拟化堆栈面板的理解如下:在顶层,我们有一个包含滚动查看器的树视图。scrollviewer 的 controltemplate 包含一个网格,scrollcontentpresenter 在其中将项目放置在设置大小的列和行中。
所以让我们假设我告诉scrollviewer重新测量并且scrollviewer在屏幕上占据100x100。这导致滚动查看器通过调用可用大小为 100x100 的 grids.measure(available size) 来测量网格。
然后网格减去滚动条的大小(我们只猜十个),并告诉 scrollviewerpresenter 用 90x90 来衡量自己。演示者使用虚拟化堆栈面板,然后给孩子们无限的大小来测量自己(我认为是垂直和水平)。但是,虚拟化堆栈面板仅测量子级(信号图),直到它填充了 90x90 的大小,然后排列阶段从滚动查看器向下进行到虚拟化堆栈面板。
如果是这种情况,我可以在信号图的排列方法的末尾进行调用,并且只应排列和重绘屏幕上的信号图。
但是,我发现当我为滚动查看器和信号图在测量覆盖中设置断点时,信号图中的断点没有被命中。
如果重新测量滚动查看器,我无法理解为什么不重新测量信号图。
测量函数是否存储了其父级传递给它的最后一个大小约束(availableSize),然后除非约束改变,否则不执行新的测量?我认为可能导致无法测量的另一种可能性是,滚动查看器是否独立于其子项的大小计算其大小,然后仅在大小是新的时才测量它们。
但也许问题是这样的。如果有人有反射器并且可以给我实际的滚动查看器测量覆盖代码,那将是惊人的。如果没有,我明天可能会尝试获得反射器并弄清楚如何使用它。
覆盖Measureoverride(大小availableSize){大小newSize = availableSize。if (availableSize != this.DesiredSize) { 测量 chilren(); } }
如果不是这种情况,那么是什么原因导致无法测量信号图?
编辑:
是的,我有一些东西要虚拟化。我并不完全疯了。主要是疯了。应用这种风格似乎打破了虚拟化。删除它使一切正常。
使用内置的虚拟化比尝试实际测试每个存在的信号图的可见性要好得多。我仍然不知道上面#2 的答案,但如果我能让这个虚拟化工作,我就不需要它了。但是,我想保持我目前的风格,只是弄清楚为什么这种风格会破坏虚拟化。
编辑2:
在此页面上找到了解决方案: 我在此页面上找到了解决方案:
覆盖默认滚动查看器样式时,我没有将附加属性绑定到滚动查看器内容演示器。呃,令人惊讶的是,这条线是多么难以找到。我快疯了,以为我不知道虚拟化实际上应该做什么。
现在唯一麻烦的是我还没有完全理解布局过程是如何工作的。如果我有一个带有 metadaoption 影响测量的依赖属性,然后依赖属性发生变化,该项目将重新测量。如果元素的大小发生变化,父母会重新测量吗?
这将是我的猜测,但它仍然不能解释为什么我有 scrollviewer 的孩子在 scrollviewer 的测量周期中没有重新测量。
wpf - ListBox WPF- 具有两行的 VirtualizingStackPanel,如 wrappanel
我的列表框:
我需要同样的,但使用 VirtualizingStackPanel。如果我用 VirtualizingStackPanel 更改 WrapPanel,在我有很多行之前,项目只显示在一行中。我需要帮助。