Prism Sample 7 Module xaml

这一节使用xaml标记甚为不解。

本节注册module 的方式同directory一节很类似。在那一节中,用工厂方法创建一模块目录:

protected override IModuleCatalog CreateModuleCatalog()
        {
            return new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
        }

这里用了同一个方法,返回也相同,但是实现不同。

protected override IModuleCatalog CreateModuleCatalog()
        {
            return new XamlModuleCatalog(new Uri("/Modules;component/ModuleCatalog.xaml", UriKind.Relative));
        }

这里也指定了目录,同时指定了一个用xaml写的配置文件,配置文件的内容也似曾相识:

<m:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:m="clr-namespace:Prism.Modularity;assembly=Prism.Wpf">

    <m:ModuleInfo ModuleName="ModuleAModule" 
                  ModuleType="ModuleA.ModuleAModule, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

</m:ModuleCatalog>

这里面的参数我们在app.config中也用到过。

注意上面代码中/Modules不是模块输出目录,而是项目目录。

posted @ 2021-06-07 19:44  cbaa  阅读(77)  评论(0编辑  收藏  举报