SimpleIoc.Default.Register schlägt bei IsInDesignModeStatic fehl, wenn sich die Schnittstelle in einer anderen Assembly befindet
Im statischen Konstruktor vonViewModelLocator
Klasse dieSimpleIoc.Default.Register<T>();
scheitert anIsInDesignModeStatic
Modus, wenn sich das Interface in einem anderen Projekt befindet. Als Ergebnis derMainWindow.xaml
Designer ist zur Entwurfszeit leer.
Ich habe eine einfache Lösung zum Testen gemacht. Nur Änderungen, die ich vorgenommen habe, ist das Verschieben derDataItem
Klasse und dieIDataService
Schnittstelle in das Domain-Projekt.
Ich habe einen Rundgang gefunden: Fügen Sie im ClientWpf-Projekt einen Link zu IDataService.cs hinzu.
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>();
}
...
}