3

プリズム ライブラリのコンテキストで 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 の絶対パスですか?

2 番目の質問は、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 と同じフォルダーにあるのでしょうか? ありがとう、ユルゲン

4

1 に答える 1

1
  1. ref 属性は、相対パスまたは絶対パスを使用する場合、アプリケーション パスの下のパスを予期します。これは、設計時にインストール フォルダーがわからないため、通常は機能しません。モジュール カタログにモジュールを見つけさせるには、モジュールをアプリケーション ディレクトリにコピーし、相対パスを使用することをお勧めします。
  2. モジュール タイプ属性は、IModule インターフェイスを実装するモジュール dll 内のタイプである必要があります。
  3. はい、名前空間を含める必要があります。
  4. 回答 1 を参照

質問に対するアドバイスについては、第 4 章「Prism 4.0のモジュラー アプリケーション開発- 2010 年 11 月」マニュアルを参照してください。

于 2011-10-11T06:57:14.340 に答える