36 lines
1.9 KiB
C#
36 lines
1.9 KiB
C#
|
using System;
|
|||
|
using data.RemoteData;
|
|||
|
using domain.UseCase;
|
|||
|
using Microsoft.Extensions.DependencyInjection;
|
|||
|
using ReactiveUI;
|
|||
|
|
|||
|
namespace Presence.Desktop.ViewModels
|
|||
|
{
|
|||
|
public class MainWindowViewModel : ViewModelBase, IScreen
|
|||
|
{
|
|||
|
// Состояние маршрутизации для навигации внутри приложения
|
|||
|
public RoutingState Router { get; } = new RoutingState();
|
|||
|
|
|||
|
// Конструктор для MainWindowViewModel, получает провайдер сервисов для внедрения зависимостей
|
|||
|
public MainWindowViewModel(IServiceProvider serviceProvider)
|
|||
|
{
|
|||
|
// Получение необходимых зависимостей из провайдера сервисов
|
|||
|
var groupUseCase = serviceProvider.GetRequiredService<GroupUseCase>();
|
|||
|
var presenceUseCase = serviceProvider.GetRequiredService<UseCaseGeneratePresence>();
|
|||
|
var remoteDatabaseContext = serviceProvider.GetRequiredService<RemoteDatabaseContext>();
|
|||
|
|
|||
|
// Навигация к GroupViewModel, передача необходимых зависимостей
|
|||
|
NavigateToGroupViewModel(groupUseCase, presenceUseCase, remoteDatabaseContext);
|
|||
|
}
|
|||
|
|
|||
|
// Приватный метод для обработки навигации к GroupViewModel
|
|||
|
private void NavigateToGroupViewModel(GroupUseCase groupUseCase, UseCaseGeneratePresence presenceUseCase, RemoteDatabaseContext remoteDatabaseContext)
|
|||
|
{
|
|||
|
// Создание нового экземпляра GroupViewModel, передача зависимостей
|
|||
|
var groupViewModel = new GroupViewModel(this, groupUseCase, presenceUseCase, remoteDatabaseContext);
|
|||
|
// Навигация к GroupViewModel с использованием ReactiveUI Router
|
|||
|
Router.Navigate.Execute(groupViewModel);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|