using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using GSS2.Test.ViewModels; using GSS2.Test.Views; namespace GSS2.Test; public partial class App : Application { public override void Initialize() { AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is null) throw new InvalidOperationException("Application framework initialization cannot be fulfilled, ApplicationLifetime is null"); if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { Console.WriteLine("Application running in classic style"); desktop.Startup += (_, _) => Program.ApplicationHost.RunAsync(); desktop.Exit += (_, _) => Program.ApplicationHost.StopAsync(); desktop.MainWindow = new MainWindow() { DataContext = Program.ApplicationHost.Services.GetRequiredService() }; } else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView) { Console.WriteLine("Application running in single view style"); var loggerFactory = Program.ApplicationHost.Services.GetRequiredService(); var logger = loggerFactory.CreateLogger(); singleView.MainView = new MainView(logger) { DataContext = Program.ApplicationHost.Services.GetRequiredService() }; } else throw new InvalidOperationException($"Application framework initialization cannot be fulfilled, ApplicationLifetime has unknown type inherited from: {string.Join(", ", ApplicationLifetime.GetType().GetInterfaces().Select(i => i.FullName))}"); base.OnFrameworkInitializationCompleted(); } }