Awesome
Prism Samples Forms
Samples that demonstrate how to use various Prism features with Xamarin.Forms.
Learning Prism
Learn feature by feature how to use Prism in your apps!
# | Sample | Description |
---|---|---|
1 | Prism Navigation | How to use Prism's Uri based navigation to reset the navigation stack, or add pages Modally or Non-Modally |
2 | Registering Services | How to use IContainerRegistry to register services to act as Singletons or Transients within your application. |
3 | Platform Specific Services | How to use Prism to auto inject platform specific dependencies that are registered with the IPlatformInitializer. |
4 | Delegate Commands | How to use DelegateCommands and ObservesCanExecute |
4.1 | Composite Commands | How to use CompositeCommands to invoke commands in multiple unrelated ViewModels from a single interaction. |
5 | Event Aggregator | How to use the IEventAggregator to raise and listen to events. This shows how to use a simple event with a primitive type payload, generic event with payload <T>, and event with custom EventArgs. It also demonstrated how to subscribe to events published in Xamarin.Forms inside native code. |
6 | Page Dialog Service | How to use the IPageDialogService to display alerts and action sheets from within your ViewModels. |
7 | Dialog Service | How to use the DialogService to provide highly customizable experiences within your application. |
8 | Tabbed Navigation | coming soon |
9 | Master Detail | How to use a master detail page with a content page and a tabbed page as children |
10 | Modules | How to use Prism modularization to separate the application logic using IModule, IModuleManager, ModuleCatalog. |
11 | Module Dependency | coming soon |
12 | ViewModelLocator | coming soon |
13 | ViewModel Initialization | How to properly use IAutoInitialize , IInitialize , or IInitializeAsync to do a one time initialization of your ViewModel with the context you need based on the Navigation Parameters, or any other initialization you may need to do. |
14 | EventToCommandBehavior | How to use the EventToCommandBehavior to bind to ViewModel Commands even when there is no Command property on an element. |
15 | PageBehaviorFactory | coming soon |
16 | PageLifecycleAware | How use IPageLifecycleAware to execute code in your ViewModel when the Page appears / disappears. |
17 | XamlNavigation | How to do Prism navigation from within Xaml |
18 | DeviceService | How to use Prism's IDeviceService to get the device's runtime and idiom. |
19 | NavigationMode | How to use the NavigationMode enum to only act on something when navigating back to a view |
20 | Confirm Navigation | coming soon |
Advanced Concepts
Sample | Description |
---|---|
Popups Plugin | Quite often you may find that a Modal page just doesn't cut it. A very popular option is to use Rg.Plugins.Popup. Because this is a 3rd party plugin it requires the use of Prism.Plugins.Popup. This sample shows how to use both Popup Pages for the Dialog Service and with Prism's Navigation Service. |
Logging with App Center | coming soon |
Logging with Syslog | coming soon |
Logging with Loggly | Walks you through using the Logging Plugin with Loggly for Syslog or Http |
Using Shiny Lib + Prism | coming soon |
Using ReactiveUI + Prism | coming soon |
Sample Apps
Sample | Description |
---|---|
Prism Forms Gallery | Prism.Forms Gallery demonstrates a number of Prism and Prism.Forms features all in a single app. The goal of this gallery is to make it easy to learn, share, teach, test, and use the material in your presentations and talks. |
Contoso Cookbook | Contoso Cookbook is a classic Microsoft sample recipe app; first adapted for Xamarin.Forms by Jeff Prosise in 2015 and now updated to use Prism for Xamarin.Forms. Demonstrates how to use a TabbedPage with a DataTemplate for the tabs, and a ListView with DataTemplate for the recipe list on each tab; for a clean professional-looking UI. |
Adding or Updating a Sample
A number of topics have been stubbed out. For any existing topic you can simply update the project with the relavent content. Be sure the Project heads are each updated as follows:
- The Display Name on iOS, Android and UWP should be updated from
Prism Sample
to be relevent to what your sample is on. It should also be short! (i.e. ViewModelInitialization -> Prism Init, EventToCommandBehavior -> Event 2 Cmd) - Please do not change any existing colors or styles. You may add colors / styles if they help but the samples are generally meant to be simple.
- The Sample's all use
com.prismlibrary.prismsample
as the Bundle/Package Id. If every sample kept this you would not be able to have samples side by side. Be sure that the final segmentprismsample
is updated to the lowercase name of the sample (i.e.com.prismlibrary.eventtocommand
)
If you're adding a brand new sample be sure to start with a copy of the resources in the Sample Template directory.