为什么 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>();
我更新到 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>();