【发布时间】:2017-03-16 04:12:52
【问题描述】:
我的问题与MVVM in WPF - How to alert ViewModel of changes in Model... or should I? 和ViewModel subscribing to Model's PropertyChanged event for a specific property 非常相似。但是,还是有区别的。
背景信息
我的模型是 Employee,我感兴趣的属性是 DisplayLtdOccupationId。
但在我的 ViewModel 中,我不只是有一个 Employee 实例。相反,我有一个 Employee 对象的集合。
ObservableCollection<Employee> EmployeeCensus
在我看来,我有一个绑定到 EmployeeCensus 的 DataGrid。所以我在网格中有员工行。
问题
我希望能够响应 DisplayLtdOccupationId 的值已更改的特定 Employee 行的 PropertyChanged。我想在我的 ViewModel 中使用处理程序方法来做到这一点。
在我的处理程序中,我希望刚刚更改的 Employee 对象将位于“sender”变量中。然后我会获取它的 DisplayLtdOccupationId,从 ViewModel 内存中已有的集合中进行查找,并在同一个 Employee 对象的不同属性中设置查找值。
更多详情
ViewModel 和 Employee Model 都实现了 INotifyPropertyChanged(通过:Microsoft.Practices.Prism.ViewModel.NotificationObject)。
DataGrid 将 DisplayLtdOccupationId 属性显示为内联下拉列表,用户可以在其中选择不同的值。
为什么不在 Employee 模型中,在 DisplayLtdOccupationId 的 Setter 中执行此操作?因为我无权访问那里的查找集合。
我不想在视图中使用触发器来启动处理程序。这导致了一个问题,这也是我想探索仅使用 ViewModel 和 Model 的解决方案的原因。
我还可以添加更多内容,但我试图让问题保持简短和重点。如果需要更多信息,请告知。
【问题讨论】: