29. Avalonia UI Real World (Async Dialog)
00:00 Завершение создания подтверждённого диалога • Создан рабочий подтверждённый диалог. • Планируется добавление обратной связи для длительных задач и ошибок. 00:25 Настройка ширины диалогового окна • Разрешено вызывающему пользователю устанавливать ширину диалога. • Создано свойство `observable private double` для управления шириной. • По умолчанию ширина не задана, что позволяет диалогу расширяться автоматически. 01:44 Добавление текста статуса • Добавлен текстовый блок для отображения статуса операции. • Текст статуса привязан к соответствующему свойству. • Пример текста статуса: «Что-то пошло не так. Пожалуйста, попробуйте ещё раз». 02:50 Настройка отображения текста статуса • Текст статуса выровнен по кнопкам. • Использован динамический ресурс для улучшения внешнего вида. • Уменьшен отступ для более близкого расположения текста к кнопкам. 03:52 Добавление текста о ходе выполнения • Текст о ходе выполнения отображается во время выполнения задачи. • Кнопки скрываются, пока диалог занят. • Добавлен текст «Обработка» для отображения прогресса. 05:56 Управление отображением кнопок и текста • Создано наблюдаемое свойство `занято` для управления отображением кнопок. • При `занято` = true кнопки скрываются, при `занято` = false — отображаются. • Текст прогресса отображается только при `занято` = true. 06:57 Асинхронная задача и обновление интерфейса • При нажатии кнопки «Подтвердить» запускается асинхронная задача. • После завершения задачи интерфейс обновляется и диалог закрывается. • Установлено значение `занято` = true, текст статуса обновляется. 09:50 Делегат функции для обработки подтверждения • Создан делегат функции для обработки подтверждения. • Функция возвращает true при успешном подтверждении, false — при ошибке. • Диалог закрывается в зависимости от результата функции. 11:11 Использование виртуальной машины для viewmodel • Viewmodel используется как виртуальная машина для доступа к статусу обновления. • При подтверждении можно вызвать функцию, которая вернёт задание. • Функция возвращает результат, позволяя дождаться подтверждения. 11:40 Обработка результата подтверждения • После подтверждения устанавливается значение «не занято». • Если результат ложный, диалог не закрывается. • Задача по умолчанию продолжает работать, даже если результат отрицательный. 12:15 Проверка работы диалога • Диалог быстро появляется и исчезает при нажатии «Да». • На странице действий используется новая способность подтверждения. 12:40 Асинхронный запуск и viewmodel • Выполняется асинхронный запуск для ожидания подтверждения. • Логика переносится в вызывающий объект для удобства выполнения пользовательского кода. 13:38 Управление кнопками в диалоге • Кнопки отключаются во время выполнения задачи. • Отмена команды ретрансляции позволяет кнопкам оставаться видимыми. 14:42 Использование флага «занято» • Создаётся свойство «занято» для управления возможностью выполнения команды. • При изменении значения «занято» происходит переоценка возможности выполнения. 18:01 Настройка ширины диалогового окна • Устанавливается ширина диалогового окна для предотвращения его расширения в ширину. • Диалог увеличивается в высоту, что менее неприятно для пользователя. 19:19 Выравнивание элементов интерфейса • Элементы интерфейса выравниваются по нижнему краю с помощью сетки. • Убираются границы и отступы для правильного отображения элементов. 21:29 Завершение настройки интерфейса • Новый пользовательский интерфейс готов к использованию. • Ограничение размера элемента управления позволяет увеличить количество отображаемого текста. • Возможность прокрутки текста остаётся, но это менее практично. 22:09 Гибкость элемента управления • В элемент управления встроена гибкость. • Удаляем высоту диалога и оставляем всё как есть. • Устанавливаем модель просмотра. 22:35 Обработка ошибок • При возникновении ошибки текст остаётся открытым. • Пользователь может нажать «нет» для закрытия или «да» для повторения попытки. • Создаём асинхронный диалог для взаимодействия с пользователем. 23:33 Завершение диалога • Комментируем код для демонстрации работы диалога. • Завершаем диалог до необходимости его дальнейшего использования. • Подходим к созданию базы данных.
00:00 Завершение создания подтверждённого диалога • Создан рабочий подтверждённый диалог. • Планируется добавление обратной связи для длительных задач и ошибок. 00:25 Настройка ширины диалогового окна • Разрешено вызывающему пользователю устанавливать ширину диалога. • Создано свойство `observable private double` для управления шириной. • По умолчанию ширина не задана, что позволяет диалогу расширяться автоматически. 01:44 Добавление текста статуса • Добавлен текстовый блок для отображения статуса операции. • Текст статуса привязан к соответствующему свойству. • Пример текста статуса: «Что-то пошло не так. Пожалуйста, попробуйте ещё раз». 02:50 Настройка отображения текста статуса • Текст статуса выровнен по кнопкам. • Использован динамический ресурс для улучшения внешнего вида. • Уменьшен отступ для более близкого расположения текста к кнопкам. 03:52 Добавление текста о ходе выполнения • Текст о ходе выполнения отображается во время выполнения задачи. • Кнопки скрываются, пока диалог занят. • Добавлен текст «Обработка» для отображения прогресса. 05:56 Управление отображением кнопок и текста • Создано наблюдаемое свойство `занято` для управления отображением кнопок. • При `занято` = true кнопки скрываются, при `занято` = false — отображаются. • Текст прогресса отображается только при `занято` = true. 06:57 Асинхронная задача и обновление интерфейса • При нажатии кнопки «Подтвердить» запускается асинхронная задача. • После завершения задачи интерфейс обновляется и диалог закрывается. • Установлено значение `занято` = true, текст статуса обновляется. 09:50 Делегат функции для обработки подтверждения • Создан делегат функции для обработки подтверждения. • Функция возвращает true при успешном подтверждении, false — при ошибке. • Диалог закрывается в зависимости от результата функции. 11:11 Использование виртуальной машины для viewmodel • Viewmodel используется как виртуальная машина для доступа к статусу обновления. • При подтверждении можно вызвать функцию, которая вернёт задание. • Функция возвращает результат, позволяя дождаться подтверждения. 11:40 Обработка результата подтверждения • После подтверждения устанавливается значение «не занято». • Если результат ложный, диалог не закрывается. • Задача по умолчанию продолжает работать, даже если результат отрицательный. 12:15 Проверка работы диалога • Диалог быстро появляется и исчезает при нажатии «Да». • На странице действий используется новая способность подтверждения. 12:40 Асинхронный запуск и viewmodel • Выполняется асинхронный запуск для ожидания подтверждения. • Логика переносится в вызывающий объект для удобства выполнения пользовательского кода. 13:38 Управление кнопками в диалоге • Кнопки отключаются во время выполнения задачи. • Отмена команды ретрансляции позволяет кнопкам оставаться видимыми. 14:42 Использование флага «занято» • Создаётся свойство «занято» для управления возможностью выполнения команды. • При изменении значения «занято» происходит переоценка возможности выполнения. 18:01 Настройка ширины диалогового окна • Устанавливается ширина диалогового окна для предотвращения его расширения в ширину. • Диалог увеличивается в высоту, что менее неприятно для пользователя. 19:19 Выравнивание элементов интерфейса • Элементы интерфейса выравниваются по нижнему краю с помощью сетки. • Убираются границы и отступы для правильного отображения элементов. 21:29 Завершение настройки интерфейса • Новый пользовательский интерфейс готов к использованию. • Ограничение размера элемента управления позволяет увеличить количество отображаемого текста. • Возможность прокрутки текста остаётся, но это менее практично. 22:09 Гибкость элемента управления • В элемент управления встроена гибкость. • Удаляем высоту диалога и оставляем всё как есть. • Устанавливаем модель просмотра. 22:35 Обработка ошибок • При возникновении ошибки текст остаётся открытым. • Пользователь может нажать «нет» для закрытия или «да» для повторения попытки. • Создаём асинхронный диалог для взаимодействия с пользователем. 23:33 Завершение диалога • Комментируем код для демонстрации работы диалога. • Завершаем диалог до необходимости его дальнейшего использования. • Подходим к созданию базы данных.
