1

PRISM を使用して、大規模なアプリケーションをモジュールに分割しています。各モジュールは、会社の部門を表します。

HumanResources
Accounting
InformationSystems
(...)

各モジュールにはいくつかのビューがあります。たとえば、次のようなものAccounting.Moduleがあります。

BusinessIntelligenceView(/Model)
ReportingView(/Model)

私がやりたいことは、アプリケーションがモジュールをロードすることです(これは手動で に入力しますModuleCatalog)。次に、ShellView使用可能なビューのリストを自動的に表示して、ユーザーがビューを選択してメイン領域に挿入できるようにしたいと考えています。

これは可能ですか?

ありがとう!

4

1 に答える 1

0

私は専門家ではありません。プリズムに組み込まれているとは思いませんが、これは間違いなく可能です:)

あなたのためのいくつかのヒント...親切にしてください、私はコード行を書くためにIDEを使用しませんでした:)

まず、使用可能なビューのリストを表示するビュー (およびビュー モデル) を作成できます。これらの「利用可能なビュー」は、ビュー情報を定義するクラスによって表すことができます。

何かのようなもの :

public interface IAvailableView
{
    string ViewName { get; }
    string ModuleName { get; }  
}

次に、使用可能なすべてのビューを表示できるようにするには、「使用可能な場合」にモジュールをカタログにロードする必要があります。その後、アプリケーションの初期化時にトリガーされます。

モジュールでは、特定の名前でビューを登録する必要があり、それによって公開されるすべての使用可能なビューを依存関係コンテナーに登録できます。

public virtual void Initialize()
{  
    RegisterView<IView, AnyView>("AnyView");
    Register<IAvailableView>(new AvailableView("AnyView", "MyModuleName"));
}

すべてのモジュールが読み込まれると、View Model コントロールはこれらすべての IAvailableViews を解決できるはずです。

あとは、使用可能なビューをコントロールにバインドし、ユーザーがアイテムをクリックしたら対応するビューを RegionManager に登録するだけです...

var view = GetInstance<IView>(selectedAvailableView.ViewName);
RegionManager.RegisterViewWithRegion("whateverRegion", () => view);

それが役に立てば幸い :)

于 2012-08-28T20:18:34.623 に答える