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);
|
||
}
|
||
}
|
||
}
|