using Artemis.Core.Ninject; using Artemis.UI.Ninject; using Artemis.UI.Screens.Root.ViewModels; using Artemis.UI.Shared.Ninject; using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using Avalonia.Threading; using FluentAvalonia.Styling; using Ninject; using ReactiveUI; using Splat.Ninject; namespace Artemis.UI.Windows { public class App : Application { private StandardKernel _kernel = null!; public override void Initialize() { InitializeNinject(); RxApp.MainThreadScheduler = AvaloniaScheduler.Instance; AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { desktop.MainWindow = new MainWindow { DataContext = _kernel.Get() }; AvaloniaLocator.Current.GetService().ForceNativeTitleBarToTheme(desktop.MainWindow, "Dark"); } base.OnFrameworkInitializationCompleted(); } private void InitializeNinject() { _kernel = new StandardKernel(); _kernel.Settings.InjectNonPublic = true; _kernel.Load(); _kernel.Load(); _kernel.Load(); _kernel.UseNinjectDependencyResolver(); } } }