Presence_Desktop/Presence.Desktop/ViewModels/MainWindowViewModel.cs

36 lines
1.9 KiB
C#
Raw Permalink Normal View History

2024-12-23 11:26:41 +00:00
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);
}
}
}