在我对事件注册(您可以在这里找到ViewModel Event registration和ViewModel Lifetime)感到惊讶之后,现在我正在考虑ViewModel tombstoning:
在Tombstoning的情况下,ViewModel序列化是一个好方法吗?我想的是不同的视图模型引用同一个类的情况。在Viewmodels序列化和反序列化的情况下,引用的类实例可能有重复的实例,不是吗?
如果有专门的状态类,它的唯一目的是包含所有的应用程序数据,everyviewmodel从那里获取数据(我指的是对数据的引用)并更新其中的数据,而应用程序只想序列化这些专门的类,那不是更好吗?
如有此方面的经验,不胜感激。
问候SkyG
Caliburn Micro在框架中内置了许多功能,允许您将视图模型或整个图形的属性保存到手机状态和应用程序设置中。您只需要创建一个类并从StorageHandler继承即可。
public class PivotPageModelStorage : StorageHandler<PivotPageViewModel>
{
public override void Configure()
{
this.ActiveItemIndex().InPhoneState().RestoreAfterViewLoad();
}
}
还有你发布的另一个问题。CM有一种很好的方法来处理手机上的强制视图优先方法。它允许你通过指定VM来进行页面导航,它将处理其余的部分。此外,如果你指定参数来传递CM,它将从查询字符串中提取这些参数,并在目标VM上填充属性。
public void GotoPageTwo()
{
navigationService.UriFor<PivotPageViewModel>().WithParam(x => x.NumberOfTabs, 5).Navigate();
}