如果接口在不同的项目中,则在ViewModelLocator
类的静态构造函数中SimpleIoc.Default.Register<T>();
失败模式。IsInDesignModeStatic
结果,MainWindow.xaml
设计器在设计时是空的。
我做了一个简单的解决方案来测试它。我所做的唯一更改是将DataItem
类和IDataService
接口移动到域项目中。
我找到了一个解决方法:在 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<IDataService, Design.DesignDataService>();
}
else {
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
...
}