-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAppWithDI.axaml.cs
More file actions
57 lines (51 loc) · 2.07 KB
/
AppWithDI.axaml.cs
File metadata and controls
57 lines (51 loc) · 2.07 KB
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
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Lemon.ModuleNavigation.Sample.ModuleAs;
using Lemon.ModuleNavigation.Sample.ModuleBs;
using Lemon.ModuleNavigation.Sample.ModuleCs;
using Lemon.ModuleNavigation.Sample.ViewModels;
using Lemon.ModuleNavigation.Sample.Views;
using Lemon.ModuleNavigation.SampleViewModel;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace Lemon.ModuleNavigation.Sample;
public partial class AppWithDi : Application
{
public IServiceProvider? AppServiceProvider { get; private set; }
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
var services = new ServiceCollection();
services.AddLogging();
services.AddAvaNavigationSupport()
.AddModule<ModuleA>()
.AddModule<ModuleB>()
.AddModule<ModuleC>()
.AddSingleton<MainWindow>()
.AddSingleton<MainView>()
.AddSingleton<MainViewModel>()
.AddAvaDialogWindow<CustomDialogWindow>(nameof(CustomDialogWindow))
.AddView<ViewAlpha, ViewAlphaViewModel>(nameof(ViewAlpha))
.AddView<ViewBeta, ViewBetaViewModel>(nameof(ViewBeta));
AppServiceProvider = services.BuildServiceProvider();
var viewModel = AppServiceProvider.GetRequiredService<MainViewModel>();
switch (ApplicationLifetime)
{
case IClassicDesktopStyleApplicationLifetime desktop:
var window = AppServiceProvider.GetRequiredService<MainWindow>();
window.DataContext = viewModel;
desktop.MainWindow = window;
break;
case ISingleViewApplicationLifetime singleView:
var view = AppServiceProvider.GetRequiredService<MainView>();
view.DataContext = viewModel;
singleView.MainView = view;
break;
}
base.OnFrameworkInitializationCompleted();
}
}