/
Landilf
/
2413_Ryumin_CourseWork
Обзор
Документация
Войти
/
Landilf
/
2413_Ryumin_CourseWork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
CourseWork/GUI/ViewModels/ConfirmationViewModel.cs
126 строк
3 KB
Landilf
add project
27 янв 2026, 13:57
27 янв 2026, 13:57
753b3e7
Код
Авторство
О чём код?
using System.Collections.ObjectModel; using ReactiveUI; namespace GUI.ViewModels; /// <summary> /// Модель представления экрана подтверждения. /// </summary> public class ConfirmationViewModel : ViewModelBase { #region Поля /// <summary> /// Ссылка на главную модель представления. /// </summary> private readonly MainViewModel _mainViewModel; /// <summary> /// Действие, выполняемое при подтверждении. /// </summary> private readonly Action _onConfirm; /// <summary> /// Индекс выбранной кнопки. /// </summary> private int _selectedIndex; #endregion #region Свойства /// <summary> /// Сообщение вопроса. /// </summary> public string Message { get; } /// <summary> /// Список кнопок меню. /// </summary> public ObservableCollection<MenuItemVm> MenuItems { get; } /// <summary> /// Индекс выбранной кнопки. /// </summary> public int SelectedIndex { get => _selectedIndex; set { this.RaiseAndSetIfChanged(ref _selectedIndex, value); UpdateSelection(); } } #endregion #region Конструкторы /// <summary> /// Конструктор модели представления подтверждения. /// </summary> /// <param name="parMainViewModel">Главная модель.</param> /// <param name="parMessage">Текст сообщения.</param> /// <param name="parOnConfirm">Действие при подтверждении.</param> public ConfirmationViewModel(MainViewModel parMainViewModel, string parMessage, Action parOnConfirm) { _mainViewModel = parMainViewModel; _onConfirm = parOnConfirm; Message = parMessage; MenuItems = [ new() { Title = "Да" }, new() { Title = "Нет" } ]; SelectedIndex = 1; UpdateSelection(); } #endregion #region Методы /// <summary> /// Обновляет состояние выделения кнопок. /// </summary> private void UpdateSelection() { for (int i = 0; i < MenuItems.Count; i++) { MenuItems[i].IsSelected = i == SelectedIndex; } } /// <summary> /// Перемещает выбор влево. /// </summary> public void MoveLeft() { SelectedIndex = (SelectedIndex - 1 + MenuItems.Count) % MenuItems.Count; } /// <summary> /// Перемещает выбор вправо. /// </summary> public void MoveRight() { SelectedIndex = (SelectedIndex + 1) % MenuItems.Count; } /// <summary> /// Выполняет выбранное действие. /// </summary> public void Select() { if (SelectedIndex == 0) { _onConfirm.Invoke(); } else { _mainViewModel.CancelConfirmation(); } } #endregion }