在MVVM中将可修改列表同步到多个视图

时间:2013-12-19 22:16:47

标签: wpf vb.net mvvm singleton

我正在尝试为VB.NET和WPF学习MVVM。现在我遇到了一种无法找到解决方法的情况。我程序中的实际数据非常具体,所以我将在这里使用类似的构造。

起初,有部门。他们确实有一个部门经理。它们是常用的模型,并且具有通常的ViewModel。 然后,有员工。他们确实有一个名字和一个id。员工也是模型,他们确实有ViewModel。

  • 计划编辑员工列表。
  • 可以编辑部门。

部门视图有一个下拉列表,可以从员工中选择部门经理。

现在我的问题是:我在哪里以及如何管理员工,所以如果添加新员工,我可以实现更新所有部门的下拉列表?

到目前为止,我使用单身作为EmployeeService来确保两件事:

  1. 5名员工在默认列表中,无法修改。
  2. 添加的条目与id没有重复。
  3. EmployeeService使用ObservableCollection(Of Employee)来组织模型。此外,它提供Public Property Employees As ReadOnlyObservableCollection(Of Employee)

    DepartmentViewModel有一个Public Property EmployeeOptions As String()来填充下拉列表。它会将CollectionChanged事件处理程序添加到服务的ReadOnlyObservableCollection(将其视为INotifyCollectionChanged),然后重新填充EmployeeOptions并在之后触发OnPropertyChanged("EmployeeOptions")

    但是我觉得这不是一个很好的方法,是吗?

    我想知道是否应该制作EmployeeServiceViewModel包裹EmployeeService并为所有ObservableCollection(Of EmployeeViewModel)个实例提供一个DepartmentViewModel的内容?一方面,这意味着有一个单身EmployeeServiceViewModel,我总是读“你不应该使用视图模型单身人士”。另一方面,编辑员工列表的视图反正要求EmployeeServiceViewModel,对吗?

    是否有人使用结构图或某个可编辑的模型列表填充多个视图的下拉列表?

0 个答案:

没有答案