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”是类库中相应类的名字。
至此,大功告成。