How to use Prism Region in WPF?
Step 1: Install Prism.Core,Prism.DryIoc (You can use any IOC like Prism.Unity),Prism.Wpf.
Step 2: Add the prism namespace to MainWindow.xaml like below
xmlns:prism="http://prismlibrary.com/"
Step 3: Add ContentControl to MainWindow and initilize the RegionName
<Grid>
<ContentControl prism:RegionManager.RegionName="MainRegion"/>
</Grid>
Step 4: Implement IModule
class MainModule : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
var region= containerProvider.Resolve<IRegionManager>();
region.RegisterViewWithRegion("MainRegion", typeof(TabView));
//TabView is the view or UserControl which will inject to Region
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
Step 5: App class should inherit from PrismApplication
Step 5.1: Modify App.xaml
Add the prism namespace to App.xaml like below
xmlns:prism="http://prismlibrary.com/"
Step 5.2: Replace Application with prism:PrismApplication
public partial class App : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();//MainWindow is startup window
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
base.ConfigureModuleCatalog(moduleCatalog);
moduleCatalog.AddModule<MainModule>();
}
}
Step 2: Add the prism namespace to MainWindow.xaml like below
xmlns:prism="http://prismlibrary.com/"
Step 3: Add ContentControl to MainWindow and initilize the RegionName
<Grid>
<ContentControl prism:RegionManager.RegionName="MainRegion"/>
</Grid>
Step 4: Implement IModule
class MainModule : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
var region= containerProvider.Resolve<IRegionManager>();
region.RegisterViewWithRegion("MainRegion", typeof(TabView));
//TabView is the view or UserControl which will inject to Region
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
Step 5: App class should inherit from PrismApplication
Step 5.1: Modify App.xaml
Add the prism namespace to App.xaml like below
xmlns:prism="http://prismlibrary.com/"
Step 5.2: Replace Application with prism:PrismApplication
<prism:PrismApplication x:Class="WpfWithPrism.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfWithPrism"
xmlns:prism="http://prismlibrary.com/">
<prism:PrismApplication.Resources>
</prism:PrismApplication.Resources>
</prism:PrismApplication>
Step 5.3: override CreateShell, RegisterTypes, ConfigureModuleCatalog Methods in App.xaml.cs file like below.
public partial class App : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();//MainWindow is startup window
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
base.ConfigureModuleCatalog(moduleCatalog);
moduleCatalog.AddModule<MainModule>();
}
}
Comments
Post a Comment