forked from amkovkov/GranuSightSoftware2
feat: move mainwindow to core and add NavigationService
This commit is contained in:
+38
-21
@@ -5,6 +5,9 @@ using Avalonia.Threading;
|
||||
|
||||
using GSS2.Test.ViewModels;
|
||||
using GSS2.Test.Views;
|
||||
using GSS2.UI.Core;
|
||||
using GSS2.UI.Core.Services;
|
||||
using GSS2.UI.Core.ViewModels;
|
||||
|
||||
namespace GSS2.Test;
|
||||
|
||||
@@ -20,30 +23,44 @@ public partial class App : Application
|
||||
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();
|
||||
var loggerFactory = Program.ApplicationHost.Services.GetRequiredService<ILoggerFactory>();
|
||||
var navigationService = Program.ApplicationHost.Services.GetRequiredService<NavigationService>();
|
||||
|
||||
desktop.MainWindow = new MainWindow()
|
||||
{
|
||||
DataContext = Program.ApplicationHost.Services.GetRequiredService<MainWindowViewModel>()
|
||||
};
|
||||
Program.ShutdownRequested += (_, _) => Dispatcher.UIThread.Invoke(() => desktop.MainWindow.Close());
|
||||
}
|
||||
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleView)
|
||||
switch (ApplicationLifetime)
|
||||
{
|
||||
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>()
|
||||
};
|
||||
case IClassicDesktopStyleApplicationLifetime desktop:
|
||||
Console.WriteLine("Application running in classic style");
|
||||
|
||||
desktop.Startup += (_, _) => Program.ApplicationHost.RunAsync();
|
||||
desktop.Exit += (_, _) => Program.ApplicationHost.StopAsync();
|
||||
|
||||
var mainWindowViewModelLogger = loggerFactory.CreateLogger<MainWindowViewModel>();
|
||||
var mainWindow = new MainWindow()
|
||||
{
|
||||
DataContext = new MainWindowViewModel(mainWindowViewModelLogger)
|
||||
};
|
||||
desktop.MainWindow = mainWindow;
|
||||
|
||||
Program.ShutdownRequested += (_, _) => Dispatcher.UIThread.Invoke(() => desktop.MainWindow?.Close());
|
||||
break;
|
||||
|
||||
case ISingleViewApplicationLifetime singleView:
|
||||
Console.WriteLine("Application running in single view style");
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new InvalidOperationException($"Application framework initialization cannot be fulfilled, ApplicationLifetime has unknown type inherited from: {string.Join(", ", ApplicationLifetime.GetType().GetInterfaces().Select(i => i.FullName))}");
|
||||
|
||||
}
|
||||
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))}");
|
||||
|
||||
var mainViewLogger = loggerFactory.CreateLogger<MainView>();
|
||||
var mainView = new MainView(mainViewLogger)
|
||||
{
|
||||
DataContext = Program.ApplicationHost.Services.GetRequiredService<MainViewModel>()
|
||||
};
|
||||
navigationService.NavigateTo(mainView);
|
||||
|
||||
base.OnFrameworkInitializationCompleted();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user