为什么Prism.Forms DialogService不起作用?

时间:2019-08-26 19:53:04

标签: xamarin.forms prism

我更新到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\1\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\1\s\Source\Xamarin\Prism.Forms\Services\Dialogs\DialogService.cs:31

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

您在此处报告的错误是,为对话框创建视图时,无法将其强制转换为键入视图。

请注意,在您的App.RegisterTypes中,您将具有以下内容:

Image