2

WPF、Unity、Prism 4を使用して.Netアプリケーションに取り組んでいます。アプリケーションは、タブページに複数のビューを持つシェルで構成されます。SystemTreeViewアプリケーションは、多くの場所に表示されるを含むSystemTreeModuleという名前のモジュールに大きく依存しています。

「SystemTreeRegion」という名前のリージョンを定義した最初のビューが終了しました。SystemTreeModuleで、自分のインスタンスSystemTreeViewをそのリージョンに登録しました。チャームのように機能します!SystemTreeViewタイプはUnityの自動検出機能を使用して検出されます(したがって、明示的に登録されません):

public void Initialize()
{
    _regionManager.RegisterViewWithRegion("SystemTreeRegion", () => _container.Resolve<SystemTreeView>());
}

次に、を使用する2番目のモジュールの作業を開始しますSystemTreeView。新しいビューで「SystemTreeRegion」という名前のリージョンを作成したとき、私は本当に自信を持っていましたが、次の例外を除いて失敗します。

'SystemTreeRegion'という名前のリージョンの作成中に例外が発生しました。例外は次のとおりです。System.ArgumentException:指定された名前のリージョンはすでに登録されています:SystemTreeRegion

だから私は答えをグーグルで検索してStackOverflowを検索しましたが、あなたがこれをどのように行うべきか理解できませんでした!

細部が欠けているだけなのか、概念的にはかなり離れているのかさえわかりません...

4

1 に答える 1

1

あなたは概念的に離れているわけではありません。モジュールを使用してビューを提供することはまったく問題ありません。ただし、アプリケーションには「SystemTreeRegion」という名前のビューを1つしか含めることができないことに注意してください。そうしないと、Prismのリージョンマネージャーはアクセスするビューを認識できません。

それを考慮に入れると、ビューをリージョンの名前に登録しようとして、その名前を持つすべてのリージョンにビューが表示されることを期待する場合、概念的に間違っています。ビューはリージョンにのみ登録できます。

したがって、すべてのリージョンに固有の名前があることを確認してから、そのリージョンに必要なビューを登録すれば問題ありません。

于 2013-01-08T12:37:40.873 に答える