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(); var presenceUseCase = serviceProvider.GetRequiredService(); var remoteDatabaseContext = serviceProvider.GetRequiredService(); // Навигация к 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); } } }