/
drndsv
/
2413_Denisova
Обзор
Документация
Войти
/
drndsv
/
2413_Denisova
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
LoadingWindow/InvokeCommand.cs
62 строки
2 KB
drndsv
Лаба по потокам
09 дек 2025, 08:07
09 дек 2025, 08:07
ba88131
Код
Авторство
О чём код?
using System.Windows.Input; namespace LoadingWindow; /// <summary> /// Простая команда для действий окна прогресса /// </summary> public class InvokeCommand : ICommand { /// <summary> /// Делегат, выполняющий основное действие команды /// </summary> private readonly Action<object?> _execute; /// <summary> /// Делегат, определяющий, доступна ли команда к выполнению /// </summary> private readonly Func<object?, bool>? _canExecute; /// <summary> /// Конструктор /// </summary> /// <param name="parExecute">Метод, который будет выполнен при вызове команды</param> /// <param name="parCanExecute">Метод, определяющий, доступна ли команда к выполнению</param> public InvokeCommand(Action<object?> parExecute, Func<object?, bool>? parCanExecute = null) { _execute = parExecute; _canExecute = parCanExecute; } /// <summary> /// Событие, возникающее при изменении доступности команды /// </summary> public event EventHandler? CanExecuteChanged; /// <summary> /// Проверка, может ли команда быть выполнена /// </summary> /// <param name="parParameter">Параметр команды</param> /// <returns>true, если команда доступна; иначе false</returns> public bool CanExecute(object? parParameter) { return _canExecute?.Invoke(parParameter) ?? true; } /// <summary> /// Выполняет действие команды /// </summary> /// <param name="parParameter">Параметр команды</param> public void Execute(object? parParameter) { _execute(parParameter); } /// <summary> /// Уведомляет подписчиков о том, что доступность команды изменилась /// </summary> public void RaiseCanExecuteChanged() { CanExecuteChanged?.Invoke(this, EventArgs.Empty); } }