如何解决棱镜对话框与弹出窗口之间的区别
我正在新的Xamarin Forms应用程序中实现Prism。在转换为Prism之前,我一直在应用程序中使用Rg.Plugins.Popup。
Prism对话框与Prism.Plugin.Popups有什么限制?
当您将一个使用在另一个上时,有哪些示例?
谢谢!
解决方法
Rg.Plugins.Popup是Xamarin.Forms的流行插件,该插件访问本机功能以提供传统上Xamarin.Forms无法实现的“模式弹出”。
Prism 7.2中的对话框
如果您使用的是Prism 7.2,您会发现DialogService会找到当前显示的页面,然后“显示内容的父项”。换句话说,它将活动内容页面的内容作为AbsoluteLayout的根子元素放置,将其放置在蒙版层上,最后将对话框放在顶部。这种方法的结果是,您会注意到,例如NavigationPage或TabbedPage或MasterDetailPage的菜单上的所有导航栏都将保持对用户的访问。
尽管从某些方面来看,PopupPage和Dialog看起来非常相似,但您可能会发现那里存在一些明显的分歧。
棱镜8中的对话框
如果您使用的是Prism 8.0,您会看到我们已更新到最新的Xamarin.Forms,因此,我们能够利用Xamarin.Forms中的新功能,使您能够显示模式页面有透明背景。实际上,这使您可以复制PopupPage的效果,具体取决于您的外观。
- 使用Rg.Plugins.Popups,您可以将PopupPage推到应用程序中任何位置当前显示的页面之上
- 通过模态推送的Xamarin.Forms页面属于您的活动导航堆栈
- 使用具有透明背景和模式导航的传统页面,您实际上已经复制了PopupPage的外观
限制
- Prism.Plugin.Popups具有集成到导航服务中的优势。这样,您可以将Navigation Service注入到PopupPage的ViewModel中,当您从导航服务导航到另一个非PopupPage时,将关闭PopupPage。
- 对话框不是Prism导航服务跟踪的导航堆栈的一部分。 Xamarin.Forms中的导航取决于从特定页面进行导航。由于Prism的NavigationService不了解该对话框,因此您需要在导航之前关闭该对话框。
其他关键区别
除了到目前为止我所提到的,唯一的真正区别是Rg.Plugins.Popup为您提供了一些添加的动画,说实话我见过很少有人使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。