/
dOJer113
/
Insect
Обзор
Документация
Войти
/
dOJer113
/
Insect
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
lab_5
UI/ViewModels/Insects/GlassCoverViewModel.cs
64 строки
3 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 GlassCoverViewModel : ViewModelBase { /// <summary> /// Текущий режим работы диалогового окна /// </summary> private readonly Mode _mode; /// <summary> /// Заголовок окна в зависимости от режима работы /// </summary> public string Title { get; } /// <summary> /// Редактируемый экземпляр бабочки /// </summary> public GlassCover EditableInsect { get; } /// <summary> /// Флаг режима "только для чтения" (активен в режиме удаления) /// </summary> public bool IsReadOnly => _mode == Mode.Delete; /// <summary> /// Команда подтверждения операции с возвратом результата /// </summary> public ReactiveCommand<Unit, GlassCover> ConfirmCommand { get; } /// <summary> /// Конструктор для предварительного просмотра в дизайнере /// </summary> public GlassCoverViewModel() : this(null, Mode.InitializePrototype) { } /// <summary> /// Основной конструктор ViewModel /// </summary> /// <param name="parInsect">Исходный экземпляр для редактирования (null для создания нового)</param> /// <param name="parMode">Режим работы: Create, Edit, Delete, InitializePrototype</param> public GlassCoverViewModel(GlassCover? parInsect, Mode parMode) { EditableInsect = (GlassCover?)parInsect?.Clone() ?? new GlassCover(); _mode = parMode; Title = parMode switch { Mode.Create => "Создание новой стеклокрылки", Mode.Edit => "Редактирование стеклокрылки", Mode.InitializePrototype => "Инициализация прототипа стеклокрылки", Mode.Delete => "Подтверждение удаления стеклокрылки", _ => "Неизвестный режим" }; ConfirmCommand = ReactiveCommand.Create(() => EditableInsect); } } }