using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.EntityFramework;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel;
using DaSaSo.ViewModel.Factories;
using DaSaSo.ViewModel.Interface;
using DaSaSo.ViewModel.State.ActualState;
using DaSaSo.ViewModel.State.Navigation;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Windows;
namespace DaSaSo.Wpf
{
///
/// Interaction logic for App.xaml
///
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
IServiceProvider serviceProvider = CreateServiceProvider();
MainWindow? window = new MainWindow() { DataContext = serviceProvider.GetRequiredService() };
window.Show();
base.OnStartup(e);
}
private IServiceProvider CreateServiceProvider()
{
IServiceCollection services = new ServiceCollection();
services.AddSingleton();
services.AddSingleton, ClientDataService>();
services.AddSingleton();
services.AddSingleton, HomeViewModelFactory>();
//services.AddSingleton>();
services.AddSingleton, ClientListViewModelFactory>((services) =>
new ClientListViewModelFactory(
services.GetRequiredService(),
new ViewModelFactoryRenavigator(
services.GetRequiredService(),
services.GetRequiredService>()
)
));
services.AddSingleton, ClientEditViewModelFactory>((services) =>
new ClientEditViewModelFactory(
services.GetRequiredService(),
new ViewModelFactoryRenavigator(
services.GetRequiredService(),
services.GetRequiredService>()
)
));
//services.AddSingleton();
services.AddScoped();
services.AddScoped();
services.AddScoped();
return services.BuildServiceProvider();
}
}
}