c# - 序列化 View 或 View 模型

标签 c# xaml mvvm uwp xml-serialization

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

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

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

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

最佳答案

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

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

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

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

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

    关于c# - 序列化 View 或 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459473/

    相关文章:

    c# - WPF 堆栈面板 "Jumps"

    javascript - 在 WPF Web 浏览器中调用 Javascript,无需调度程序

    c# - 使用 MVVM 设计模式的应用程序中的 Controller 是什么

    c# - 在C#中更改属性后,是否有一种简单的方法可以清空文本框?

    c# - 保存 encog 网络 c#

    c# - 如何在执行其他函数时停止一个函数?

    c# - 将用户控件的属性绑定(bind)到数据

    c# - 如何在选择 TextBlock 中的文本的位置显示弹出窗口

    c# - 使用 XmlSerializer 获取列表时可以省略干预级别吗?

    c# - 实时磁贴更新的最佳选择