- add ioc container and bootstrapper

master
Simon G 5 years ago
parent 53c8eb9959
commit 18470554cf
  1. 17
      Mystify/App.axaml.cs
  2. 14
      Mystify/Bootstrapper.cs
  3. 1
      Mystify/Mystify.csproj

@ -1,6 +1,8 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using LightweightIocContainer.Interfaces;
using Mystify.ViewModels;
using Mystify.Views;
@ -8,19 +10,30 @@ namespace Mystify
{
public class App : Application
{
private IIocContainer? _kernel;
public override void Initialize() => AvaloniaXamlLoader.Load(this);
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
if (Design.IsDesignMode)
return;
Bootstrapper bootstrapper = new();
_kernel = bootstrapper.BootstrapKernel();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopStyleApplicationLifetime)
{
desktop.MainWindow = new MainWindow
desktopStyleApplicationLifetime.MainWindow = new MainWindow
{
DataContext = new MainWindowViewModel(),
};
desktopStyleApplicationLifetime.Exit += OnExit;
}
base.OnFrameworkInitializationCompleted();
}
private void OnExit(object? sender, ControlledApplicationLifetimeExitEventArgs args) => _kernel?.Dispose();
}
}

@ -0,0 +1,14 @@
// Author: Gockner, Simon
// Created: 2021-04-06
// Copyright(c) 2021 SimonG. All Rights Reserved.
using LightweightIocContainer;
using LightweightIocContainer.Interfaces;
namespace Mystify
{
public class Bootstrapper
{
public IIocContainer BootstrapKernel() => new IocContainer().Install();
}
}

@ -13,5 +13,6 @@
<PackageReference Include="Avalonia.Desktop" Version="0.10.0" />
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.0" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.0" />
<PackageReference Include="LightweightIocContainer" Version="3.0.0-beta" />
</ItemGroup>
</Project>

Loading…
Cancel
Save