有没有办法检查Windows 8应用程序中的页面/帧是否存在于缓存中?假设我有两个页面:Home和Clients(启用导航缓存)。当我从家中导航到客户端(按钮)时,客户端从OnNavigatedTo方法的数据库加载。我导航回Home by Back按钮,然后再回到客户端。现在我看到客户端是从缓存加载的,这很好,但是从OnNavigatedTo方法再次加载。当我第一次打开页面时,我只想从数据库加载一次客户端。稍后只需从缓存加载客户端。
我如何检查客户端之前是否已加载或仅在首页加载时加载它们?也许还有其他方法吗?
谢谢!
答案 0 :(得分:1)
这是一个解决方案......
Sinche没有人想在metro应用程序中从缓存加载,因此最好重置相应帧的缓存大小。对于要从缓存加载的页面。只需保持一个if循环。并检查forwardStack
对象中的History
。
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
base.OnNavigatingFrom(e);
if (e.NavigationMode == NavigationMode.Back)
{
ResetPageCache();
}
}
private void ResetPageCache()
{
var cacheSize = ((Frame) Parent).CacheSize;
((Frame) Parent).CacheSize = 0;
((Frame) Parent).CacheSize = cacheSize;
}
这是一个博客。我推荐你首先完成这个:)
EDIT ---------------------
这是两个链接。由于我从未面临从先前缓存加载文件的情况,因此我可以分享一些调查结果:)
这是accesscache
类
这里是winJS
如果您为所需的页面将缓存设置为true,则访问缓存可能符合您的要求:)
答案 1 :(得分:1)
好的,我解决了我的问题。重要的是启用NavigationCacheMode。在OnNavigatedTo方法中,我只检查我从数据库保存数据的列表是否包含任何元素。在第一页打开时它是空的,所以我将数据从数据库加载到我的列表。因此,启用NavigationCacheMode时,变量中的数据将存储在缓存中,并在导航到此页面时加载。可能需要一些标志。