背景
Windows Phone 8 开发过程中Tombstone的处理真是让我们又爱又恨,它能让程序看起来一直在运行。但处理墓碑却是个很麻烦的事情,传统的方式我们需要在程序Deactived事件触发后,将需要保存的状态放到State中,然后用户回来后再加载出来。而如果我们的程序采用MVVM架构,情况会更复杂,有多复杂相信每个人都有所体会。话不多说,让我们继续看CM框架中神奇的墓碑处理。
从简单的代码开始:
在测试页面,我们添加一个TextBox起名为Name:
然后在ViewModel中添加Name属性实现INPC接口。
只需如此,当用户输入信息到Textbox中,墓碑再回来,Textbox中的输入依然为墓碑前的内容。依然从问题来分析问题:
1、StorageHandler是做什么用的?
这个类便是处理墓碑的类,CM在程序启动时会反射出所有继承此类的类,然后进行处理,当程序Deactived之后,便会自动将配置的属性存入State中,而当程序再次启动时,会将此属性重新还原到ViewModel中
2、Property函数和InPhoneState函数?
这两个函数用来配置ViewModel中对应的哪个属性放入什么位置,例如上面代码中便将Name属性放到State中进行保存
3、只需要这些代码么?
我们要在Bootstrapper的Configure中调用RegisterPhoneServices,这个函数会注册用于墓碑处理的类,用于我们的操作。
总结
CM着实是个值得深入研究的一个类库,作者解决问题的思路很值得我们学习,而诸多实现方法也是我们学习语法的好地方。
而就使用而言,CM对WP系统提供的额外支持,使它成为WP APP MVVM架构的不二之选。
QQ交流群:182659848