📄 src/App/App.axaml.cs
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using MMirror.App.ViewModels;
using MMirror.App.Views;
using MMirror.Integrations.Vasttrafik;

namespace MMirror.App;

public partial class App : Application
{
    private IHost? host;

    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
    }

    public override void OnFrameworkInitializationCompleted()
    {
        var builder = Host.CreateApplicationBuilder();
#if DEBUG
        builder.Configuration.AddUserSecrets<App>();
#endif
        builder.Services.AddViews().AddViewModels().AddVasttrafikServices();

        host = builder.Build();

        host.Start();

        DataTemplates.Add(new ViewLocator(host.Services));
        var vm = host.Services.GetRequiredService<MainViewModel>();

        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            desktop.MainWindow = new MainWindow { DataContext = vm };
        }
        else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView)
        {
            singleView.MainView = new MainView { DataContext = vm };
        }

        base.OnFrameworkInitializationCompleted();
    }
}