From 5d1744bbc7cf3e87c93161aa67cd6760d33917fe Mon Sep 17 00:00:00 2001 From: Jonas Arnold Date: Sat, 25 Mar 2023 11:05:27 +0100 Subject: [PATCH] implemented DI for MainWindow, added MVVM package for Backend --- MultiTerm.Core/MultiTerm.Core.csproj | 9 ++++++ MultiTerm.Wpf/App.xaml | 3 +- MultiTerm.Wpf/App.xaml.cs | 47 +++++++++++++++++++++------- MultiTerm.Wpf/MainWindow.xaml.cs | 29 ++++------------- MultiTerm.Wpf/MultiTerm.Wpf.csproj | 9 ++++++ 5 files changed, 61 insertions(+), 36 deletions(-) diff --git a/MultiTerm.Core/MultiTerm.Core.csproj b/MultiTerm.Core/MultiTerm.Core.csproj index 132c02c..bbdbfe7 100644 --- a/MultiTerm.Core/MultiTerm.Core.csproj +++ b/MultiTerm.Core/MultiTerm.Core.csproj @@ -6,4 +6,13 @@ enable + + + + + + + + + diff --git a/MultiTerm.Wpf/App.xaml b/MultiTerm.Wpf/App.xaml index cd1b7e6..ddaf73e 100644 --- a/MultiTerm.Wpf/App.xaml +++ b/MultiTerm.Wpf/App.xaml @@ -1,8 +1,7 @@  + xmlns:local="clr-namespace:MultiTerm.Wpf"> diff --git a/MultiTerm.Wpf/App.xaml.cs b/MultiTerm.Wpf/App.xaml.cs index 6fb9eb4..02639f0 100644 --- a/MultiTerm.Wpf/App.xaml.cs +++ b/MultiTerm.Wpf/App.xaml.cs @@ -1,17 +1,42 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using System.Windows; -namespace MultiTerm.Wpf +namespace MultiTerm.Wpf; + +public partial class App : Application { - /// - /// Interaction logic for App.xaml - /// - public partial class App : Application + public static IHost? AppHost { get; private set; } + + public App() + { + // create dependency injection host + AppHost = Host.CreateDefaultBuilder() + .ConfigureServices((hostContext, services) => + { + services.AddSingleton(); + + // viewmodels + //services.AddTransient(); + }) + .Build(); + } + + protected override async void OnStartup(StartupEventArgs e) { + await AppHost!.StartAsync(); + + // instanciate startup form and show + var startupForm = AppHost.Services.GetRequiredService(); + startupForm.Show(); + + base.OnStartup(e); + } + + protected override async void OnExit(ExitEventArgs e) + { + await AppHost!.StopAsync(); + base.OnExit(e); } + } diff --git a/MultiTerm.Wpf/MainWindow.xaml.cs b/MultiTerm.Wpf/MainWindow.xaml.cs index 7eb43c1..7ce2d9a 100644 --- a/MultiTerm.Wpf/MainWindow.xaml.cs +++ b/MultiTerm.Wpf/MainWindow.xaml.cs @@ -1,28 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; +using System.Windows; -namespace MultiTerm.Wpf +namespace MultiTerm.Wpf; + +public partial class MainWindow : Window { - /// - /// Interaction logic for MainWindow.xaml - /// - public partial class MainWindow : Window + public MainWindow() { - public MainWindow() - { - InitializeComponent(); - } + InitializeComponent(); } } diff --git a/MultiTerm.Wpf/MultiTerm.Wpf.csproj b/MultiTerm.Wpf/MultiTerm.Wpf.csproj index 4106cb0..5be450a 100644 --- a/MultiTerm.Wpf/MultiTerm.Wpf.csproj +++ b/MultiTerm.Wpf/MultiTerm.Wpf.csproj @@ -7,4 +7,13 @@ true + + + + + + + + +