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
Wpf 需要指导如何从VM正确调用ModernDialog_Wpf_Mvvm Light_Modern Ui - Fatal编程技术网

Wpf 需要指导如何从VM正确调用ModernDialog

Wpf 需要指导如何从VM正确调用ModernDialog,wpf,mvvm-light,modern-ui,Wpf,Mvvm Light,Modern Ui,根据特定条件,我正在使用的WPF应用程序必须能够打开一个对话框,提醒用户保存数据。我们使用ModernUI作为基本外观。我们也在使用MVVM灯。我正在努力解决的问题是如何从viewmodel中的一个命令中调用ModernUI的ModernDialog。我们有一个类(DialogViewService),可以使使用ModernDialog变得更简单,我最初是否尝试过: var dial = new CoreServices.DialogViewService(); var ret = dial.S

根据特定条件,我正在使用的WPF应用程序必须能够打开一个对话框,提醒用户保存数据。我们使用ModernUI作为基本外观。我们也在使用MVVM灯。我正在努力解决的问题是如何从viewmodel中的一个命令中调用ModernUI的ModernDialog。我们有一个类(DialogViewService),可以使使用ModernDialog变得更简单,我最初是否尝试过:

var dial = new CoreServices.DialogViewService();
var ret = dial.ShowMessage("Unsaved Data", "Save Current Data?");
我不喜欢这样,因为它在我的虚拟机里。因此,我将一个属性放入ServiceLocator,并将上述代码更改为:

var dial = ViewModelLocator.DialogViewSrv;
var ret = dial.ShowMessage("Unsaved Data", "Save Current Data?");
实际上,这和上一次是一样的


那么,我如何才能从VM中调用ModernDialog,而不让VM“了解”UI?

我看不出这里有什么问题,这是使用对话服务的方法之一。您可以将
ShowMessage
重命名为
NotifyUser
或其他名称,只是为了让它感觉不那么与用户界面相关。将服务包装在抽象后面,并将其注入视图模型。尽量避免将VM与UI问题和具体化耦合。