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