Skip to content
This repository has been archived by the owner on Oct 18, 2023. It is now read-only.

dansiegel/Prism.Plugin.Popups

Repository files navigation

Prism.Plugin.Popups

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 Build Status
Package NuGet Sponsor Connect
Prism.Plugin.Popups PluginNuGetShield PluginSponsorConnectShield

Want to consume the CI packages? Sign up as a GitHub sponsor and you can access the Sponsor Connect private feed.

Support

If this project helped you reduce time to develop and made your app better, please be sure to star the project help support Dan.

GitHub Sponsors

Usage

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

Getting Started

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.

Navigation

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.