私はNinjectでMVVM Light V4を使用しています。私のViewModelファイルは別々のアセンブリにあります。これは、ViewModelLocatorが開始アセンブリ(ビューファイル)にあるときに効果的です。ブレンド機能は機能します。MVVM Light ViewModelLocatorは別のアセンブリですか?デザインタイムモードの問題
私はViewModelアセンブリにViewModelLocatorを配置したいのですが、それを行うと、ブレンド可能性が失われています。その後、起動したアプリケーションでのみ正しく動作します(設計時モードではない)。
ViewModelLocator:
static ViewModelLocator()
{
ServiceLocator.Initialize();
if (ViewModelBase.IsInDesignModeStatic)
{
using (var module = new DesignBindingsModule())
{
ServiceLocator.Load(module);
}
}
else
{
using (var module = new DefaultBindingsModule())
{
ServiceLocator.Load(module);
}
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public IMainWindowViewModel MainWindow
{
get
{
return ServiceLocator.Get<IMainWindowViewModel>();
}
}
それは別のアセンブリでViewModelLocatorを入れて、設計時モードでそれにバインドすることは可能ですか?
デザイナーに問題があるときに私がすることは、どのコードが実行されているかを見るために例外をスローすることです。例えば、 'ServiceLocator.Get()の戻り値を見たいと思うかもしれません。 ' ServiceLocator.Get ()をスローします。ToString()または何か.. –
あなたは答えとしてそれを提出し、受け入れまたは削除する必要があります.. –