序列化View或ViewModel

时间:2019-01-31 11:22:13

标签: c# xaml mvvm uwp xml-serialization

我最近开始在UWP中进行开发。我们正在开发高度依赖图形的软件,并且同事建议我们应该在单个XML中序列化每个View,由于属性值,静态类型处理,我认为这不是一个好主意,并且我不确定我们是否可以处理序列化正确处理异步过程,我们有多个UserControl在其他视图中重复使用。我想在我们的ViewModel中,也许在我们的Model中序列化数据。我想问:

与ViewModel序列化相比,View序列化有哪些优势?

如果ViewModel序列化不利,为什么?

编辑:我们正在使用依赖的对象,我不知道我们是否能够它们序列

1 个答案:

答案 0 :(得分:2)

根据我的经验,ViewModel序列化的优点是

  • 由于您对ViewModels进行了编码,因此可以完全控制序列化
  • 因为ViewModels不依赖于View(在正确应用MVVM时),可以使用单元测试来进行(反)序列化

是的,当从View触发序列化时,按正确的顺序执行序列化可能会比较棘手,但只需将其冒泡到ViewModel层次结构的顶部,然后一次性序列化整个ViewModel。

如果需要序列化View的(依赖项)属性,请首先尝试将这些属性绑定到ViewModel。如果成功了,那么要做的就是序列化ViewModel。

如果View的某些属性无法绑定到ViewModel,则可以向该视图添加接口,该接口可以从View的ViewModel调用,该接口提供了从视图向ViewModel读写这些属性并再次返回的方法。 (反)序列化ViewModel时调用这些方法。