如果接口位于不同的程序集中,则SimpleIoc.Default.Register在IsInDesignModeStatic处失败
在ViewModelLocator
类的静态构造函数中, SimpleIoc.Default.Register();
如果接口位于不同的项目中,则在IsInDesignModeStatic
模式下失败。 因此, MainWindow.xaml
设计器在设计时是空的。
我已经做了一个简单的解决方案来测试它。 我所做的只是将DataItem
类和IDataService
接口移动到Domain项目中。
在这里下载
我找到了一个随处:在ClientWpf项目中添加指向IDataService.cs的链接。
public class ViewModelLocator { static ViewModelLocator() { ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); if (ViewModelBase.IsInDesignModeStatic) { // It fails if the IDataService is in different assembly // Delete the link of IDataService.cs from the ViewModel folder... SimpleIoc.Default.Register(); } else { SimpleIoc.Default.Register(); } SimpleIoc.Default.Register(); } ... }
if (ViewModelBase.IsInDesignModeStatic) { // put these lines here: if (SimpleIoc.Default.IsRegistered()) { SimpleIoc.Default.Unregister (); } SimpleIoc.Default.Register(); } else { SimpleIoc.Default.Register(); }