【发布时间】:2023-03-11 16:18:01
【问题描述】:
我只是想知道我是否做得对。我有一个主视图(MainView)和它的视图模型(MainWindowViewModel)。在 MainView 中有一个按钮可以调用另一个视图(SubView)。 SubView 也有一个 ViewModel (SubViewModel)。通过它的视图模型关闭子视图后,我想从主视图模型访问子视图模型中的属性。 从 mainviewmodel 调用子视图并访问属性的代码如下所示:
private void SubViewExecute(object parameter)
{
SubView sub = new SubView();
bool? result = sub .ShowDialog();
if (!result.HasValue || !result.Value) return;
if (sub.DataContext is SubViewModel)
{
SubViewModel subViewModel = (sub.DataContext as SubViewModel);
string property = subViewModel.Property;
}
}
我的 mvvm 模式是否正确,还是有更好的方法来实现我想要的?
【问题讨论】:
-
重要提示:永远记住 MVVM 是一组 Guidelines,而不是 Rules,只要是最适合您的,并且保持代码干净且不违反 DRY和 SOLID,没关系.. 只是我的意见,虽然
-
我具体做的是创建一个枚举
(Dialog, Window, Default, etc)作为 ViewModels 的一部分,然后WindowManager利用这个值来确定是否应该在新的对话框中打开这个特定的 ViewModel,等等。 -
啊哈!确定何时打开新对话是 View 的工作,而不是 ViewModel。 =)