次の 2 つのコード ステートメントは類似しているという印象を受けました。
var region = regionManager.Region["SomeRegion"]
region.Add(container.Resolve<SomeView>());
と
regionManager.AddToRegion("SomeRegion", container.Resolve<SomeView>());
しかし、私のプロジェクトに示されているように、どちらも異なる結果をもたらします。驚いたことに、regionManager.AddToRegion ではスコープ領域を使用する必要はありませんが、region.Add ではスコープ領域が必要です。
repo を複製し、プロジェクトをビルドして実行してください。ViewB が既に登録されているという例外が発生するはずです。TestModule.cs (以下を参照) を開き、"region.add" 行にコメントを付け、regionManager.AddToRegion のコメントを解除すると、ソリューションが完全に機能することがわかります。
私はドキュメントを読み、region.Add と regionManager.AddToRegion を断続的に使用するプロジェクトを見てきましたが、API の動作が異なるようです。
https://github.com/rohits79/PrismRegionAmbiguity/blob/master/TestModule/TestModule.cs#L22-29
アップデート
AddToRegion を 3 行追加すると、アプリケーションが異常終了することに気付きました
regionManager.AddToRegion("ViewA", unityContainer.Resolve<ViewA>());
ただし、2行しかかかりません
region.Add(container.Resolve<ViewA>());
これは Prism の問題ではないように見えますが、スコープを作成せずに AddToRegion が機能するのはなぜでしょうか?