WPF/MVVM - 我们应该为每个 ViewModel 创建一个不同的类吗?

标签 wpf architecture mvvm viewmodel

我正在尝试使用 MSDN 中 Todd Miranda 的精彩“How Do I”视频中的 MVVM 示例。

我正在尝试根据我的学习目的调整该示例。

  1. 在示例中,他有一个名为EmployeeListViewModel的 ViewModel。现在,如果我想包含部门,我是否应该创建另一个 ViewModel,例如 DepartmentListViewModel

  2. 该示例将EmployeeRepository作为数据源。就我而言,我尝试使用 Entity 对象作为数据源(Model 文件夹中的 Employees.edmxEmployeeRepository.cs < em>DataAccess 文件夹)。如果我想显示部门列表,是否应该创建一个名为 DepartmentRepository 的单独类并将所有与部门相关的方法定义放在那里?

  3. 如果我想同时检索员工姓名及其部门名称怎么办?我应该将方法放在哪里?

我对 WPF 和 MVVM 非常陌生,如果以上任何内容需要重新措辞,请告诉我。

感谢您的所有帮助。

最佳答案

是的,通常每个 View (页面、窗口、屏幕)都应该有它自己的 ViewModel。因此,如果您想要一个列出一些员工的屏幕,您的 ViewModel 将具有某种员工集合 (IEnumerable) 作为属性。然后,您的员工类型将包含其姓名、部门、​​电话分机号(等)的属性。

从您的问题中我不清楚您是否要在同一页面上显示员工和部门列表。如果这就是您想要做的,那么您的 ViewModel 中将有两个属性,它们是如下所示的某种集合:

public class EmployeeListViewModel {
     public IEnumerable<Employee> Employees { get; set; }
     public IEnumerable<Department> Departments { get; set; }
}

...这将允许您在 View 上显示这两个集合。

关于WPF/MVVM - 我们应该为每个 ViewModel 创建一个不同的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3026317/

相关文章:

WPF:缩放用户控件动画

wpf - ListView 和触发器;用鼠标单击时不会选择项目

android - PlayStore - 以下 APK 或应用程序包可在 64 位设备上使用,但只有 native 32 位代码 : 1

c# - 将自定义用户控件绑定(bind)到 RegionContext 的属性

c# - 从MVVM中的ListView调用命令

c# - 如何更改 wpf 中的应用程序文化?

c# - 如何确定 WPF 窗口是否打开?

inheritance - 多重继承什么时候派上用场?

python - 定义函数的全局行为?好的做法

javascript - 为何今天如此插入客户端框架?