Prism 4 と Unity を使用して概念実証の WPF アプリケーションを作成していますが、基本的な問題がいくつか発生します。
私たちのソリューションには、次のプロジェクトがあります。
-AppName.Desktop
-AppName.Modules.ModuleA
-AppName.Modules.ModuleB
いくつかのチュートリアルに従い、いくつかの例を調べ、インターネットを検索しましたが、非常に初歩的な質問に対する適切な答えを見つけることができませんでした。異なる DLL の2 つのビューを切り替えるにはどうすればよいですか。
最初のビュー (ModuleAView) は、ModuleA の Initialize メソッドに読み込まれます。
public void Initialize()
{
regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.ModuleAView));
}
ModuleAView (または ModuleAView のボタン) をクリックすると、ModuleBView に切り替えます。
public bool SomeEventInModuleAView(SomeEventParams e)
{
Uri viewNav = new Uri("ModuleBView", UriKind.Absolute);
regionManager.RequestNavigate(RegionNames.MainRegion, viewNav);
}
ModuleA は ModuleBView の場所を知らないため、明らかにこれは機能しません。pack/application/component などで URI を変更することについて読んだことがありますが、うまくいかないようです。
私は次のようなことを考えていました:
Uri("pack://application:,,,/AppName.Modules.ModuleB;component/Views/ModuleBView.xaml", UriKind.Absolute);
さまざまなアセンブリからモジュールをロードすることは Prism の目的の 1 つであるため、Prism のダウンロードにこれがどのように機能するかを示す例がないのは奇妙だと思います。