SimpleIoc.Default.Register завершается ошибкой в IsInDesignModeStatic, если интерфейс находится в другой сборке
В статическом конструктореViewModelLocator
классSimpleIoc.Default.Register<T>();
не удается вIsInDesignModeStatic
режим, если интерфейс находится в другом проекте. В результатеMainWindow.xaml
дизайнер пуст во время разработки.
Я сделал простое решение, чтобы проверить это. Только изменения, которые я сделал, это переместитьDataItem
класс иIDataService
интерфейс в проект домена.
Я нашел прогулку: Добавьте ссылку на IDataService.cs в проекте 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>();
}
...
}