问题标签 [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.
c# - 滚动到虚拟化 ItemsControl 的元素
我有一个ItemsControl
在 a 中显示它的项目ScrollViewer
,并进行虚拟化。我正在尝试将其滚动ScrollViewer
到它包含的(屏幕外,因此是虚拟的)项目。但是,由于该项目是虚拟化的,因此它实际上并不存在于屏幕上并且没有位置 (IIUC)。
我已经尝试BringIntoView
过子元素,但它不会滚动到视图中。我也尝试使用TransformToAncestor
,TransformBounds
和手动执行此操作ScrollToVerticalOffset
,但TransformToAncestor
永远不会返回(我猜也是因为虚拟化,因为它没有位置,但我没有证据)并且它永远不会执行之后的代码。
是否可以通过虚拟化滚动到项目ItemsControl
?如果是这样,怎么做?
c# - 继承 VirtualizingStackPanel,InternalChildren.Count 返回零
我为元素排列实现了一些额外的逻辑。
我覆盖 MeasureOverride 和 ArrangeOverride。如果我从 StackPanel 继承一切正常。VirtualizingStackPanel 作为父级的情况不是这样。调试显示 InternalChildren.Count 返回零,就好像还没有生成元素的容器一样。我绝对想念 VSP 的一些东西。我猜它正在虚拟化。谁能帮我这个?
PS 继承的两种变体都针对 ItemsControl.ItemsPanel 进行了测试
windows-phone-7 - WP7 Listbox如何显示加载更多项目
我知道 Windows Phone 7 ListBoxVirtualizingStackPanel
默认使用优化内存。
但是,当我向视图模型添加更多项目时,列表框不会显示这些新项目。我必须向上滚动,然后向下滚动才能看到它们。
我的视图模型确实实现了IList
周围很多文章都有这个问题,比如这个指南
如何解决这个问题?
windows-phone-7 - WP7 Listbox UI 虚拟化如何工作
我正在使用具有 的 ListBox,VirtualizingStackPanel
据说默认情况下支持 UI 虚拟化。
但是,当我设置我的listStudent(类型为ObservableCollection
,其中有 5 个学生)时ItemsSource
,我的Listbox
. 然后,每当用户滚动到末尾时,我都会向我的listStudent添加另外 5 个学生(当然会通知 UI)。但我看到消耗的内存不断增加。StackPanel
和记忆力没什么区别
UI 虚拟化如何工作?向listStudent添加新项目时如何保持低内存?
windows-phone-7 - ListBox的ControlTemplate样式时如何保持虚拟化?
我读到,当样式不正确时,ListBox
将失去其虚拟化。作为notacat 在这个问题中的回答,他的解决方案是可以的。
我意识到每当我将 ItemsPresenter 放入另一个容器中时,例如Grid
, Border
, ...
ListBox
将立即失去其虚拟化。但我确实想放置一个TextBlock
before ItemsPresenter
,而ScrollViewer只接受 1 个子元素。
如何处理?
更新:我看到这篇文章,Derek Lakin所做的是将其放置TextBlock
到ScrollViewer
模板中,但如何将其TextBlock
放入ScrollContentPresenter
?
P/S:我确实设置VirtualizingStackPanel
了ItemsPanel
我的ListBox
.
windows-phone-7 - 如何让列表框不记得它的最后一个视图
我有一个Listbox
绑定到一个ObservableCollection
. 在我的应用程序中,我需要清除此集合OnNavigatedFrom
并将其读入OnNavigatedTo
以减少内存。
但是,我看到当使用StackPanel
as时ItemsPanelTemplate
,Listbox
可以记住它的最后一个视图(它的选定项),而VirtualizingStackPanel
不会。
那么如何在使用时禁用此行为StackPanel
?
c# - 在虚拟化 WPF TreeView 中滚动非常不稳定
如果TreeView
对具有不同大小的项目启用虚拟化,则会出现多个问题:
垂直滚动条随机改变它的大小,并且在查看整个树后不记得元素的大小。用鼠标滚动很难。
经过一些上下滚动,
ArgumentNullException
从框架代码中抛出。
复制很简单:创建一个新的 WPF 应用程序,然后将这段代码放入MainWindow.xaml
并将此代码放入MainWindow.xaml.cs
运行应用程序时,将鼠标光标移动到树视图中,使用鼠标滚轮滚动到底部,然后滚动到顶部,然后再次开始向下滚动。在中间某处抛出以下异常:
您还可以看到异常不是唯一的问题。上下滚动时,滚动条不断改变其大小。(同样的问题不会出现在ListBox
无法预测大小的情况下,但是在查看整个列表后会记住总高度。)
问题:如何使滚动条行为正常并摆脱异常?(我不介意链接到替代 TreeView 控件或支持这种情况的虚拟化面板。)
wpf - 如何装饰 VirtualizingStackPanel
有没有简单的方法来装饰VirtualizingStackPane
l?如果我VirtualizingStackPanel
直接输入ScrollViewer
,虚拟化就可以了。我的目标是覆盖该Decorator.OnRender()
方法并在Panel
.
.net - WPF Virtualized ItemsControl ScrollChanged 行为在 .Net 4.5 中改变了吗?
我们的一个应用程序包含一个 UserControl,其中我们有多个 ItemsControls 层,它们在滚动时保持同步。ItemsControl 是虚拟化的。该应用程序的目标是 .Net 4.0,而不是 4.5,并且该控件在安装了 .Net Framework 4.0 的系统上运行良好。然而,我们现在有一台安装了 .Net Framework 4.5 的电脑,它似乎不是 100% 向后兼容(或者系统存在另一个问题)。
发生的情况是,在 4.0 中,任何滚动(鼠标滚轮/箭头、移动滚动条)将 ScrollChanged 事件的 ExtentHeight 设置为整数值(因为它是虚拟化的并且 CanContentScroll 为真),同时在 a 上运行相同的 4.0 应用程序安装了 4.5 的系统,似乎在通过单击并按住鼠标移动滚动条时将值设置为十进制值。
我们已经用这个小测试窗口重现了它,它是我们控件的一个子集。在仅安装了 .Net 4.0 的 PC 上运行它只会在 MesasgeBox 中显示整数值,而在安装了 .net 4.5 的 PC 上,它还会显示十进制值。
MainWindow.xaml.cs:
MainWindow.xaml:
这是一个错误还是记录在某处?这是.Net 4.5的向后兼容性问题,还是实际上与4.5完全无关,而是一些系统配置?
问题是实际可见范围(它仍然像应有的那样滚动内容)不等于范围的值,因此,其他层在我们的应用程序中不再保持完全同步。我们已经创建了一个解决方法,但我们仍然没有预料到这一点。
silverlight - WP7 - VirtualizingStackPanel 底部边距不起作用
我在 ListBox ItemsPanel 中有 VirtualizingStackPanel。如果我设置 Margin="0,0,0,50" 则不显示边距,但如果我设置左边距(或顶部或右边) Margin="50,0,0,0" 则边距正确。
如果我将 VirtualizingStackPanel 更改为 StackPanel,则底部边距效果很好。
这是我的代码: