SimpleIoc.Default.Register falla en IsInDesignModeStatic si la interfaz está en un ensamblaje diferente
En el constructor estático deViewModelLocator
la claseSimpleIoc.Default.Register<T>();
falla enIsInDesignModeStatic
modo, si la interfaz está en un proyecto diferente. Como resultado elMainWindow.xaml
diseñador está vacío en tiempo de diseño.
He hecho una solución simple para probarlo. Sólo los cambios que he hecho es mover elDataItem
clase y laIDataService
interfaz en el proyecto de dominio.
He encontrado un paseo alrededor: Agregue un enlace a IDataService.cs en el proyecto ClientWpf.
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>();
}
...
}