質問: コンポジットビュー - ビューがすでにリージョンエラーに存在する 私はWPF/Prism 4/AvalonDocアプリケーションに取り組んでいます。 ビューの1つは非常に複雑で、ViewModelは巨大で管理不能になっています。だから、私は自分のViewModelsを使って小さなビューに分割することにしました。 リージョンをビューに配置し、「マスター」ViewModelコンストラクタのregionManager.RegisterViewWithRegionメソッドを使用して、そのリージョンにサブビューをロードしました。 これは、ビューのインスタンスが1つしかロードされていないときとまったく同じように機能します。しかし、私はその画面の2番目のインスタンスを開いているとき(DocumentContentとしてAvalonDockのDocumentPaneに読み込まれています)、 "View already exists in region"というエラーが表示されています。 可能であれば、地域に一意の名前を与えることを避けたいと思います。 「マスター」ビューの特定のインスタンスにサブビューを追加していることを示す方法はありますか? これを行う方法に関するアドバイスはありますか?
回答: MEFを使用していて、ビューがSingletonの場合 ``` [PartCreationPolicy(CreationPolicy.Shared)] ``` あなたの `INavigationAware` がfalseを返します ``` public override bool IsNavigationTarget(NavigationContext navigationContext) ``` {return false;} このエラーが発生します。 Change `[PartCreationPolicy(CreationPolicy.Shared)]` to `[PartCreationPolicy(CreationPolicy.NonShared)]` あなたは終わりました。