#21 C# WPF UI - Пользовательское системное всплывающее диалоговое окно
00:08 Введение в всплывающую систему • Добавление диалогового окна с сообщением для подтверждения действий или вывода предупреждений. • Привязка окна к кнопке отправки для отображения сообщения. • Использование инверсии управления для отделения пользовательского интерфейса от других уровней приложения. 01:06 Команда отправки и модульное тестирование • Создание команды отправки с параметром send для отображения окна с сообщением. • Необходимость работы приложения без пользовательского интерфейса для модульного тестирования. • Возможность замены пользовательского интерфейса системой модульного тестирования. 02:24 Инверсия управления и пользовательский интерфейс • Внедрение пользовательского интерфейса в инверсию управления. • Доступ к модели представления и пользовательскому интерфейсу из любой точки приложения. • Запуск функции отображения окна с сообщением через IOC. 03:20 Создание модели представления диалогового окна • Создание папки для диалогового окна и модели представления. • Определение свойств диалогового окна: заголовок, сообщение, кнопка «ОК». 05:10 Интерфейс IUI Manager • Создание интерфейса IUI Manager для управления пользовательским интерфейсом. • Обработка взаимодействия с пользовательским интерфейсом через задачу. • Передача модели представления в функцию отображения окна. 11:24 Привязка менеджера пользовательского интерфейса • Привязка менеджера пользовательского интерфейса через IOC. • Использование константы для привязки и создание экземпляра класса. • Получение экземпляра менеджера через IOC для дальнейшего использования. 13:16 Тестирование и преимущества подхода • Проверка работы системы путём нажатия кнопки отправки. • Передача вызова функции пользовательского интерфейса из ядра. • Преимущества подхода: возможность замены UI-менеджера для модульного тестирования, избегание жёсткой привязки данных. 14:25 Заключение • Возможность изменения UI-менеджера для адаптации к различным сценариям. • Создание нового менеджера для модульного тестирования с фиксированными ответами. • Избегание необходимости получения данных из модели представления напрямую. 15:17 Введение в IOC • Классические приложения имеют иерархическую структуру с вызовами, идущими только вниз. • IOC позволяет каждому модулю ссылаться только на ядро, что делает их независимыми. • Взаимодействие модулей осуществляется через IOC и интерфейсы. 16:17 Создание диалогового окна • Копирование главного окна и создание диалогового окна. • Добавление модели представления диалогового окна, наследующей от модели представления окна. • Настройка конструктора для диалогового окна. 18:13 Настройка заголовка и контента • Добавление заголовка в модель представления диалогового окна. • Создание конструктора для диалогового окна, ожидающего окно. • Переименование файла для удобства работы. 20:45 Автоматическое изменение размера 23:10 Стилизация заголовка 26:03 Настройка размеров диалогового окна 28:15 Работа с потоком пользовательского интерфейса 29:13 Запуск действия и ожидание его завершения 30:07 Создание задачи для ожидания закрытия диалога 31:06 Обработка ошибок с помощью try-finally 32:16 Проверка последовательности вызовов 34:02 Исправление отображения диалогового окна 36:45 Настройка заголовка диалогового окна 38:27 Анализ потоков и ожидание выполнения задачи 41:13 Потенциальная проблема тупиковой ситуации 42:12 Решение проблемы с потоком пользовательского интерфейса 43:12 Предупреждение о блокировке пользовательского интерфейса 44:06 Использование метода show message 45:05 Настройка модели представления 45:59 Создание нового диалогового окна 46:56 Разработка базового класса для диалогового окна 51:51 Настройка модели представления диалогового окна 54:36 Реализация функции show message 56:57 Привязка размеров и заголовка 57:46 Создание пользовательского элемента управления 58:39 Универсальный вызов для отображения диалогового окна 01:00:20 Настройка диалога с сообщением 01:01:30 Привязка заголовка и настройка параметров 01:03:22 Настройка контента диалогового окна 01:05:34 Отображение сообщения 01:07:13 Работа с заголовком модели представления 01:09:45 Оптимизация получения заголовка 01:10:36 Базовая модель представления диалога 01:11:10 Обработка заголовка диалога 01:12:32 Проверка заголовка 01:13:49 Приоритет заголовка 01:14:30 Решение проблем с компиляцией 01:17:18 Добавление кнопки закрытия 01:21:07 Привязка команды закрытия 01:26:49 Анимация диалога 01:28:42 Обновление анимации появления элемента 01:29:41 Настройка видимости после затухания 01:30:34 Прикрепление свойств к элементам фреймворка 01:31:31 Добавление свойства dimmable overlay visible 01:32:12 Настройка событий и контекста данных 01:33:06 Тестирование и результаты 01:34:24 Заключение и планы на будущее 01:36:03 Обновление Foddy Weaver 01:37:32 Решение проблем после обновления 01:38:32 Завершение
00:08 Введение в всплывающую систему • Добавление диалогового окна с сообщением для подтверждения действий или вывода предупреждений. • Привязка окна к кнопке отправки для отображения сообщения. • Использование инверсии управления для отделения пользовательского интерфейса от других уровней приложения. 01:06 Команда отправки и модульное тестирование • Создание команды отправки с параметром send для отображения окна с сообщением. • Необходимость работы приложения без пользовательского интерфейса для модульного тестирования. • Возможность замены пользовательского интерфейса системой модульного тестирования. 02:24 Инверсия управления и пользовательский интерфейс • Внедрение пользовательского интерфейса в инверсию управления. • Доступ к модели представления и пользовательскому интерфейсу из любой точки приложения. • Запуск функции отображения окна с сообщением через IOC. 03:20 Создание модели представления диалогового окна • Создание папки для диалогового окна и модели представления. • Определение свойств диалогового окна: заголовок, сообщение, кнопка «ОК». 05:10 Интерфейс IUI Manager • Создание интерфейса IUI Manager для управления пользовательским интерфейсом. • Обработка взаимодействия с пользовательским интерфейсом через задачу. • Передача модели представления в функцию отображения окна. 11:24 Привязка менеджера пользовательского интерфейса • Привязка менеджера пользовательского интерфейса через IOC. • Использование константы для привязки и создание экземпляра класса. • Получение экземпляра менеджера через IOC для дальнейшего использования. 13:16 Тестирование и преимущества подхода • Проверка работы системы путём нажатия кнопки отправки. • Передача вызова функции пользовательского интерфейса из ядра. • Преимущества подхода: возможность замены UI-менеджера для модульного тестирования, избегание жёсткой привязки данных. 14:25 Заключение • Возможность изменения UI-менеджера для адаптации к различным сценариям. • Создание нового менеджера для модульного тестирования с фиксированными ответами. • Избегание необходимости получения данных из модели представления напрямую. 15:17 Введение в IOC • Классические приложения имеют иерархическую структуру с вызовами, идущими только вниз. • IOC позволяет каждому модулю ссылаться только на ядро, что делает их независимыми. • Взаимодействие модулей осуществляется через IOC и интерфейсы. 16:17 Создание диалогового окна • Копирование главного окна и создание диалогового окна. • Добавление модели представления диалогового окна, наследующей от модели представления окна. • Настройка конструктора для диалогового окна. 18:13 Настройка заголовка и контента • Добавление заголовка в модель представления диалогового окна. • Создание конструктора для диалогового окна, ожидающего окно. • Переименование файла для удобства работы. 20:45 Автоматическое изменение размера 23:10 Стилизация заголовка 26:03 Настройка размеров диалогового окна 28:15 Работа с потоком пользовательского интерфейса 29:13 Запуск действия и ожидание его завершения 30:07 Создание задачи для ожидания закрытия диалога 31:06 Обработка ошибок с помощью try-finally 32:16 Проверка последовательности вызовов 34:02 Исправление отображения диалогового окна 36:45 Настройка заголовка диалогового окна 38:27 Анализ потоков и ожидание выполнения задачи 41:13 Потенциальная проблема тупиковой ситуации 42:12 Решение проблемы с потоком пользовательского интерфейса 43:12 Предупреждение о блокировке пользовательского интерфейса 44:06 Использование метода show message 45:05 Настройка модели представления 45:59 Создание нового диалогового окна 46:56 Разработка базового класса для диалогового окна 51:51 Настройка модели представления диалогового окна 54:36 Реализация функции show message 56:57 Привязка размеров и заголовка 57:46 Создание пользовательского элемента управления 58:39 Универсальный вызов для отображения диалогового окна 01:00:20 Настройка диалога с сообщением 01:01:30 Привязка заголовка и настройка параметров 01:03:22 Настройка контента диалогового окна 01:05:34 Отображение сообщения 01:07:13 Работа с заголовком модели представления 01:09:45 Оптимизация получения заголовка 01:10:36 Базовая модель представления диалога 01:11:10 Обработка заголовка диалога 01:12:32 Проверка заголовка 01:13:49 Приоритет заголовка 01:14:30 Решение проблем с компиляцией 01:17:18 Добавление кнопки закрытия 01:21:07 Привязка команды закрытия 01:26:49 Анимация диалога 01:28:42 Обновление анимации появления элемента 01:29:41 Настройка видимости после затухания 01:30:34 Прикрепление свойств к элементам фреймворка 01:31:31 Добавление свойства dimmable overlay visible 01:32:12 Настройка событий и контекста данных 01:33:06 Тестирование и результаты 01:34:24 Заключение и планы на будущее 01:36:03 Обновление Foddy Weaver 01:37:32 Решение проблем после обновления 01:38:32 Завершение




