在WP81上使用Caliburn导航时如何缓存上一个视图?

时间:2015-09-17 12:37:25

标签: c# xaml caching windows-phone-8.1 caliburn.micro

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

有什么办法(或者最好的方式)以某种方式"缓存"导航回到它之前的上一个视图/ viewmodel状态?

1 个答案:

答案 0 :(得分:2)

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

基本上,您应该使用3.0.0分支中的CachingFrameAdapter直接使用3.0.0分支或从中取出CachingFrameAdapter并在当前Caliburn的代码中使用它版本(2.x)。

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

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