/
dOJer113
/
Insect
Обзор
Документация
Войти
/
dOJer113
/
Insect
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
lab_5
UI/ViewModels/Insects/MonarchViewModel.cs
64 строки
2 KB
aleks
UI
17 май 2025, 19:07
17 май 2025, 19:07
001c0e8
Код
Авторство
О чём код?
using System.Reactive; using ReactiveUI; using insects; using UI.ViewModels; namespace UI.ViewModels.Insects; /// <summary> /// ViewModel для работы с формой редактирования мигрирующей бабочки Данаиды монарх /// </summary> public class MonarchViewModel : ViewModelBase { /// <summary> /// Текущий режим работы диалогового окна /// </summary> private readonly Mode _mode; /// <summary> /// Заголовок окна в зависимости от режима работы /// </summary> public string Title { get; } /// <summary> /// Редактируемый экземпляр бабочки монарх /// </summary> public Monarch EditableInsect { get; } /// <summary> /// Флаг режима "только для чтения" (активен в режиме удаления) /// </summary> public bool IsReadOnly => _mode == Mode.Delete; /// <summary> /// Команда подтверждения операции с возвратом результата /// </summary> public ReactiveCommand<Unit, Monarch> ConfirmCommand { get; } /// <summary> /// Конструктор для предварительного просмотра в дизайнере /// </summary> public MonarchViewModel() : this(null, Mode.InitializePrototype) { } /// <summary> /// Основной конструктор ViewModel /// </summary> /// <param name="parInsect">Исходный экземпляр для редактирования (null для создания нового)</param> /// <param name="parMode">Режим работы: Create, Edit, Delete, InitializePrototype</param> public MonarchViewModel(Monarch? parInsect, Mode parMode) { EditableInsect = (Monarch?)parInsect?.Clone() ?? new Monarch(); _mode = parMode; Title = parMode switch { Mode.Create => "Создание новой бабочки монарх", Mode.Edit => "Редактирование бабочки монарх", Mode.InitializePrototype => "Инициализация прототипа бабочки монарха", Mode.Delete => "Подтверждение удаления", _ => "Неизвестная операция" }; ConfirmCommand = ReactiveCommand.Create(() => EditableInsect); } }