【问题标题】:C# Create module catalog from XAML fileC# 从 XAML 文件创建模块目录
【发布时间】:2011-10-10 19:39:08
【问题描述】:

我在 prism 库的上下文中从 xaml 文件加载模块时遇到问题。 模块的 xaml 如下所示:

<Modularity:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:sys="clr-namespace:System;assembly=mscorlib" 
         xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism">
<Modularity:ModuleInfoGroup InitializationMode="WhenAvailable">
    <Modularity:ModuleInfo Ref="file://HelloWorldModule.dll" ModuleName="HelloWorldModule" ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</Modularity:ModuleInfoGroup>

到目前为止,解析器找到了这个 xaml,但没有找到 HelloWorldModule.dll。 我在文档中找不到任何有用的东西,因为这些都是针对 Silverlight 的,但我的项目是 WFP 应用程序。

shell.exe的相对路径是:

\Projects\QFX_Shell\bin\Debug

HelloWorldModule.dll 的路径是:

\Projects\HelloWorldModule\bin\Debug

所以问题是“Ref”属性期望什么值?是 HelloWorldModule.dll 的绝对路径吗?

第二个问题是 ModuleType 属性应该有什么值:

namespace HelloWorldModule.Views
{
  /// <summary>
  /// Interaction logic for HelloWorldView.xaml
  /// </summary>
  public partial class HelloWorldView : UserControl
  {
    public HelloWorldView()
    {
        InitializeComponent();
    }
  }
}

类类型名称是否包含命名空间?

ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule...

下一个问题是,HelloWorldModule.dll 是否与 Shell.exe 位于同一文件夹中? 谢谢, 于尔根

【问题讨论】:

    标签: c# module prism xamlreader


    【解决方案1】:
    1. ref 属性需要应用程序路径下方的路径,如果您使用相对路径或绝对路径,这通常不起作用,因为您在设计时无法知道安装文件夹。要让模块目录找到您的模块,您最好将模块复制到应用程序目录并使用相对路径。
    2. 模块类型属性必须是模块 dll 中实现 IModule 接口的类型。
    3. 是的,必须包含命名空间。
    4. 见答案 1

    有关您的问题的更多建议,请查看Prism 4.0 - 2010 年 11 月手册的第 4 章,模块化应用程序开发

    【讨论】:

    • 谢谢。在访问了一些论坛之后,有很多关于使用 xaml 加载模块的讨论内容,而且这并不容易(例如 ref 必须以 file:// 开头)。所以我会使用应用配置文件。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2015-04-17
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    相关资源
    最近更新 更多