2

有没有办法检查 Windows 8 应用程序中的页面/框架是否存在于缓存中?假设我有两个页面:主页和客户端(启用导航缓存)。当我从家(通过按钮)导航到客户端时,客户端是从 OnNavigatedTo 方法中的数据库加载的。我通过返回按钮导航回主页,然后再次导航到客户端。现在我看到客户端是从缓存加载的,这很好,但又是从 OnNavigatedTo 方法加载的。当我第一次打开页面时,我只想从数据库加载客户端一次。稍后只需从缓存中加载客户端。

我如何检查客户端是否先前加载或仅在第一页加载时加载?也许还有其他方法?

谢谢!

4

2 回答 2

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;
}

这是一个博客。我建议你先通过这个:)

博客

编辑 - - - - - - - - - - -

这里有两个链接。因为我从来没有遇到过从以前的缓存加载文件的情况,所以我可以分享一些发现:)

这是accesscache课程

访问缓存

这是winJS

winJS缓存

如果您将所需页面的缓存设置为 true,则访问缓存可能会满足您的要求:)

于 2013-10-01T10:13:40.983 回答
1

好的,我解决了我的问题。重要的是启用 NavigationCacheMode。在 OnNavigatedTo 方法中,我只检查从数据库中保存数据的列表是否包含任何元素。在打开的第一页它是空的,所以我将数据从数据库加载到我的列表中。因此启用 NavigationCacheMode,变量中的数据存储在缓存中,并在导航到此页面时加载。可能需要一些标志。

于 2013-10-01T17:26:49.277 回答