Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 关闭调用者窗口的命令的正确设计?_Wpf_Design Patterns_Command - Fatal编程技术网

Wpf 关闭调用者窗口的命令的正确设计?

Wpf 关闭调用者窗口的命令的正确设计?,wpf,design-patterns,command,Wpf,Design Patterns,Command,我有一个WPF对话框(窗口的继承者)。该对话框有一个“确定”按钮,该按钮绑定到ViewModel上的“处理”命令。(该“进程”命令是Josh Smith RelayCommand。)“确定”按钮上的CommandParameter设置为对话框窗口本身。如果处理成功,则从ViewModel的命令处理程序内部关闭对话框窗口。在我看来,这似乎违反了单一责任原则。对于可能关闭或可能不关闭调用者窗口的命令,正确的模式是什么?尽管看起来有些设计模式被破坏了,但通常的做法是ViewModel可能知道其视图,以

我有一个WPF对话框(窗口的继承者)。该对话框有一个“确定”按钮,该按钮绑定到ViewModel上的“处理”命令。(该“进程”命令是Josh Smith RelayCommand。)“确定”按钮上的CommandParameter设置为对话框窗口本身。如果处理成功,则从ViewModel的命令处理程序内部关闭对话框窗口。在我看来,这似乎违反了单一责任原则。对于可能关闭或可能不关闭调用者窗口的命令,正确的模式是什么?

尽管看起来有些设计模式被破坏了,但通常的做法是ViewModel可能知道其视图,以便完成特定任务,例如关闭对话框或设置特定状态

在视图-视图模型绑定期间,可以使用对视图的引用初始化视图模型。稍后,通过执行该命令,ViewModel可以使用视图使用公共界面提供的功能


在您的情况下,我建议这样做(就像这样),而不是将窗口作为
CommandParameter
传递

尽管看起来有些设计模式被破坏了,但通常的做法是,ViewModel可能知道自己的视图,以便完成特定任务,例如关闭对话框或设置特定状态

在视图-视图模型绑定期间,可以使用对视图的引用初始化视图模型。稍后,通过执行该命令,ViewModel可以使用视图使用公共界面提供的功能


在您的情况下,我建议这样做(就像这样),而不是将窗口作为
CommandParameter
传递

因此Caliburn.Micro使用类命名约定来定位视图。我也不确定我是否喜欢那样。我喜欢您在施工时通过视图的想法,但这带来了一个后续问题。通常,我喜欢在视图的参考资料部分构造ViewModel类。我喜欢这样,因为我在XAML中获得了ViewModel属性的Intellisense。有没有一种好方法可以在XAML中构造这些东西,同时仍然支持ViewModel的IoC类型的初始化?因此Caliburn.Micro使用类命名约定来定位视图。我也不确定我是否喜欢那样。我喜欢您在施工时通过视图的想法,但这带来了一个后续问题。通常,我喜欢在视图的参考资料部分构造ViewModel类。我喜欢这样,因为我在XAML中获得了ViewModel属性的Intellisense。在XAML中构造这些东西,同时仍然支持ViewModel的IoC类型初始化,有没有一种好方法?