WinRT XAML工具包预加载页面
我想问WinRT XAML工具包的创建者一个问题,这个工具包对我帮助很大。WinRT XAML工具包预加载页面,xaml,windows-8,windows-runtime,winrt-xaml,winrt-xaml-toolkit,Xaml,Windows 8,Windows Runtime,Winrt Xaml,Winrt Xaml Toolkit,我想问WinRT XAML工具包的创建者一个问题,这个工具包对我帮助很大。 在WinRT中使用富页面的最佳机制是什么 这些是条件: 大约有2个页面有很多元素,背景中有一些高分辨率的图像。显然,他们需要花费时间来加载内容。这就是为什么我使用工具箱中的方法 这些页面也是最常用的 这就是为什么我会选择在需要时不断预加载这些页面(创建、绘制、填充),或者创建自己的页面缓存来存储它们(可能我是盲人,工具包已经有了这个功能?。 您能告诉我这个问题的最佳实践是什么,是否有第三种方法吗?要添加更多的背景信息,W
在WinRT中使用富页面的最佳机制是什么 这些是条件:
您能告诉我这个问题的最佳实践是什么,是否有第三种方法吗?要添加更多的背景信息,WinRT XAML工具包库有两个控件:
AlternativeFrame
和AlternativePage
是基础Frame
和Page
类的替代实现Windows 8 SDK中的开箱即用,用于处理UI导航-类似于在web浏览器中导航页面的方式。这些替代控件的API几乎与基本控件中的API相同,但它增加了对异步开发模型、页面转换动画和在请求页面之前预加载页面的更多支持
当前,Preload()
方法在后台预加载给定类型的页面并将其放入缓存中,当调用Navigate()
方法导航到该类型的页面时(而不是实例化新页面),将使用缓存中的页面,因此可以立即显示该页面,但是,缓存会被清空,下次你想导航到同一个页面时,你需要再次预加载它。如果您不经常返回预加载的页面,并且该页面使用了大量内存,那么这种方法效果很好,但是如果您希望将该页面保留在缓存中,则没有内置的支持。原始页面类有一个属性,允许将页面配置为在第一次加载时保存在缓存中,这对您来说是一个不错的选择,但是AlternativePage
还没有这种支持。由于我有一些空闲时间,我正在考虑将它添加到那里,所以您可能会决定等待我完成它。其他选择包括
- 将页面显示在导航框的顶部,而不是在导航框中导航到页面,这样您就可以在需要时简单地显示/隐藏页面
- 或者,您可以切换回标准的框架/页面控件,并在
页面上设置
,使其永远保留在内存中,尽管您确实会丢失NavigationCacheMode=“Required”
功能Preload()
- 或者您可以自己修改工具箱
- 或者您可以自己缓存页面内容-只需将页面的
保存在某种缓存中(例如,将页面类型映射到内容的内容
),然后将其从页面中删除(将内容设置为空值)当您离开页面,然后在导航到页面时将其添加回页面,并且内容在缓存中找到时。在这种情况下,您可能希望将字典
设置为单独的内容
,并跳过调用用户控件
在构造函数中,如果您从缓存中检索内容,因为您只能有一个InitializeComponent()
,并且在单独的内容
中定义它将允许您获取自动生成的代码,该代码在UserControl
中执行,从而允许您轻松访问命名元素,注册事件处理程序等InitializeComponent()
Preload()
,并等待您实现NavigationCacheMode=“Required”
,因为它是可以等待的。然后比较它们。我还将考虑其他可能性。这比我预期的时间要长一些,但源代码更新已签入。使用AlternativePage
的NavigationCacheMode
属性来控制缓存。默认情况下它是关闭的,就像在Page
类中一样。哇,当时我在AlternativeFrame中做了一个小修改,在预加载的缓存旁边添加了我自己的持久缓存。而且效果很好。但您需要为它更改框架的行为。我非常感激,当然我会试试的。此外,我们现在正在尝试在xaml上从png过渡到整个设计。