首页 > 解决方案 > 域、DTO 和 MVVM 模型 (WPF) - 将 INotifyPropertyChanged 放在哪里?

问题描述

我需要使用 MVVM 模式创建 WPF 应用程序作为我的解决方案的一层。
解决方案有:Domain、DAL(返回 Domain 对象)、DTO、BLL(返回 DTO 对象)。

问题是,要实现 MVVM 模式,在我看来,我必须在 WPF 项目中复制我的域模型,以便我可以在它们上实现 INotifyPropertyChanged 接口?然后我还必须将这些模型映射到 DTO 以便我可以使用 BLL 服务?

标签: c#wpfmvvm

解决方案


ViewModel 旨在与 View 一起使用,因此它们并不总是与域对象进行 1-1 映射。

  • 有时视图需要显示来自多个域对象的数据。
  • 有时视图只需要来自域对象的一些数据。
  • 有时,视图需要仅与视图相关的数据(例如选定项)。

因此,如何将数据填充到 ViewModel 中的问题可能很复杂。大多数时候我只是跳过 DTO 并让 ViewModel 自己获取数据。或者,如果这不可能,让 DAL 尝试填充 ViewModel,就好像它是 DTO。这实际上取决于其他应用程序基础架构的工作方式。一般来说,我尽量减少层数。理想情况下,我让我的 ViewModel 尽可能直接地获取它需要的数据。


推荐阅读