App.axaml.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Avalonia;
  2. using Avalonia.Controls.ApplicationLifetimes;
  3. using Avalonia.Markup.Xaml;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using qmonlib.ui.ViewModels;
  6. using qmonlib.ui.Views;
  7. using System;
  8. using System.IO.Abstractions;
  9. using Quadarax.Foundation.Core.Logging;
  10. using Quadarax.Foundation.Core.QMonitor;
  11. namespace qmonlib.ui;
  12. public partial class App : Application
  13. {
  14. private IServiceProvider _services;
  15. public override void Initialize()
  16. {
  17. AvaloniaXamlLoader.Load(this);
  18. }
  19. public override void OnFrameworkInitializationCompleted()
  20. {
  21. ConfigureServiceProvider();
  22. // assign list of available services to the application resources
  23. this.Resources[typeof(IServiceProvider)] = _services;
  24. if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
  25. {
  26. desktop.MainWindow = new MainWindow
  27. {
  28. DataContext = new MainViewModel()
  29. };
  30. }
  31. else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
  32. {
  33. singleViewPlatform.MainView = new MainView
  34. {
  35. DataContext = new MainViewModel()
  36. };
  37. }
  38. base.OnFrameworkInitializationCompleted();
  39. }
  40. private void ConfigureServiceProvider()
  41. {
  42. var services = ConfigureServices();
  43. _services = services.BuildServiceProvider();
  44. }
  45. private static IServiceCollection ConfigureServices()
  46. {
  47. var services = new ServiceCollection();
  48. //TODO: Put service registrations here
  49. services.AddSingleton<QMonReceiver>(new QMonReceiver(new FileSystem(),
  50. QMonReceiverConfiguration.CreateDefault(), false, new ConsoleLogger()));
  51. return services;
  52. }
  53. }