在 Prism 中扩展 DialogService
Extending DialogService in Prism
在 Prism 库网站上,有一些关于简化您的应用程序对话框 API 的说明。
https://prismlibrary.com/docs/wpf/dialog-service.html
假设我有一个包含多个项目的解决方案,MainProject、Modules.Module1、CoreProject。所以在我的核心项目中创建这个 DialogServiceExtensions
class。
public static class DialogServiceExtensions
{
public static void ShowNotification(this IDialogService dialogService, string message, Action<IDialogResult> callBack)
{
dialogService.ShowDialog(nameof(NotificationDialog), new DialogParameters($"message={message}"), callBack, "notificationWindow");
}
}
我也把 NotificationDialog
和 NotificationDialogViewModel
放在我的 Core 项目中
我可以在任何 project/module 调用它,但问题是我如何告诉 prism NotificationDialog
ViewModel 是 NotificationDialogViewModel
.
我应该在哪里注册对话框,以便能够使用通孔解决方案?在我的 MainProject App.xaml.cs 中像往常一样?
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterDialog<NotificationDialog, NotificationDialogViewModel>();
}
Where should I register the dialog, to be able to use thru the hole solution? In my MainProject App.xaml.cs like usual?
如果应用想要显示对话框,您必须这样做,因为模块本质上是可选的(它们可以在部署后换出,或者它们不需要存在)。
如果一个模块想要显示一个对话框(而不是应用程序),您可以决定它是否是应用程序与其模块的接口的一部分(然后将注册放在应用程序中)或不(然后将其放在模块,每个使用它的模块,也就是说,注册可以相互覆盖)。
在 Prism 库网站上,有一些关于简化您的应用程序对话框 API 的说明。 https://prismlibrary.com/docs/wpf/dialog-service.html
假设我有一个包含多个项目的解决方案,MainProject、Modules.Module1、CoreProject。所以在我的核心项目中创建这个 DialogServiceExtensions
class。
public static class DialogServiceExtensions
{
public static void ShowNotification(this IDialogService dialogService, string message, Action<IDialogResult> callBack)
{
dialogService.ShowDialog(nameof(NotificationDialog), new DialogParameters($"message={message}"), callBack, "notificationWindow");
}
}
我也把 NotificationDialog
和 NotificationDialogViewModel
放在我的 Core 项目中
我可以在任何 project/module 调用它,但问题是我如何告诉 prism NotificationDialog
ViewModel 是 NotificationDialogViewModel
.
我应该在哪里注册对话框,以便能够使用通孔解决方案?在我的 MainProject App.xaml.cs 中像往常一样?
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterDialog<NotificationDialog, NotificationDialogViewModel>();
}
Where should I register the dialog, to be able to use thru the hole solution? In my MainProject App.xaml.cs like usual?
如果应用想要显示对话框,您必须这样做,因为模块本质上是可选的(它们可以在部署后换出,或者它们不需要存在)。
如果一个模块想要显示一个对话框(而不是应用程序),您可以决定它是否是应用程序与其模块的接口的一部分(然后将注册放在应用程序中)或不(然后将其放在模块,每个使用它的模块,也就是说,注册可以相互覆盖)。