The Popups plugin provides an extremely lightweight framework for implementing Popup Pages using the Rg.Plugin.Popup package with Prism.Forms. To do this we simply provide you with some new implementations of both Prism's Navigation & Dialog Services.
Platform | Build Status |
---|---|
VSTS Build |
Package | NuGet | Sponsor Connect |
---|---|---|
Prism.Plugin.Popups |
Want to consume the CI packages? Sign up as a GitHub sponsor and you can access the Sponsor Connect private feed.
If this project helped you reduce time to develop and made your app better, please be sure to star the project help support Dan.
NOTE: We have changed versioning to now follow the Major.Minor from the Prism version that the Popup Plugin is built against. This should help avoid confusion with compatibility particularly as many issues were being reported because developers were updating to a preview of Prism but remaining on the stable build from the Popups Plugin
Install the Prism.Plugin.Popups NuGet to your project. Notice that this has no dependency on a specific DI Container thus allowing your code to work with any container of your choice.
This plugin does not remove any platform initialization requirements that Rg.Plugins.Popup has. Be sure that you have followed all of the Rg.Plugins.Popup guidelines for initializing each Platform (iOS/Android,etc).
To use the plugin you will need to update the Registration for INavigationService. To do this you simply need to add the following:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// This updates INavigationService and registers PopupNavigation.Instance
containerRegistry.RegisterPopupNavigationService();
}
It's worth noting that there is a generic overload for the registration method that accepts any type that inherits from PopupPageNavigationService
in the event that you have custom logic you need to execute in the NavigationService. The RegisterPopupNavigationService
method will also register IPopupNavigation
from PopupNavigation.Instance
for you.
Prism's underlying Page Navigation Service has a dependency on IPageBehaviorFactory
. In order to handle navigation events from tapping outside of (and closing) the PopupPage, this plugin relies on the PopupPageBehaviorFactory
which is also registered by the registration method shown above. If you are registering your own custom implementation, be sure to either add the BackgroundPopupDismissalBehavior
to PopupPages, or simply inherit from the PopupPageBehaviorFactory
.
NOTE: All initializations for Rg.Plugins.Popup should be done in Platform code, the Registrations for the NavigationService should be done in your PrismApplication. No additional initialization is required inside of Prism Modules.
There is nothing different about navigating with Popup Pages than Navigating with normal pages. You can even deep link with Popup Pages. The only difference that you will encounter is that when Navigating from a Popup Page to a normal Xamarin.Forms Page, it will Pop any Popup Pages that are currently in the Popup Stack.