如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?

Posted

技术标签:

【中文标题】如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?【英文标题】:How to create a custom VirtualizingPanel on Windows Phone 8.1 / Windows 10? 【发布时间】:2015-10-09 01:20:06 【问题描述】:

我正在尝试在 Windows 10 和 Windows Phone 8.1 (app link) 中执行此操作:

我有一个名为 FluidPanel 的自定义类,它扩展了 Panel 并覆盖了方法 MeasureOverride 和 ArrangeOverride。 目标是创建Google Keep appearence。好的,一切正常。

但是,因为我使用 基本面板作为 ItemsPanelTemplate,所以项目重新排序不起作用。此外,转换不起作用,也不能虚拟化。

所以,我想知道如何创建一个自定义面板来重新排序项目并像 GridView 的 ItemsWrapGrid 一样进行虚拟化

我尝试扩展 VirtualizingPanel 类,但它不断向我显示这个看起来像错误的错误:

'VirtualizingPanel' 不包含取 0 的构造函数 论据

希望有人能指点一下。

【问题讨论】:

【参考方案1】:

您不能从 C# 中的“VirtualizingPanel”继承,因为它是一个 Windows 运行时类,并且没有 Windows 元数据(windows.winmd 文件)公开的构造函数。 UI 虚拟化只是一个概念,会有点复杂,但可以从头开始实现。 我认为在 WPF 中实现虚拟化面板的博客系列将是一个好的开始。

第 1 部分:http://blogs.msdn.com/b/dancre/archive/2006/02/06/526310.aspx

第 2 部分:http://blogs.msdn.com/b/dancre/archive/2006/02/13/531550.aspx

第 3 部分:http://blogs.msdn.com/b/dancre/archive/2006/02/14/532333.aspx

P.S:博客是关于WPF的,但基本思路是一样的。

【讨论】:

感谢您的澄清!但我不应该专注于虚拟化部分,重新​​排序和转换是我面临的真正问题。我要删除这个问题。请看这个:***.com/questions/31623799/… @Jeffrey 我知道它是一个老线程,但我确实需要创建一个自定义的虚拟化面板。你提到的文章中的 VirtualizingTilePanel 是从 VirtualizingPanel 派生的,并实现了 IScrollInfo。那么如果无法扩展 VirtualizingPanel,我应该从 UWP 或 Windows 商店应用程序中派生哪个类?我是否也必须使用 c++ 将其创建为 Windows 运行时类?谢谢!

以上是关于如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?的主要内容,如果未能解决你的问题,请参考以下文章

我如何采取截图编程中的Windows Phone 8.1

如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?

如何填充文本框-Windows Phone 8.1

如何在 windows phone 8.1 中检查文件夹是不是为空

当前的 Windows Phone 8.1 应用程序是不是可以在没有任何代码修改的情况下在 Windows 10 移动设备上运行?

如何在 Windows Phone 应用程序 8.1 rt 中安排本地通知?