Prism.Forms is a powerful framework for building Xamarin.Forms application. It is very well-know in the Xamarin Community. If you are interested in exploring the framework, or if you are already using Prism.Forms and would like to explore new releases, perhaps you are a product owner and would like to test out Prism.Forms APIs with your product, or you are a community contributor who would like to learn, share, teach, blog or speak on Prism.Forms, Prism.Forms Gallery is for you. Prism.Forms Gallery demonstrates a number of Prism and Prism.Forms features in a single app.

Prism.Forms

“Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Windows 10 UWP, and Xamarin Forms.” Prism.Forms is the variant for Xamarin.Forms applications.

Features Gallery

Prism.Forms Gallery demonstrates a set of Prism and Prism.Forms features packaged in a single application. It demonstrates the setup and usage of these features and APIs that can be ported over to any Xamarin.Forms application build with Prism.Forms.

Current features list,

Exploring The Gallery

Each feature has its own module. The main project loads some modules when initialized, other modules can be initialized under Modules option.





Feature modules are under /PrismFormsGallery/Source/Modules of the solution’s root directory. Each module registers its own dependencies and handles OnIntialized(...) .

public class NavigationModule : IModule { public void OnInitialized(IContainerProvider containerProvider) { } public void RegisterTypes(IContainerRegistry containerRegistry) { } }

The main project configures the modules in ConfigureModuleCatalog(...) in App class.

override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { moduleCatalog.AddModule<CommandingModule.CommandingModule>(); moduleCatalog.AddModule<DialogModule.DialogModule>(InitializationMode.WhenAvailable /* default */); moduleCatalog.AddModule<EventsModule.EventsModule>(InitializationMode.OnDemand); moduleCatalog.AddModule<NavigationModule.NavigationModule>(InitializationMode.OnDemand); }

Why modules? To show how simple it is to introduce modules in your code. Modules may be the most underrated features of Prism.Forms. You may not use modules if they are stopping you from getting started with Prism.Forms, but consider them when your codebase starts to grow significantly as they make managing code simpler and easy to maintain.

How To Use This Gallery

Feel free to use this gallery as you wish 👍 My intentions for putting this gallery together were for you as,

Potential Users 🤔

For users evaluating Prism.Forms can use this gallery to explore the code and determine if Prism.Forms framework is right for their needs.

Current Users 🤓

Version updates can be a challenging sometimes. Being able to explore out a new release in a sandbox environment is very helpful. Use this gallery to explore new APIs, breaking changes, code cleanup, etc. when considering upgrade.

Product Owners 😎

Due to Prism.Forms‘s popularity, various product authors and owners planning to support and integrate with Prism.Forms can use this gallery to test against their product.

Community Contributors 🤗

If you are like me and love to learn and share with the community, you can use this gallery for code samples in your blog, talk, teaching sessions, etc. and of course, submit PRs 🤗

Highlights

Navigation Menu

Modules Catalog

DialogService

DialogService Setup

Message Received

Nav Params

AutoInitalize Parameters

Deep Linking w/Params

Resources

PS: Here is the presentation from my talk at Xamarin Dev Summit 2019.

Gallery – https://github.com/PrismLibrary/Prism-Samples-Forms/blob/master/PrismFormsGallery

Prism Documentation – https://prismlibrary.github.io/docs/