当您导航到视图模型并从那里导航到另一个视图模型时,在WP81中使用Caliburn,一旦您导航回上一个视图模型,无论您在页面上设置什么缓存模式,视图都会从头开始重新加载。
有什么办法(或者最好的方式)以某种方式"缓存"导航回到它之前的上一个视图/ viewmodel状态?
答案 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;
}