この質問は、Codeplex の Prism のサイトにも投稿されました。
オンデマンドでモジュールをロードすることに少し迷っています。皆さんが私を啓発してくれることを願っています。v2 #7を使用しています。
これが私が達成したいことです:
1) 2 つの領域があります。1 つはモジュールをインスタンス化するボタン用 (MenuRegion) で、もう 1 つはモジュールを表示するため (MainRegion) です。MenuRegion で一度に表示できるモジュールは 1 つだけです。
2) モジュールはディレクトリにあり
ます。 3) MenuModule モジュールは MenuRegion に関連付けられており、モジュール名を示すボタンを作成します。いずれかのボタンをクリックすると、対応するモジュールがロードされ、MainRegion に表示されます。
4) 動作:
a) ModuleA ボタンをクリックし、ModuleA を表示します。ユーザーは ModuleA にデータを入力し、データは保存されていない状態のままです。
b) ModuleB ボタンをクリックすると、ModuleB が表示されます。ユーザーは ModuleB にデータを入力し、データは保存されていない状態のままです。
c) ModuleA ボタンをクリックすると、ModuleA が以前に入力された情報とともに表示されます。
私の仮定が間違っている場合は訂正してください。また、他の提案を教えてください。
1) MainRegion は ContentControl である必要があるため、一度に表示できるモジュールは 1 つだけです。
2) ディレクトリで利用可能なモジュールの ModuleInfo を取得するには、カタログの「GrouplessModules」を列挙する必要があると思います
3) モジュールをロードするには、myModuleManager.LoadModule(moduleName) を呼び出す必要があると思います
最後に、私の質問:
1) MenuModuleView のコンストラクターのパラメーターとして moduleManager を使用する必要がありますか?
2) 利用可能なモジュールを列挙するために、MenuModuleView 内からカタログにアクセスできるようにするにはどうすればよいですか?
3) MenuModuleView から、モジュールを列挙しながらボタンを作成し、ModuleInfo をボタンの Tag プロパティに割り当てます。このように、モジュールをロードするためのクリック イベントは 1 つだけです。これは正しいです?それは私には少し回避策のにおいがします...
助けてくれてありがとう!!!