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(); }