在WP81上使用Caliburn导航返回时,如何缓存以前的视图?

本文关键字:缓存 视图 何缓存 WP81 Caliburn 导航 返回 | 更新日期: 2023-09-27 18:13:12

使用WP81中的Caliburn,当你导航到一个视图模型并从那里导航到另一个视图模型时,一旦你导航到上一个视图模型,无论你在页面上设置了什么缓存模式,视图都会重新加载。

是否有任何方法(或什么是最好的方法)以某种方式"缓存"以前的视图/视图模型状态时导航回它?

在WP81上使用Caliburn导航返回时,如何缓存以前的视图?

关于这一点,Github上有一个开放的问题,请参阅https://github.com/Caliburn-Micro/Caliburn.Micro/issues/95。我在评论中描述了我的解决方案https://github.com/Caliburn-Micro/Caliburn.Micro/issues/95#issuecomment-124473140。

基本上,你应该通过直接使用3.0.0分支来使用3.0.0分支中可用的CachingFrameAdapter,或者将CachingFrameAdapter取出并在当前Caliburn版本(2.x)的代码中使用它。

如果你像我一样采取第二条路线,将CachingFrameAdapter添加到您的项目中,并将App.xaml.cs中的PrepareViewFirst替换为此

protected override void PrepareViewFirst(Frame rootFrame)
{
   RegisterNavigationService(rootFrame);
}
public INavigationService RegisterNavigationService(Frame rootFrame, bool treatViewAsLoaded = false)
{
    if (rootFrame == null)
        throw new ArgumentNullException("rootFrame");
    var frameAdapter = new CachingFrameAdapter(rootFrame, treatViewAsLoaded);
    container.RegisterInstance(typeof(INavigationService), null, frameAdapter);
    return frameAdapter;
}