Prism is a framework for building loosely coupled, maintainable, and testable XAML applications in WPF, Xamarin Forms, Uno Platform and WinUI. Separate releases are available for each platform and those will be developed on independent timelines. Prism provides an implementation of a collection of design patterns that are helpful in writing well-structured and maintainable XAML applications, including MVVM, dependency injection, commands, EventAggregator, and others. Prism's core functionality is a shared code base supported in .NET Standard 2.0, .NET Framework 4.5 / 4.7. Those things that need to be platform specific are implemented in the respective libraries for the target platform. Prism also provides great integration of these patterns with the target platform. For example, Prism for Xamarin Forms allows you to use an abstraction for navigation that is unit testable, but that layers on top of the platform concepts and APIs for navigation so that you can fully leverage what the platform itself has to offer, but done in the MVVM way.
As most of you know, it takes a lot of time and effort for our small team to manage and maintain Prism in our spare time. Even though Prism is open source and hosted on GitHub, there are a number of costs associated with maintaining a project such as Prism. Please be sure to Star the Prism repo and help sponsor Dan and Brian on GitHub.
Don't forget both Brian and Dan stream live on Twitch and host recorded content on their YouTube Channels. Be sure to Subscribe and Ring that Bell for notifications when they go live or post new content.
Sponsor | Twitch | YouTube | ||
---|---|---|---|---|
Brian Lagunas | Follow |
Follow & Subscribe |
Subcribe & Ring the Bell |
|
Dan Siegel | Follow |
Follow & Subscribe |
Subscribe & Ring the Bell |
Status | |
---|---|
Full Build | |
Prism.Core | |
Prism.Wpf | |
Prism.Forms | |
Prism.Uno |
E2E App | Status |
---|---|
WPF | |
Xamarin iOS | |
Xamarin Android |
- Documentation is maintained in the Prism-Documentation repo under /docs and can be found in a readable format on the website.
- For general questions and support, post your questions on StackOverflow.
- You can enter bugs and feature requests in our Issues.
- Enterprise Support is available exclusively from AvantiPoint, and helps to support this project.
By watching our courses, not only do you help support the project financially, but you might also learn something along the way. We believe this is a win-win for everyone.
- Introduction to Prism for WPF (NEW)
- Introduction to Prism (Legacy)
- What's New in Prism 5.0
- Prism Problems & Solutions: Showing Multiple Shells
- Prism Problems & Solutions: Mastering TabControl
- Prism Problems & Solutions: Loading Modules Based on User Roles
- Prism Problems & Solutions: Loading Dependent Views
We appreciate your support.
Official Prism releases are available on NuGet. Prism also has a MyGet feed which will be updated with each merged PR. If you want to take advantage of a new feature as soon as it's merged into the code base, or if there is a critical bug you need fixed we invite you to try the packages on this feed. Our feed is a public feed in the MyGet Gallery.
Simply add https://www.myget.org/F/prism/api/v3/index.json
as a package source to either Visual Studio or Visual Studio for Mac.
These are the base packages for each platform, together with the Prism's Core assembly as a cross-platform PCL.
Platform | Package | NuGet | MyGet |
---|---|---|---|
Cross Platform | Prism.Core | ||
WPF | Prism.Wpf | ||
Xamarin.Forms | Prism.Forms | ||
Uno Platform and WinUI | Prism.Uno |
Each supported IoC container has its own package assisting in the setup and usage of that container together with Prism. The assembly is named using this convention: Prism.Container.Platform.dll, e.g. Prism.Unity.Wpf.dll. Starting with version 7.0, Prism is moving to separate packages for each platform. Be sure to install the package for the Container and the Platform of your choice.
Package | NuGet | MyGet |
---|---|---|
Prism.DryIoc | ||
Prism.Unity |
Package | NuGet | MyGet |
---|---|---|
Prism.DryIoc.Forms | ||
Prism.Unity.Forms | ||
Prism.Forms.Regions |
A detailed overview of each assembly per package is available here.
Prism integrates with Visual Studio to enable a highly productive developer workflow for creating WPF, and native iOS and Android applications using Xamarin.Forms. Jump start your Prism apps with code snippets, item templates, and project templates for your IDE of choice.
NOTE
The Prism Templates are open source and available at
The Prism Template Pack is available on the Visual Studio Gallery. To install, just go to Visual Studio -> Tools -> Extensions and Updates... then search for Prism in the online gallery:
There are certain things that cannot be added directly into Prism for various reasons. To handle these common tasks such as supporting PopupPage's in Xamarin Forms, there are Prism Plugins. You can find a number of Plugins available on NuGet from our maintainer @DanJSiegel.
- Prism.Plugin.Popups (Forms Only)
- Prism.Plugin.Logging (Works on all Platforms)
- Adds support for Syslog, Loggly, Graylog, Application Insights, & App Center
- Prism.Container.Extensions
- Adds advanced Container Registration abstractions
- Adds DryIoc & Unity ContainerExtension with support for Microsoft.DependencyInjection.Extensions. Uses a singleton pattern to allow initialization from a native platform
- Provides an extended PrismApplication with additional error handling and platform specifics support for Prism.Forms
- Prism.Magician (Works with ALL Platforms)
- The Magician works to reduce the amount of code you need to write with a collection of intelligent code generators that evaluate your codebase and references
- It additionally provides a series of Roslyn Analyzers to help prevent you from making common mistakes
- NOTE: This package is only available to Dan's GitHub Sponsors and Enterprise Support customers.
For stable samples be sure to check out the samples repo for the platform you are most interested in.
We strongly encourage you to get involved and help us evolve the code base.
- You can see what our expectations are for pull requests here.
This project is part of the .NET Foundation.