使用 MVVM Light 正确实现 MahApp 的 DialogCoordinator
Proper MVVM implementation of MahApp's DialogCoordinator using MVVM Light
我目前正在使用 MahApps
和 MVVM Light
进行一个项目。
目前,我的解决方案分为:
MyProject.Presentation
,这是安装了 MahApps
的 WPF 应用程序
MyProject.Core
,这是一个 class 库,包含 MVVM Light
、ViewModels、...
MahApps
带有一个 DialogCoordinator
class 和一个 IDialogCoordinator
接口,将注入我位于 MyProject.Core
.
的 ViewModels
但是,为了像这样将 IDialogCoordinator
接口注入我的 ViewModels,...
private readonly IDialogCoordinator _dialogCoordinator;
public MyViewModel(IDialogCoordinator dialogCoordinator)
{
_dialogCoordinator = dialogCoordinator;
}
...我必须在我的 MyProject.Core
项目上安装 MahApps
,我想将其与任何 UI 相关的东西分开。
有办法避免吗?还是我必须在那个时候妥协?
提前致谢!
你总是可以用你自己的抽象来抽象掉抽象。
也就是提供一个类似于IDialogCoordinator的接口,那么在你的UI中你可以提供一个使用DialogCoordinator来协调对话框的实现
而且我是我自己的爷爷。
我目前正在使用 MahApps
和 MVVM Light
进行一个项目。
目前,我的解决方案分为:
MyProject.Presentation
,这是安装了MahApps
的 WPF 应用程序MyProject.Core
,这是一个 class 库,包含MVVM Light
、ViewModels、...
MahApps
带有一个 DialogCoordinator
class 和一个 IDialogCoordinator
接口,将注入我位于 MyProject.Core
.
但是,为了像这样将 IDialogCoordinator
接口注入我的 ViewModels,...
private readonly IDialogCoordinator _dialogCoordinator;
public MyViewModel(IDialogCoordinator dialogCoordinator)
{
_dialogCoordinator = dialogCoordinator;
}
...我必须在我的 MyProject.Core
项目上安装 MahApps
,我想将其与任何 UI 相关的东西分开。
有办法避免吗?还是我必须在那个时候妥协?
提前致谢!
你总是可以用你自己的抽象来抽象掉抽象。
也就是提供一个类似于IDialogCoordinator的接口,那么在你的UI中你可以提供一个使用DialogCoordinator来协调对话框的实现
而且我是我自己的爷爷。