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