-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.axaml.cs
59 lines (50 loc) · 2.05 KB
/
App.axaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Microsoft.Extensions.DependencyInjection;
using RelinkModOrganizer.Services;
using RelinkModOrganizer.ThirdParties.DataTools;
using RelinkModOrganizer.ViewModels;
using RelinkModOrganizer.Views;
namespace RelinkModOrganizer;
public partial class App : Application
{
public new static App? Current => Application.Current as App;
public IServiceProvider ServiceProvider { get; } = new ServiceCollection()
.AddServices()
.AddViewModels()
.BuildServiceProvider();
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
desktop.MainWindow = new MainWindow(
dataContext: ServiceProvider.GetRequiredService<MainWindowViewModel>());
base.OnFrameworkInitializationCompleted();
}
}
public static partial class ServiceExtensions
{
public static IServiceCollection AddServices(this IServiceCollection services) =>
services.AddSingleton<ConfigurationService>()
.AddSingleton<ModificationService>()
.AddSingleton<DataToolsService>()
.AddSingleton<LocalizationService>();
public static IServiceCollection AddViewModels(this IServiceCollection services) =>
services.AddSingleton<MainWindowViewModel>()
.AddSingleton<ModListViewModel>()
.AddSingleton<LogViewModel>()
.AddSingleton<SettingsViewModel>()
.AddSingleton<DialogWindowViewModel>();
//private static IServiceCollection AddFileProvider(this IServiceCollection services)
//{
// var root = Path.Combine(AppContext.BaseDirectory, Consts.ModsDirName);
// if (!Directory.Exists(root))
// Directory.CreateDirectory(root);
// return services.AddSingleton<IFileProvider>(new PhysicalFileProvider(root));
//}
}