53 lines
1.7 KiB
C#
53 lines
1.7 KiB
C#
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file, You can obtain one at https://opensource.org/licenses/MIT.
|
|
// Copyright (C) Leszek Pomianowski and WPF UI Contributors.
|
|
// All Rights Reserved.
|
|
|
|
using Wpf.Ui.Demo.Mvvm.Views;
|
|
|
|
namespace Wpf.Ui.Demo.Mvvm.Services;
|
|
|
|
/// <summary>
|
|
/// Managed host of the application.
|
|
/// </summary>
|
|
public class ApplicationHostService(IServiceProvider serviceProvider) : IHostedService
|
|
{
|
|
private INavigationWindow? _navigationWindow;
|
|
|
|
/// <summary>
|
|
/// Triggered when the application host is ready to start the service.
|
|
/// </summary>
|
|
/// <param name="cancellationToken">Indicates that the start process has been aborted.</param>
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
await HandleActivationAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Triggered when the application host is performing a graceful shutdown.
|
|
/// </summary>
|
|
/// <param name="cancellationToken">Indicates that the shutdown process should no longer be graceful.</param>
|
|
public async Task StopAsync(CancellationToken cancellationToken)
|
|
{
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates main window during activation.
|
|
/// </summary>
|
|
private async Task HandleActivationAsync()
|
|
{
|
|
await Task.CompletedTask;
|
|
|
|
if (!Application.Current.Windows.OfType<MainWindow>().Any())
|
|
{
|
|
_navigationWindow = (serviceProvider.GetService(typeof(INavigationWindow)) as INavigationWindow)!;
|
|
_navigationWindow!.ShowWindow();
|
|
|
|
_ = _navigationWindow.Navigate(typeof(Views.Pages.DashboardPage));
|
|
}
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
}
|