SimpleIoc.Default.Register échoue à IsInDesignModeStatic si l’interface est dans un autre assemblage

Dans le constructeur statique de la classe ViewModelLocator , le SimpleIoc.Default.Register(); échoue en mode IsInDesignModeStatic , si l’interface se trouve dans un projet différent. Par conséquent, le concepteur MainWindow.xaml est vide au moment de la conception.

J’ai fait une solution simple pour le tester. Les seules modifications que j’ai apscopes consistent à déplacer la classe DataItem et l’interface IDataService dans le projet de domaine.

Télécharger ici

J’ai trouvé une solution : ajoutez un lien au fichier IDataService.cs dans le projet 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(); } 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(); }