Создайте логин в WPF, шаблоне MVVM, C# и SQL Server - Шаг за шагом + Отображение пользовательских данных

YOUTUBE · 27.11.2025 06:11

Ключевые темы и таймкоды

Введение в шаблон 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
  • Проверка корректности отображения сообщения об ошибке.
  • Завершение урока и анонс следующего видео о создании основного вида и навигации.