在Prism中扩展DialogService



在Prism Library网站上有一些关于简化应用程序对话框api的注释。https://prismlibrary.com/docs/wpf/dialog-service.html

假设我有一个解决方案与多个项目,MainProject,模块。CoreProject Module1的。所以在我的Core项目中创建这个DialogServiceExtensions类。

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");
}
}

我也把NotificationDialogNotificationDialogViewModel放在我的Core项目

我可以在任何项目/模块调用它,但问题是我怎么能告诉棱镜,NotificationDialogViewModel是NotificationDialogViewModel

我应该在哪里注册对话框,以便能够使用穿洞解决方案?在我的MainProject app . example .cs像往常一样?

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterDialog<NotificationDialog, NotificationDialogViewModel>();
}

我应该在哪里注册对话框,以便能够使用穿洞解决方案?在我的MainProject app . example .cs像往常一样?

如果应用程序想要显示一个对话框,你必须这样做,因为模块本质上是可选的(它们可以在部署后交换出来,或者它们不需要存在)。

如果一个模块想要显示一个对话框(而不是应用),你可以决定它是否是你的应用与它的模块的接口的一部分(然后把注册放到应用中)或不是(然后把它放到模块中,每个使用它的模块,也就是说,注册可以相互覆盖)。

最新更新