Prism的Region、Module及其应用
Region
Region即在界面中划分的区域。如在windows的资源管理器中,我们可以大致分为工具栏、导航栏、内容栏等,则可以划分为不同的Reigon。

定义Region
在Prism中,可以使用XAML或代码创建定义Region
- RegionManager.RegionName(XAML)
- RegionManager.SetRegionName(CS Code)
如下代码:
<Window x:Class="New.UPatrolInspection.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:New.UPatrolInspection"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"
xmlns:prism="http://prismlibrary.com/"
Loaded="Window_Loaded">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="80"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ContentControl Grid.Row="0" prism:RegionManager.RegionName="ToolBarRegion"/>
<ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion"/>
</Grid>
</Window>
Module
在一个应用程序中,一些特定的功能是独立存在的模块,他们有独立的视图(View)和业务逻辑。这些模块在Prism中我们可以建立一个Module,然后将这些视图和业务逻辑在其中独立实现。
在应用程序中,我们已经划分了Region。之后我们就可以动态的加载Module,然后为指定的Region动态分配内容。
创建Module
在WPF应用程序中,创建一个ModuleA,实现Prism的IModule接口。
public class ModuleAModule : IModule
{
/// <summary>
/// 通知模块已被初始化。
/// </summary>
/// <param name="containerProvider"></param>
public void OnInitialized(IContainerProvider containerProvider)
{
}
/// <summary>
/// 用于在您的应用程序将使用的容器中注册类型。
/// </summary>
/// <param name="containerRegistry"></param>
public void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
配置Module目录
1、重写PrismApplication的ConfigureModuleCatalog方法
public partial class App : PrismApplication
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
//添加模块A
moduleCatalog.AddModule<ModuleAModule>();
}
}
2、Directory配置模块目录
通过读取根目录Modules文件夹查找模块
public partial class App
{
protected override IModuleCatalog CreateModuleCatalog()
{
return new DirectoryModuleCatalog() {
ModulePath=@".\Modules" };
}
}
3、App.Config配置模块目录
public partial class App
{
protected override IModuleCatalog CreateModuleCatalog()
{
return new ConfigurationModuleCatalog();
}
}
然后,为应用程序添加配置文件app.config, 添加以下内容:
<configuration>
<configSections>
<section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf" />
</configSections>
<startup>
</startup>
<modules>
<module assemblyFile="ModuleA.dll" moduleType="ModuleA.ModuleAModule, ModuleA, Version=1.0.0.0, Culture=neutral,PublicKeyToken=null" moduleName="ModuleAModule" startupLoaded="True" />
</modules>
</configuration>
4、XAML配置模块目录
修改CreateModuleCatalog方法,从指定XAML文件读取模块配置
public

最低0.47元/天 解锁文章
1243

被折叠的 条评论
为什么被折叠?



