Введение в шаблон MVVM 0:01 WPF лучше подходит для использования шаблона MVVM. Шаблон состоит из модели, представления и модели представления. Модель представляет бизнес-объекты и реализует бизнес-логику.
Модель представления 0:49 Модель представления предоставляет данные и функциональность для представления. Реализует свойства и уведомления об изменении свойств. Выполняет команды для управления взаимодействием с пользователем.
Представление 1:37 Представление отображает содержимое модели представления. Создается только с помощью XAML. Зависимость между компонентами: представление знает только модель представления, модель представления знает только модель.
Начало работы с Visual Studio 2:37 Введение в дизайн представления входа в систему. Внедрение моделей и моделей представления. Добавление базового класса для моделей представления.
Базовый класс для моделей представления 3:43 Реализация интерфейса NotifyPropertyChange. Определение метода для вызова события при изменении свойства.
Класс для делегирования команд 4:20 Реализация командного интерфейса. Определение полей для выполнения команд и проверки их выполнения. Создание конструктора с параметрами для выполнения команд.
Методы класса для делегирования команд 6:06 Метод CanExecute для проверки условий выполнения команды. Метод Execute для выполнения делегированного метода.
Модель представления входа в систему 6:44 Наследование от базового класса. Определение свойств для привязки между представлением и моделью представления. Использование типа данных SecureString для пароля.
Уведомления об изменении свойств 8:11 Уведомление об изменении значений свойств. Использование атрибута для получения имени свойства. Определение команд для выполнения действий пользователя.
Инициализация команд 9:35 Инициализация команд в конструкторе. Использование командного класса для выполнения команд. Проверка условий выполнения команд для включения или отключения кнопок.
Делегирование команд 10:31 Методы делегируются командам с необязательными параметрами. Для отправки аргументов можно использовать оператор делегирования или лямбда-выражение. Определяются и инициализируются команды, проверяется валидность данных перед выполнением команды.
Проверка данных 11:15 Если имя пользователя и пароль пусты или содержат менее трех символов, команда не выполняется. Если данные верны, кнопка активируется для выполнения команды.
Привязки в шаблоне MVVM 11:57 Устанавливается ссылка на компонент viewmodel. Модель представления устанавливается в качестве контекста данных. Объявляются привязки для синхронизации свойств представления и viewmodel.
Преобразование типов данных 12:58 Создается класс для преобразования логического значения в перечисление видимости. Устанавливается преобразователь из ресурсов.
Привязка текста и пароля 13:35 Устанавливается привязка между текстом в текстовом поле и свойством username в viewmodel. Для поля password создается пользовательский элемент управления.
Регистрация свойства зависимости 15:04 Определяется свойство зависимости для поля пароля. Регистрируется свойство зависимости в коде.
Привязка кнопки и сообщения об ошибке 17:00 Заменяется поле ввода пароля пользовательским элементом управления. Привязывается кнопка входа в систему к команде входа в модель представления. Привязывается свойство сообщения об ошибке модели представления.
Проверка работы привязок 18:27 Кнопка корректно отключается при пустых текстовых полях. Обновляется источник привязки при изменении свойств текстовых полей.
Реализация метода команды входа 19:23 Реализуется метод команды входа в систему. Добавляется класс для пользовательской модели и интерфейс для репозитория.
Реализация репозитория 20:50 Определяются методы для аутентификации пользователя. Реализуется базовый класс для объектов доступа к данным. Добавляется пользовательский репозиторий и метод аутентификации пользователя.
Проверка имени пользователя и пароля 24:40 Проверка существования имени пользователя и генерирование исключения при неудаче. Использование шаблона исключения для обработки ошибок. Получение пароля в виде обычной строки для SQL Server.
Метод аутентификации пользователя 25:31 Определение поля для пользовательского репозитория. Инициализация репозитория в конструкторе. Вызов метода аутентификации пользователя с именем пользователя и паролем.
Регистрация и отображение пользователя 26:27 Регистрация и сохранение имени пользователя при успешном входе. Использование текущего основного свойства класса Thread для установки личности пользователя. Установка видимости вида входа в систему в зависимости от успешности входа.
Изменение запуска приложения 27:21 Подписка на событие startup и удаление маршрута start. Создание отдельного окна для входа в систему. Определение свойства is view visible в модели представления входа в систему.
Отображение главного окна 29:01 Создание и показ представления входа в систему. Подписка на событие is visible changed для закрытия окна входа при успешном входе. Открытие главного окна при успешном входе и закрытие окна входа.
Отображение пользовательских данных 30:19 Регистрация текущего пользователя в потоке. Извлечение пользовательских данных из базы данных и отображение их в главном окне. Сохранение пароля в виде пустой строки для безопасности.
Защита от несанкционированного доступа 34:58 Отображение сообщения об ошибке при попытке открыть главное окно без входа. Скрытие или отключение дочерних представлений для безопасности. Создание экземпляра свойства учетной записи пользователя в конструкторе для проверки подлинности.
Заключение 35:51 Проверка корректности отображения сообщения об ошибке. Завершение урока и анонс следующего видео о создании основного вида и навигации.