【发布时间】:2012-02-09 17:46:43
【问题描述】:
我正在使用带有 Ninject 的 MVVM Light V4。我的 ViewModel 文件在单独的程序集中。当 ViewModelLocator 处于启动程序集(查看文件)时效果很好。可混合性有效。
我想将 ViewModelLocator 放在 ViewModel 程序集中,但是当我这样做时,我失去了可混合性。之后它只能在启动的应用程序中正常工作(而不是在设计时模式下)。
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().ToString() 什么的.. -
您应该将其作为答案提交并接受或删除..
标签: c# .net wpf mvvm-light