Wpf 如何从一个视图传递集合';将视图模型转换为另一个视图?
在以下情况下,任何人都可以提出解决方案: 我有一个MVVM应用程序,其中我需要从主窗口显示模式窗口,以便为viewModel类中的集合添加一些值。最好的方法是什么。我是说。我需要更改viewModel中的一些集合,我的主窗口引用了viewModeWpf 如何从一个视图传递集合';将视图模型转换为另一个视图?,wpf,mvvm,Wpf,Mvvm,在以下情况下,任何人都可以提出解决方案: 我有一个MVVM应用程序,其中我需要从主窗口显示模式窗口,以便为viewModel类中的集合添加一些值。最好的方法是什么。我是说。我需要更改viewModel中的一些集合,我的主窗口引用了viewMode viewModel = new ExamViewModel(); this.DataContext = viewModel; 将viewmodel也暴露给子窗口是否足够好?或者有一种“正确”的方法可以做到这一点。通常情况下,模式窗口只知道有问题的
viewModel = new ExamViewModel();
this.DataContext = viewModel;
将viewmodel也暴露给子窗口是否足够好?或者有一种“正确”的方法可以做到这一点。通常情况下,模式窗口只知道有问题的对象,允许用户填写新对象(也可能编辑现有对象)。然后,它会将填充的对象传递回负责更新集合的父对象。正如@Marcelo所建议的,打开新子窗口的代码应该与ViewModel中的某个委托一起传递。此委托将创建一个子视图模型(例如
ChildVM
),并使用其自己的集合(ParentVM.ParentCollection
)填充其一个属性(例如ChildCollection
)
然后,您的子窗口将绑定到新填充的集合(ChildVM.ChildCollection)属性,并在执行“确定”/“保存”类确认操作后,关闭的子窗口应通知/委托回父viewmodel,以将更改“合并”回其旧集合。。。就像这样
parentVM.ParentCollection.Clear();
parentVM.ParentCollection.AddRange(ChildVM.ChildCollection);
这边
parentVM.ParentCollection.Clear();
parentVM.ParentCollection.AddRange(ChildVM.ChildCollection);