私はMVVM用のCaliburn Microを使用しています。今私は次のような状況に陥っています。私は最初のアセンブリでViewとViewModelを持つUserControlを持っていますassembly1
のnamespace1
です。同じ名前空間namespace1
(それは同じ解決策にあります)を持つ2番目のアセンブリassembly2
で使用すると、すべて正常に動作します。異なる名前空間を持つCaliburn Micro ViewLocator
今私は別のSolution
で私のViewModelをネームスペースnamespace3
と使いたいと思います。私がこれを試しても、私はいつもエラーが表示され、そのビューは見つけられませんでした。
Ninjectを使用してブートストラップに手動でバインディングを設定する回避策を構築します。
protected override void Configure()
{
_kernel = new StandardKernel();
_kernel.Bind<OverlayManagerView>().To<OverlayManagerView>().InSingletonScope();
_kernel.Bind<OverlayManagerViewModel>().To<OverlayManagerViewModel>().InSingletonScope();
base.Configure();
}
protected override void OnStartup(object sender, System.Windows.StartupEventArgs e)
{
ViewModelBinder.Bind(IoC.Get<OverlayManagerViewModel>(), IoC.Get<OverlayManagerView>(), null);
...
}
これは働いているが、私はassembly1
からの私のviewmodelsを使用したい場合、私はいつも手動でシングルトンとしてバインドを設定しません。
Caliburn ViewLocator
に、ビューが異なる名前空間にある可能性があることを伝える方法はありますか?
私が働いていない、次の...
ViewLocator.AddNamespaceMapping("namespace1", "namespace3");
ViewLocator.AddNamespaceMapping("namespace1", "namespace1");
ViewLocator.AddNamespaceMapping("namespace3", "namespace1");
たぶん誰かが解決策を知ってみました。あなたが使用する必要がありますあなたのConfigure
方法で