You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
3.7 KiB
Markdown

# KnowledgeBase for Prism Guidance
* [Official Site](https://prismlibrary.com/)
* Existing Mitech-wpf use `Prism 4.x`. The only official legacy reference is based on [Prism 6](https://prismlibrary.com/docs/wpf/legacy/Introduction.html)
* Its using `MEF Ioc (Dependency Injection)`. The `MEF DI` was removed from Prism 7.x and above. Only `Unity Dependency Injection` supported form Prism 7.x onward
* **MEF** vs **Unity** Modularity [Quick Start](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff921068(v=pandp.40)?redirectedfrom=MSDN)
* The latest Prism Library is `8.1`
* Prism 8 support NET 5 and dotnet Framework. Prism 6.x and below only DotNet Framework 4.8 and below.
## Legacy Documentation
- [Prism 4 Demo](https://www.codeproject.com/Articles/254120/Prism-4-MEF-Application). Migrated to Prism 6 [link](http://dev.mitech.com.sg:3000/playground/prism4-demo)
- [Prism 5](https://www.microsoft.com/en-sg/download/details.aspx?id=42572)
- Another nice [link](https://www.cnblogs.com/DoubleChen/p/3687305.html)
- Nuget : [Prism 4.1](https://www.nuget.org/packages/prism/4.1.0)
## Migration Guides
- [Prism 4.1 to 5](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff921144(v=pandp.40))
- `Microsoft.Practices.Prism.ViewModel` namespace deprecated. Please use `Microsoft.Practices.Prism.Mvvm`
- The `BindableBase` class was added to simplify `INotifyPropertyChanged` interface.
- EventAggregator Namespace and API Changes. **NEW** `Prism.PubSubEvents` namespace
- Regions Namespace API Changes
- `UriQuery` class was replaced with the `NavigationParameters`
- Namespace changes
- Refer to [Prism 5 pdf](./legacy/Prism5forWPF.pdf) for legacy changes
```cs
using Microsoft.Practices.Prism.ViewModel;
// change to
using Microsoft.Practices.Prism.Mvvm;
using Microsoft.Practices.Prism.Mvvm.Desktop;
using Microsoft.Practices.Prism.ShareInterfaces;
```
- [Prism 5 to 6](https://github.com/PrismLibrary/Prism/wiki/Release-Notes---6.0.0)
- Breaking Changes
- Removed `Microsoft.Practices` from all namespaces
- Created new xmlns namespace `http://prismlibrary.com/`
- Namespace changes
```cs
// Prism 4
using Microsoft.Practices.Prism;
using Microsoft.Practices.Prism.ViewModel;
// change to Prism 6.3
using Prism.Mvvm
```
```cs
// Prism 4
using Microsoft.Practices.Prism.MefExtensions.Modularity;
using Microsoft.Practices.Prism.Modularity;
// change to Prism 6.3
using Prism.Mef.Modularity;
using Prism.Modularity;
```
```cs
using Microsoft.Practices.Prism.Regions;
// change to
using Prism.Regions
```
```cs
using Microsoft.Practices.Prism.Commands;
// change to
using Prism.Commands;
```
- [Prism 6 to 8](https://prismlibrary.com/docs/wpf/converting-from-6.html)
- Bootstrapper class need to move to Application class
- use `xmlns:prism="http://prismlibrary.com/"`
- [Prism 7.1](https://brianlagunas.com/whats-new-prism-7-1/)
- **BIG** changes. [Release Notes](https://github.com/PrismLibrary/Prism/releases/tag/v7.1.0)
- No longer be shipping or supporting MEF for WPF
- New `Prism.IoC` namespace
- For `Prism.WPF`, introduced new `PrismApplication` base class. `Bootstrapper` class deprecated.
- [Prism 7 to 8](https://prismlibrary.com/docs/wpf/converting-from-7.html)
- [Release Notes](https://github.com/PrismLibrary/Prism/releases/tag/v8.0.0.1909)
- AutoWireViewModel is now default to true `prism:ViewModelLocator.AutoWireViewModel="True"`
- Removed `ILoggerFacade`. Use `Prism.Plugin.Logging`
## Online Tutorial
- [Prism 6 Unity - VS2015](https://www.c-sharpcorner.com/article/getting-started-mvvm-pattern-using-prism-library-in-wpf/)
## Tutorials
- [View-ViewModel](./view-viewmodel.md)