#13 C# WPF UI - Полная анимация страницы

00:08 Введение и проблема с дженериками • Цель видео: реализовать анимацию перехода между страницами. • Проблема: XAML плохо работает с дженериками, возникают ошибки при использовании присоединённых свойств. • Решение: удаление ограничивающего дженерика и исправление мелких ошибок. 02:24 Исправление ошибок сборки • Ошибка: «ссылка на объект не указывает на экземпляр объекта». • Причина: экземпляр равен null, возможно, из-за действий WPF. • Решение: добавление вопросительного знака для проверки null. 03:11 Проблемы с контекстом данных • Ошибка: «невозможно прочитать свойства страницы». • Причина: динамическое преобразование значения в страницу в фрейме. • Решение: настройка контекста данных для устранения ошибки. 04:08 Тестирование приложения • Перенос контекста данных фрейма на страницу. • Привязка к контексту данных. • Запуск приложения и проверка отображения страниц. 05:59 Управление навигацией • Проблема: панель навигации в верхней части экрана. • Решение: скрытие панели навигации через «видимость навигационного интерфейса». • Необходимость очистки истории навигации при каждом переходе. 07:14 Создание присоединённого свойства • Создание присоединённого свойства «no frame history». • Переопределение метода on value changed. • Очистка истории навигации при каждом переходе через обработчик событий navigated. 10:10 Анимация переходов • Необходимость двух фреймов для одновременной анимации переходов. • Проблема привязки содержимого к фрейму. • Создание пользовательского элемента управления для удобства навигации. 11:39 Реализация пользовательского элемента управления • Добавление нового пользовательского элемента управления «page host». • Использование сетки и двух рамок для наложения страниц. • Проверка наличия сохранённого значения перед обновлением страницы. 13:31 Завершение реализации • Обновление новой страницы при смене текущей. • Сохранение значения на старой странице перед анимацией перехода. • Проблемы с созданием экземпляра и использованием свойства current page. 14:31 Свойства зависимостей • Свойства зависимостей идентичны присоединённым свойствам, но регистрируются по-другому. • Для работы с свойствами зависимостей используется ярлык: введите `prop` и дважды нажмите `Tab`. • Пример использования: `propdp` для свойства зависимости отображения. 15:31 Настройка базовой страницы • Базовая страница должна быть универсальной, но сейчас она является универсальной. • Необходимо исправить базовую страницу. • Изменение имени свойства на «текущая страница». 16:31 Тип класса-владельца • Свойство зависимости должно быть присоединено к объекту зависимости, которым является страница. • В поле «Тип класса владельца» вставьте «хост страницы». • Генерация метода для обновления фреймов при изменении свойства. 17:51 Конфигурация редактора • Настройка редактора для сокращения кода. • Использование сокращённой версии вместо фигурных скобок. • Устранение предупреждений с помощью контрольных точек. 18:46 Создание свойства зависимостей • Свойство зависимостей состоит из вызова `register`. • Замена ключевых слов `get` и `set` на общедоступное свойство. • Преобразование строки в свойство. 20:27 Использование свойства зависимостей в XAML • Свойство зависимости можно задать внутри XAML. • Пример задания значения: `currentPage = new LoginPage`. • Особенности работы свойств зависимостей в сеттере. 22:22 Исправление базовой страницы • Передача модели представления для доступа к контексту данных. • Создание отдельного базового класса для анимации. • Перенос общедоступных свойств в базовый класс. 25:30 Перенос анимации • Перенос анимации, не связанной с моделью представления. • Завершение настройки базовой страницы. 26:17 Тестирование • Компиляция и запуск приложения. • Проверка работы свойства зависимости при переходе на страницу входа. • Получение старой и новой страниц из XAML. 27:16 Получение содержимого старой страницы • Используем отправителя для доступа к самим себе в статическом методе. • Получаем фреймы новой и старой страниц. • Сохраняем содержимое текущей страницы как содержимое старой. 28:10 Очистка и перемещение содержимого • Очищаем содержимое новой страницы, устанавливая для него значение null. • Перемещаем содержимое новой страницы во фрейм старой страницы. • Визуально ничего не меняется, содержимое просто накладывается друг на друга. 29:49 Анимация исчезновения страницы 31:42 Настройка новой страницы 32:38 Анализ поведения при первой загрузке 35:52 Проблема с повторной инициализацией страницы 39:05 Решение проблемы с анимацией 40:22 Отладка анимации входа 41:08 Настройка скорости анимации 41:23 Создание модели представления для регистрации 42:26 Работа с командами входа и регистрации 45:44 Завершение работы над страницами входа и регистрации 46:20 Подготовка к веб-версии 47:06 Добавление заглушки для страницы чата 49:06 Создание функции перехода на страницу 50:44 Тестирование приложения 51:39 Планы на будущее

Иконка канала C# WPF Avalonia UI уголок
2 подписчика
12+
1 просмотр
3 дня назад
12+
1 просмотр
3 дня назад

00:08 Введение и проблема с дженериками • Цель видео: реализовать анимацию перехода между страницами. • Проблема: XAML плохо работает с дженериками, возникают ошибки при использовании присоединённых свойств. • Решение: удаление ограничивающего дженерика и исправление мелких ошибок. 02:24 Исправление ошибок сборки • Ошибка: «ссылка на объект не указывает на экземпляр объекта». • Причина: экземпляр равен null, возможно, из-за действий WPF. • Решение: добавление вопросительного знака для проверки null. 03:11 Проблемы с контекстом данных • Ошибка: «невозможно прочитать свойства страницы». • Причина: динамическое преобразование значения в страницу в фрейме. • Решение: настройка контекста данных для устранения ошибки. 04:08 Тестирование приложения • Перенос контекста данных фрейма на страницу. • Привязка к контексту данных. • Запуск приложения и проверка отображения страниц. 05:59 Управление навигацией • Проблема: панель навигации в верхней части экрана. • Решение: скрытие панели навигации через «видимость навигационного интерфейса». • Необходимость очистки истории навигации при каждом переходе. 07:14 Создание присоединённого свойства • Создание присоединённого свойства «no frame history». • Переопределение метода on value changed. • Очистка истории навигации при каждом переходе через обработчик событий navigated. 10:10 Анимация переходов • Необходимость двух фреймов для одновременной анимации переходов. • Проблема привязки содержимого к фрейму. • Создание пользовательского элемента управления для удобства навигации. 11:39 Реализация пользовательского элемента управления • Добавление нового пользовательского элемента управления «page host». • Использование сетки и двух рамок для наложения страниц. • Проверка наличия сохранённого значения перед обновлением страницы. 13:31 Завершение реализации • Обновление новой страницы при смене текущей. • Сохранение значения на старой странице перед анимацией перехода. • Проблемы с созданием экземпляра и использованием свойства current page. 14:31 Свойства зависимостей • Свойства зависимостей идентичны присоединённым свойствам, но регистрируются по-другому. • Для работы с свойствами зависимостей используется ярлык: введите `prop` и дважды нажмите `Tab`. • Пример использования: `propdp` для свойства зависимости отображения. 15:31 Настройка базовой страницы • Базовая страница должна быть универсальной, но сейчас она является универсальной. • Необходимо исправить базовую страницу. • Изменение имени свойства на «текущая страница». 16:31 Тип класса-владельца • Свойство зависимости должно быть присоединено к объекту зависимости, которым является страница. • В поле «Тип класса владельца» вставьте «хост страницы». • Генерация метода для обновления фреймов при изменении свойства. 17:51 Конфигурация редактора • Настройка редактора для сокращения кода. • Использование сокращённой версии вместо фигурных скобок. • Устранение предупреждений с помощью контрольных точек. 18:46 Создание свойства зависимостей • Свойство зависимостей состоит из вызова `register`. • Замена ключевых слов `get` и `set` на общедоступное свойство. • Преобразование строки в свойство. 20:27 Использование свойства зависимостей в XAML • Свойство зависимости можно задать внутри XAML. • Пример задания значения: `currentPage = new LoginPage`. • Особенности работы свойств зависимостей в сеттере. 22:22 Исправление базовой страницы • Передача модели представления для доступа к контексту данных. • Создание отдельного базового класса для анимации. • Перенос общедоступных свойств в базовый класс. 25:30 Перенос анимации • Перенос анимации, не связанной с моделью представления. • Завершение настройки базовой страницы. 26:17 Тестирование • Компиляция и запуск приложения. • Проверка работы свойства зависимости при переходе на страницу входа. • Получение старой и новой страниц из XAML. 27:16 Получение содержимого старой страницы • Используем отправителя для доступа к самим себе в статическом методе. • Получаем фреймы новой и старой страниц. • Сохраняем содержимое текущей страницы как содержимое старой. 28:10 Очистка и перемещение содержимого • Очищаем содержимое новой страницы, устанавливая для него значение null. • Перемещаем содержимое новой страницы во фрейм старой страницы. • Визуально ничего не меняется, содержимое просто накладывается друг на друга. 29:49 Анимация исчезновения страницы 31:42 Настройка новой страницы 32:38 Анализ поведения при первой загрузке 35:52 Проблема с повторной инициализацией страницы 39:05 Решение проблемы с анимацией 40:22 Отладка анимации входа 41:08 Настройка скорости анимации 41:23 Создание модели представления для регистрации 42:26 Работа с командами входа и регистрации 45:44 Завершение работы над страницами входа и регистрации 46:20 Подготовка к веб-версии 47:06 Добавление заглушки для страницы чата 49:06 Создание функции перехода на страницу 50:44 Тестирование приложения 51:39 Планы на будущее

, чтобы оставлять комментарии