问题标签 [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# - 带有 VirtualizingStackPanel 的 ListBox 中的额外空间
我正在使用将 ItemsPanel 设置为 VirtualizingStackPanel 的 ListBox。
看起来不错:http: //i.stack.imgur.com/53KLx.png
但是当我通过快速拖动拇指进行水平滚动时,会出现奇怪的额外空间 http://i.stack.imgur.com/GHl8k.png
当我调整窗口大小时,额外的空间神奇地消失了。它从何而来?如何摆脱它?
如果我使用简单的 StackPanel 一切都很好,但我需要使用虚拟化。
c# - FlipView WP 8.1 中 VirtualizingStackPanel 的视觉缺陷
在我的项目中,我正在处理FlipView
图像集合。为了获得更好的性能,我正在使用VirtualizingStackPanel
它并且工作正常,但我注意到 Flipview 中最后一项集合的奇怪行为。如果我滚动到最后一个项目,然后滚动回上一个项目,最后一个图像有时会消失片刻,就像重绘(闪烁)一样。这是来自msdn的修改后的 Flipview 示例:http : //1drv.ms/1d2WGzg。您可以在第一页自己尝试Scenario1_Population
。
编写我添加到此示例中的代码:
有没有人遇到过这个问题?我将不胜感激任何建议!
wpf - 将虚拟化项目控件滚动到底部
初始加载时如何将虚拟化项目控件滚动到底部?
我试过这个,加载时滚动条会跳。最初它在中间位置,然后跳到底部..有没有其他方法可以显示虚拟项目控件中的最后一个项目。
wpf - VirtualizingStackPanel 底部对接
我正在开发一些聊天应用程序并使用 VirtualizingStackPanel。当我的消息列表向下滚动时,我希望它停靠在容器的底部。但是当我使用虚拟化时,总会有一些空白,因为面板停靠顶部消息,而不是底部。这是一个例子:左边是我拥有的,右边是我想要的。
这是我的标记。
是否有可能将消息对齐底部并保存虚拟化?任何线索都会有所帮助。
c# - Virtualizingstackpanel 在组合框 winrt 上丢失选定的值
我有一个包含大约 500 个 ListBox 项的简单 ListBox。我在一个项目上有 2 个组合框。
我的问题是:当我向下滚动时,我会丢失所有 SelectedItem 绑定数据。
我试图将 Virtualizingstackpanel 替换为 Stackpanel,但它会占用我所有计算机的 RAM。所以我需要让它与 Virtualizingstackpanel 一起工作。
问题是:如何将所选项目绑定到它们在 listboxItems 上的组合框?
编码:
这是在我的 ListBox 中的 ItemTemplate 中。
c# - IsVirtualizingWhenGrouping 和 TreeView
对对象进行分组时,TreeView 中的虚拟化存在问题。在 .NET 4.5 中添加了有用的东西作为 VirtualizingPanel.IsVirtualizingWhenGrouping,我试图在下一个代码中使用它:
程序启动时,我用包含的子对象展开父对象并滚动 TreeView。当父对象移出可见部分时,程序抛出 NullReferenceException,来源:PresentationFramework,StackTrace:
在 System.Windows.Controls.VirtualizingStackPanel.FindScrollOffset(Visual v)
在 System.Windows.Controls.VirtualizingStackPanel.MakeVisible(Visual visual, Rect rectangle) 在 System.Windows.Controls.ScrollViewer.ExecuteNextCommand() 在 System.Windows.Controls.ScrollViewer.OnLayoutUpdated(Object sender, EventArgs e) 在 System.Windows .ContextLayoutManager.fireLayoutUpdateEvent() 在 System.Windows.ContextLayoutManager.UpdateLayout() 在 System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
在 System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
在 System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget) 在 System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 在 System .Windows.Threading.ExceptionWrapper.TryCatchWhen(对象源,委托回调,对象参数,Int32 numArgs,委托 catchHandler)
此异常在事件 VirtualizingStackPanel.CleanUpVirtualizedItem 之前引发。
有什么办法可以解决吗?谢谢你的回答!
UPD#1:在 .Net 4.5.2 和 .net 4.6.1 平台上测试
c# - WPF - VirtualizingStackPanel 在 DataGrid 中进入编辑模式时请求所有项目
我正在使用DataGrid
with CellEditingTemplates
。由于ItemsSource
使用了数据虚拟化集合(AlphaChiTech 解决方案),它一次只能按需获取大小为 100 个项目的页面。
它工作得很好,直到一个单元格被双击进入编辑表单,然后VirtualizingStackPanel
一个接一个地请求所有项目。当然,作为副作用,最终会请求所有页面。
有没有办法解决这个问题?
编辑:
我找到了一种解决方法,它可能会帮助我遇到这种情况的人:
最终我观察到,在切换到编辑表单后行高保持不变的情况下,VirtualizingStackPanel 并没有请求所有项目。在解决方法之前,我的编辑表单略高。
现在我设置了单元格(正常和编辑)中控件的 MinHeight,这样在切换到编辑表单时高度不会改变。
不幸的是,这仅在某些条件下有效。在某些情况下它不起作用:
使用
RowDetailsTemplate
. 一旦可见,虚拟化就被破坏了。我假设行详细信息属于行本身,因此行高再次增加。分别在 CollectionView 上分别引发 Collection 的 Reset 事件。根据我的经验,这通常是使用
DataGrids
.减少
Count
集合的数量(这也不会引发 Reset 事件)。
有趣的是,增加Count
集合的数量确实有效。但是我必须增强 AlphaChiTech 的功能(幸运的是,源代码在 github 上),因为没有Count
开箱即用的 Reset 事件就无法更改(至少我没有找到)。此外,DataGrid's
项目必须在之后立即刷新,否则会引发异常,说明ItemsControl
和集合确实具有不一致的状态。
行详细信息对我来说是可选的,但在不破坏数据虚拟化的情况下删除项目至关重要。因此,问题仍然存在。我的解决方法很可能会帮助拥有固定大小集合的人,但不幸的是不是我自己。
silverlight - 为什么 Silverlight 数据网格中的 VirtualizingStackPanel.IsVirtualizing 抛出异常?
我在我的数据网格中添加了 VirtualizingStackPanel 用于按需加载记录,以消除显示所有记录所需的加载时间过长。
但是当我试图在数据网格上加载数据时,得到了这个错误......有人能指出我在哪里纠正这个错误吗?提前致谢。
{System.Windows.Markup.XamlParseException:设置属性“System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing”引发异常。[行:37 位置:123] ---> System.NotSupportedException:无法设置只读属性“System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing”。在 MS.Internal.XamlMemberInfo.SetValue(Object target, Object value) 在 MS.Internal.XamlManagedRuntimeRPInvokes.SetValue(XamlTypeToken inType, XamlQualifiedObject& inObj, XamlPropertyToken inProperty, XamlQualifiedObject& inValue) --- 内部异常堆栈跟踪结束---
wpf - KB4013198 在 VirtualizingStackPanel 中导致 StackOverflowException
我有一个使用 Windows 10 v1511(即,不是周年更新)的客户。安装更新 KB4013198 后,当滚动使用 VirtualizingStackPanel 的 ListBox 时,我的 WPF 应用程序现在会定期崩溃。我能够使用适当的 Windows 版本构建 VM,并使用附加的调试器重现问题 - 实际错误是 VirtualizingStackPanel.MeasureOverrideImpl 中生成的 StackOverflowException。
我没有更改代码 - 在应用 Windows 更新之前,一切正常;应用更新后,出现错误。
升级到周年更新也解决了这个问题。
我什至开始调整我的应用程序的 XAML 以尝试解决这个问题,我有点不知所措。
有什么建议么?
c# - 带有 VirtualizingStackPanel 的 ItemsControl 中的准确滚动条控件
我有一个使用 VirtualizingStackPanel 的 Itemscontrol 来显示一个巨大的(并且不断增长的)项目列表:
虚拟化就像一个魅力,但我无法正确管理滚动条。如果我尝试以编程方式(例如加载时)滚动到底部,就像我在非虚拟化 StackPanels 中所做的那样:
scrollviewer 尝试滚动到底部,但并没有完全这样做 - 它总是在“真实”底部之前停止一点。这在某种程度上是有道理的,因为 VirtualizingStackPanels 使用滚动值来确定要渲染的项目,但这完全是我的磨难,最终用户无法接受。
如何滚动到“真实”底部?如果我想精确地向下滚动到某个项目的顶部位于视口的顶部(除非“真实”底部自然地太近),我该怎么办?