我正在使用带有Ninject的MVVM Light V4。我的ViewModel文件在单独的程序集中。当ViewModelLocator在启动程序集(View文件)中时,它可以正常工作,并且具有Blendability。
我想将ViewModelLocator放置在ViewModel程序集中,但是当我这样做时,我失去了Blendability。之后,它仅在已启动的应用程序中正常工作(而不是在设计时模式中)。
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<IMainWindowViewModel>()
的返回值。可以尝试抛出throw ServiceLocator.Get<IMainWindowViewModel>().ToString()
之类的语句。 - Jake Berger