Prism中Moduel的使用

1.新建Module类库,在类库Modules类的OnInitialized方法中添加类库需要绑定的主程序Region名称,如下

public void OnInitialized(IContainerProvider containerProvider)
{
var regionManager = containerProvider.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));
regionManager.RegisterViewWithRegion("ContentRegion2", typeof(ViewA));
}

这里将类库的视图VeiwA绑定到了主程序的两个Region区域中,分别是“ContentRegion”,“ContentRegion2”。这样可以实现一个类库在主程序界面显示多个同一类的视图,例如可以将halcon单独编写成一个类库,如果项目中有多个相机的话,只需要讲类库绑定到程序的多个Region区域,每个区域相互独立,互不干涉。

2.在主程序定义XMAL中两个Region:

<Window x:Class="BlankApp1.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        xmlns:vm="clr-namespace:BlankApp1.ViewModels"
        Title="{Binding Title}" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <ContentControl prism:RegionManager.RegionName="ContentRegion" />
        <ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion2"/>
    </Grid>
</Window>

3.主程序添加对类库的引用

4.在App.xaml.cs文件中添加

public partial class App
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }

        protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        {
            moduleCatalog.AddModule<Module1.Module1Module>();
        }
    }

"Module1"是类库的名字,“ModuleModule”是类库中相应类的名字。

至此,大功告成。

上一篇:两年外包公司经验,拿到字节跳动Android-offer,我的付出不止一点点


下一篇:普通大专生:Java工作难找,想问问那些拿到大厂offer的大专生