Prism is one of the design patterns which defined by Microsoft Patterns and Practices team for building composite Applications in C# , XAML (WPF,Store Applications etc ) .
Here we are going to create windows store application using Prism
1. Create new windows store application project (Blank application)
2. Go to package manager console or manage nuget packages and install prism nuget to the application
3. Now starts coding . Here we are using MVVM and I create few folders to isolate resources in the project such as
Now my project like this
Code for prism
Now we have to convert our application to prism
1. App.XAML and App.XAML.cs
2. Then create PageBase in controls from Prism MVVM
Change MainPage.xaml and MainPage.xaml.cs as follows
4. In here I'm craeting Interface to keep the properties of MainPage But this is optional. You can jsut implement the ViewModel without this interface
Here is My interface
5. Lets Starts MainPageViewModel
With prism MVVM it conains basic funtions in store app such like OnNavigatedTo , OnNavigatedFrom etc. You can directly use them inside the ViewModel
Run and Enjoy the Prism.
It is really easy to build in complex applications in enterprise level. even if you not like Prism code in specific scenario you can switch with your old MVVM too inside the same project
Full Code
http://bit.ly/1DL68OI
Why MVVM is not enough ?
When we creating application with MVVM there is few questions and practices we need to figure out.- Should I use Prism to provide support for MVVM?
- Should I use a dependency injection container?
- Which dependency injection container should I use?
- When is it appropriate to register and resolve components with a dependency injection container?
- Should a component's lifetime be managed by the container?
- Should the app construct views or view models first?
- How should I connect view models to views?
- Should I use XAML or code-behind to set the view's DataContext property?
- Should I use a view model locator object?
- Should I use an attached property to automatically connect view models to views?
- Should I use a convention-based approach?
- Should I expose commands from my view models?
- Should I use behaviors in my views?
- Should I include design time data support in my views?
- Do I need to support a view model hierarchy?
Why Prism?
Prism contains wire frame which can help to accelerate application development in MVVM and It already contains commonly required core features in application development.Let's Start Coding
Here we are going to create windows store application using Prism
1. Create new windows store application project (Blank application)
2. Go to package manager console or manage nuget packages and install prism nuget to the application
3. Now starts coding . Here we are using MVVM and I create few folders to isolate resources in the project such as
- ViewModel - for ViewModel
- Model - for Model
- Controles - for BaseControls
- View - for XAML pages
- Enum - for enumerations
- Interfaces - for Interfaces
Now my project like this
Code for prism
Now we have to convert our application to prism
1. App.XAML and App.XAML.cs
<prism:MvvmAppBase x:Class="SamplePrism.App" xmlns:prism="using:Microsoft.Practices.Prism.Mvvm" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:SamplePrism"> </prism:MvvmAppBase>
sealed partial class App : MvvmAppBase { public App() { this.InitializeComponent(); } protected override Task OnLaunchApplicationAsync(LaunchActivatedEventArgs args) {
//Main is the name of view i need to navigate this.NavigationService.Navigate("Main", null); return Task.FromResult<object>(null); } }
2. Then create PageBase in controls from Prism MVVM
public abstract partial class PageBase: Page,IView { }3. Then Use this page base in our Views, xaml
Change MainPage.xaml and MainPage.xaml.cs as follows
<controls:PageBase x:Class="SamplePrism.Views.MainPage" xmlns:prism="using:Microsoft.Practices.Prism.Mvvm" xmlns:controls="using:SamplePrism.Controls" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:SamplePrism.Views" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" prism:ViewModelLocator.AutoWireViewModel="True" xmlns:designtime="using:SamplePrism.DesignTimeViewModel" mc:Ignorable="d">
public sealed partial class MainPage : PageBase { public MainPage() { this.InitializeComponent(); } }
4. In here I'm craeting Interface to keep the properties of MainPage But this is optional. You can jsut implement the ViewModel without this interface
Here is My interface
public interface IMainPageViewModel { string Title { get; set; } }
5. Lets Starts MainPageViewModel
public class MainPageViewModel : ViewModel, IMainPageViewModel { string _Title = default(string); public string Title { get { return _Title; } set { SetProperty(ref _Title, value); } } public override void OnNavigatedTo(object navigationParameter, NavigationMode navigationMode, Dictionary<string, object> viewModelState) { this.Title = "Hello prism"; } }
With prism MVVM it conains basic funtions in store app such like OnNavigatedTo , OnNavigatedFrom etc. You can directly use them inside the ViewModel
Run and Enjoy the Prism.
It is really easy to build in complex applications in enterprise level. even if you not like Prism code in specific scenario you can switch with your old MVVM too inside the same project
Full Code
http://bit.ly/1DL68OI
0 comments:
Post a Comment