015. Avalonia UI - MVVM Injecting Services

00:00 Введение в viewmodels и сервисы • Объяснение необходимости использования viewmodels, сервисов и привязок. • Создание viewmodel для меню с сгруппированным контентом. • Модель представления должна содержать строку для отображения и быть связана с выбором в раскрывающемся списке. 00:58 Разделение обязанностей с помощью сервисов • Viewmodels не должны собирать информацию, это задача сервисов. • Создание папки «службы» и монолитного сервиса «i audio интерфейсная служба». • Сервис будет обрабатывать получение данных, необходимых для приложения. 01:57 Реализация метода получения конфигураций каналов • Определение метода «get channel configuration» для получения списка конфигураций каналов. • Метод будет асинхронным, возможно, извлекающим данные из базы данных. 02:49 Создание элемента конфигурации канала • Создание папки «модели данных» и элемента «channel configuration item». • Элемент должен быть неизменяемым для предотвращения изменений информации. 03:52 Решение проблемы с компилятором • Описание ошибки в Rider при использовании ключевого слова `cp nines init`. • Временное решение проблемы путём добавления внешнего класса. 07:23 Использование record для неизменяемых объектов • Объяснение использования record для создания неизменяемых классов. • Record позволяет эффективно компилировать классы со свойствами, доступными только для чтения. 09:13 Создание фиктивного сервиса аудио-интерфейса • Создание фиктивного сервиса аудио-интерфейса для разработки пользовательского интерфейса. • Возможность замены фиктивного сервиса реальным при запуске приложения. 10:11 Имитация данных конфигурации канала • Создание нового элемента конфигурации канала с группой, текстом и коротким текстом. • Пример имитации данных: группа «моно-стерео», длинный текст и короткий текст. • Использование строчных букв для групп и заглавных для пользовательского интерфейса. 11:37 Введение в проект • Обсуждение фиктивной информации и группировки данных по строке group. • Планирование внедрения сервиса в viewmodel. • Объяснение работы общедоступных свойств через observable. 12:39 Конструктор и внедрение зависимостей • Создание конструктора для внедрения службы аудио-интерфейса. • Определение частных свойств для хранения зависимостей. • Пример инициализации зависимостей в разделе «Инициализация фреймворка». 15:31 Проблемы с конструктором по умолчанию • Проблема отсутствия конструктора по умолчанию и её решение путём создания дополнительного конструктора. • Замена двух экземпляров для корректной работы приложения. • Проверка работы конструктора в режиме разработки. 17:41 Получение списка конфигураций • Использование observable сгруппированной коллекции для работы со списком конфигураций. • Формирование групп по заголовкам и элементам конфигурации. • Инициализация данных асинхронно при готовности приложения. 19:12 Именование свойств и предупреждения • Решение проблем с предупреждениями о неправильном именовании свойств. • Применение подчёркивания для наблюдаемых свойств. • Устранение предупреждений о несоответствии правилам именования. 20:10 Выбор и отображение выбранного элемента • Сохранение выбранного элемента и получение текста для кнопки. • Создание наблюдаемого свойства для выбранного элемента. • Обновление пользовательского интерфейса при изменении выбранного элемента. 22:45 Команда для выбора элемента • Определение команды для обработки нажатия на элемент. • Запуск события уведомления при изменении выбранного канала. • Обновление пользовательского интерфейса при выборе элемента. 23:24 Обработка нажатия пункта меню • Ввод пункта из пользовательского интерфейса. • Обновление выбранного элемента. • Закрытие меню при изменении свойства «открыто». • Обновление кнопки с учётом выбранного элемента. 24:16 Добавление команды «ретранслировать» • Превращение команды в реальную команду. 24:24 Загрузка информации • Использование общедоступных методов для загрузки информации. • Преобразование методов в команды для асинхронной ретрансляции. 25:34 Преобразование макета • Преобразование макета в наблюдаемую сгруппированную коллекцию. • Группировка конфигураций каналов по элементу и свойствам. 26:30 Запуск загрузки настроек • Запуск загрузки настроек при загрузке представления. • Инициализация контекста данных и команды «Загрузить настройки». 27:34 Привязка текста кнопок • Привязка текста кнопок к выбранному свойству. • Отображение сообщения «выбрать канал». 28:32 Ошибка с нулевой ссылкой • Возникновение исключения с нулевой ссылкой. • Проверка контекста данных и команды «Загрузить настройки». 29:37 Исправление ошибки • Завершение инициализации фреймворка. • Проверка жизненного цикла приложения. 30:20 Проверка контекста данных • Проверка заполнения контекста данных информацией. • Исправление неправильно сгруппированных данных. 31:39 Обновление приложения • Обработка внедрения зависимостей. • Привязка списка к пользовательскому интерфейсу. • Заполнение интерфейса реальными данными. 32:20 Заключение

Иконка канала Ленинский Букварь
240 подписчиков
12+
8 просмотров
7 дней назад
12+
8 просмотров
7 дней назад

00:00 Введение в viewmodels и сервисы • Объяснение необходимости использования viewmodels, сервисов и привязок. • Создание viewmodel для меню с сгруппированным контентом. • Модель представления должна содержать строку для отображения и быть связана с выбором в раскрывающемся списке. 00:58 Разделение обязанностей с помощью сервисов • Viewmodels не должны собирать информацию, это задача сервисов. • Создание папки «службы» и монолитного сервиса «i audio интерфейсная служба». • Сервис будет обрабатывать получение данных, необходимых для приложения. 01:57 Реализация метода получения конфигураций каналов • Определение метода «get channel configuration» для получения списка конфигураций каналов. • Метод будет асинхронным, возможно, извлекающим данные из базы данных. 02:49 Создание элемента конфигурации канала • Создание папки «модели данных» и элемента «channel configuration item». • Элемент должен быть неизменяемым для предотвращения изменений информации. 03:52 Решение проблемы с компилятором • Описание ошибки в Rider при использовании ключевого слова `cp nines init`. • Временное решение проблемы путём добавления внешнего класса. 07:23 Использование record для неизменяемых объектов • Объяснение использования record для создания неизменяемых классов. • Record позволяет эффективно компилировать классы со свойствами, доступными только для чтения. 09:13 Создание фиктивного сервиса аудио-интерфейса • Создание фиктивного сервиса аудио-интерфейса для разработки пользовательского интерфейса. • Возможность замены фиктивного сервиса реальным при запуске приложения. 10:11 Имитация данных конфигурации канала • Создание нового элемента конфигурации канала с группой, текстом и коротким текстом. • Пример имитации данных: группа «моно-стерео», длинный текст и короткий текст. • Использование строчных букв для групп и заглавных для пользовательского интерфейса. 11:37 Введение в проект • Обсуждение фиктивной информации и группировки данных по строке group. • Планирование внедрения сервиса в viewmodel. • Объяснение работы общедоступных свойств через observable. 12:39 Конструктор и внедрение зависимостей • Создание конструктора для внедрения службы аудио-интерфейса. • Определение частных свойств для хранения зависимостей. • Пример инициализации зависимостей в разделе «Инициализация фреймворка». 15:31 Проблемы с конструктором по умолчанию • Проблема отсутствия конструктора по умолчанию и её решение путём создания дополнительного конструктора. • Замена двух экземпляров для корректной работы приложения. • Проверка работы конструктора в режиме разработки. 17:41 Получение списка конфигураций • Использование observable сгруппированной коллекции для работы со списком конфигураций. • Формирование групп по заголовкам и элементам конфигурации. • Инициализация данных асинхронно при готовности приложения. 19:12 Именование свойств и предупреждения • Решение проблем с предупреждениями о неправильном именовании свойств. • Применение подчёркивания для наблюдаемых свойств. • Устранение предупреждений о несоответствии правилам именования. 20:10 Выбор и отображение выбранного элемента • Сохранение выбранного элемента и получение текста для кнопки. • Создание наблюдаемого свойства для выбранного элемента. • Обновление пользовательского интерфейса при изменении выбранного элемента. 22:45 Команда для выбора элемента • Определение команды для обработки нажатия на элемент. • Запуск события уведомления при изменении выбранного канала. • Обновление пользовательского интерфейса при выборе элемента. 23:24 Обработка нажатия пункта меню • Ввод пункта из пользовательского интерфейса. • Обновление выбранного элемента. • Закрытие меню при изменении свойства «открыто». • Обновление кнопки с учётом выбранного элемента. 24:16 Добавление команды «ретранслировать» • Превращение команды в реальную команду. 24:24 Загрузка информации • Использование общедоступных методов для загрузки информации. • Преобразование методов в команды для асинхронной ретрансляции. 25:34 Преобразование макета • Преобразование макета в наблюдаемую сгруппированную коллекцию. • Группировка конфигураций каналов по элементу и свойствам. 26:30 Запуск загрузки настроек • Запуск загрузки настроек при загрузке представления. • Инициализация контекста данных и команды «Загрузить настройки». 27:34 Привязка текста кнопок • Привязка текста кнопок к выбранному свойству. • Отображение сообщения «выбрать канал». 28:32 Ошибка с нулевой ссылкой • Возникновение исключения с нулевой ссылкой. • Проверка контекста данных и команды «Загрузить настройки». 29:37 Исправление ошибки • Завершение инициализации фреймворка. • Проверка жизненного цикла приложения. 30:20 Проверка контекста данных • Проверка заполнения контекста данных информацией. • Исправление неправильно сгруппированных данных. 31:39 Обновление приложения • Обработка внедрения зависимостей. • Привязка списка к пользовательскому интерфейсу. • Заполнение интерфейса реальными данными. 32:20 Заключение

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