ViewModelLocator
クラスの静的コンストラクターで、インターフェイスが別のプロジェクトにある場合、モードでSimpleIoc.Default.Register<T>();
失敗します。IsInDesignModeStatic
その結果、MainWindow.xaml
設計者は設計時に空になります。
私はそれをテストするための簡単な解決策を作りました。私が行った変更は、DataItem
クラスとIDataService
インターフェイスをドメインプロジェクトに移動することだけです。
ウォークアラウンドを見つけました: ClientWpfプロジェクトにIDataService.csへのリンクを追加します。
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>();
}
...
}