【问题标题】:Serializing View or ViewModel序列化视图或视图模型
【发布时间】:2019-01-31 11:22:13
【问题描述】:

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

View 序列化相对于 ViewModel 序列化有哪些优势?

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

编辑:我们正在使用依赖对象,我不确定我们是否可以序列化它们。

【问题讨论】:

  • 不太清楚你在这里的意思。 XAML 是 XML,并在您构建项目时将其反序列化为 C# 代码。 ViewModel 序列化有时需要在停用后持续存在。越小越好。
  • 对不起。澄清一下,我们计划在将数据存储为二进制文件之前使用序列化。 (顺便说一句,这对我来说是荒谬的,在这种情况下我更喜欢 db。)

标签: c# xaml mvvm uwp xml-serialization


【解决方案1】:

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

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

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

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

如果存在无法绑定到 ViewModel 的 View 的属性,请向 View 添加一个可以从 View 的 ViewModel 调用的接口,该接口提供了一种将这些属性从 View 读取和写入 ViewModel 并再次返回的方法.在(反)序列化 ViewModel 时调用这些方法。

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 2017-10-20
    • 2012-12-25
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 2016-11-29
    • 2014-07-05
    相关资源
    最近更新 更多