Umbau auf delegate command

This commit is contained in:
HuskyTeufel
2021-09-15 17:21:56 +02:00
parent b213cefa99
commit e22f1eded2
9 changed files with 103 additions and 137 deletions

View File

@@ -20,6 +20,8 @@ namespace DaSaSo.Wpf
{
protected override void OnStartup(StartupEventArgs e)
{
Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
IServiceProvider serviceProvider = CreateServiceProvider();
MainWindow? window = new MainWindow() { DataContext = serviceProvider.GetRequiredService<MainWindowViewModel>() };
@@ -27,34 +29,61 @@ namespace DaSaSo.Wpf
base.OnStartup(e);
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
string text = "An application error occured. Plrease contact the Administrator with the following information:\n\n";
MessageBox.Show(text + " " + ex.Message + "\n\n" + ex.StackTrace);
}
catch(Exception ex2)
{
MessageBox.Show("Fatal Non-UI error", ex2.Message, MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
throw new NotImplementedException();
}
private IServiceProvider CreateServiceProvider()
{
IServiceCollection services = new ServiceCollection();
services.AddSingleton<DaSaSoDbContextFactory>();
services.AddSingleton<IDataService<Client>, ClientDataService>();
services.AddSingleton<ClientListViewModel>();
services.AddSingleton<IViewModelAbstractFactory, ViewModelAbstractFactory>();
services.AddSingleton<IViewModelFactory<HomeViewModel>, HomeViewModelFactory>();
//services.AddSingleton<IRenavigator, ViewModelFactoryRenavigator<ClientEditViewModel>>();
services.AddSingleton<IViewModelFactory<ClientListViewModel>, ClientListViewModelFactory>((services) =>
new ClientListViewModelFactory(
services.GetRequiredService<IActualProject>(),
new ViewModelFactoryRenavigator<ClientEditViewModel>(
services.GetRequiredService<INavigator>(),
services.GetRequiredService<IViewModelFactory<ClientEditViewModel>>()
)
));
services.AddSingleton<IViewModelFactory<ClientEditViewModel>, ClientEditViewModelFactory>((services) =>
new ClientEditViewModelFactory(
services.AddSingleton<CreateViewModel<ClientEditViewModel>>(services =>
{
return () => new ClientEditViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator<HomeViewModel>(
services.GetRequiredService<INavigator>(),
services.GetRequiredService<CreateViewModel<HomeViewModel>>()
));
});
services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{
return () => new HomeViewModel();
});
services.AddSingleton<CreateViewModel<ClientListViewModel>>(services =>
{
return () => new ClientListViewModel(
services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(),
new ViewModelFactoryRenavigator<HomeViewModel>(
new ViewModelDelegateRenavigator<ClientEditViewModel>(
services.GetRequiredService<INavigator>(),
services.GetRequiredService<IViewModelFactory<HomeViewModel>>()
)
));
services.GetRequiredService<CreateViewModel<ClientEditViewModel>>()
));
});
//services.AddSingleton<INavigator, Navigator>();
services.AddScoped<IActualProject, ActualProject>();