Files
GSS2Rework/GSS2.Test/App.axaml.cs
T

47 lines
1.9 KiB
C#

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<MainWindowViewModel>()
};
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView)
{
Console.WriteLine("Application running in single view style");
var loggerFactory = Program.ApplicationHost.Services.GetRequiredService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger<MainView>();
singleView.MainView = new MainView(logger)
{
DataContext = Program.ApplicationHost.Services.GetRequiredService<MainViewModel>()
};
}
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();
}
}