为什么 Prism.Forms DialogService 不工作?

Why does Prism.Forms DialogService not work?

我更新到 7.2 并且正在尝试使用 DialogService。 按照发行说明中的​​示例,如果视图基于 Grid,则它似乎无法注册到容器 (Unity)。如果我将视图更改为 ContentPage,我可以让它在容器中注册,但是当我 运行 我的测试并点击一个应该通过 ShowDialog 启动对话框的按钮时,我收到以下错误:

Specified cast is not valid.
  at Prism.Services.Dialogs.DialogService.CreateViewFor (System.String name) [0x00000] in d:\a\s\Source\Xamarin\Prism.Forms\Services\Dialogs\DialogService.cs:154 
  at Prism.Services.Dialogs.DialogService.ShowDialog (System.String name, Prism.Services.Dialogs.IDialogParameters parameters, System.Action`1[T] callback) [0x00044] in d:\a\s\Source\Xamarin\Prism.Forms\Services\Dialogs\DialogService.cs:31

我不确定出了什么问题。我的代码中唯一的区别是我的测试按钮位于标签页的内容页中。

我认为文档需要用一个有效的例子来更新。

感谢您的帮助。

对话框必须派生自 View 类型。由于 RegisterDialog 扩展是强类型的,因此它会强制执行此操作。如果您绕过注册或使用 RegisterForNavigation,那么问题完全在于您做错了。

您在此处报告的错误是,当为对话框创建视图时,它无法将其转换为类型视图。

请注意,在您的 App.RegisterTypes 中,您会看到类似的内容:

containerRegistry.RegisterDialog<DialogA>();