Как реализовать авторизацию в приложении с паттерном MVVM на WPF с подключением MSSQL?

Суть паттерна я понимаю, но реализовать на примере моего проекта я не могу. У меня есть MainWinow.xaml , в котором есть TextBox и PasswordBox. Мне нужно проверить введенные пользователем данные затем открыть, главное окно приложения. Логику без паттерна я сделал в MainWindow.xaml.cs Базу данных я использовал SQL в свойствах файла я создал строку подключения, а дальше я не знаю что делать и как связывать. Смотрел много тем по MVVM, реализовать не могу. В дальнейшем программа должна выводить статистику,взятую с БД, по каждому студенту и выводить на Главный экран.

Свойства проекта

using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Data.SqlClient;
using System.Configuration;

namespace Helwent
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>

    public partial class MainWindow : Window
    {   

        SqlConnection Connection = new SqlConnection(); //Создание экземпляров
        SqlCommand CommandSql = new SqlCommand();
        SqlDataReader SqlDataReader;
        
        public MainWindow()
        {
            InitializeComponent();

            Connection.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString(); //Получение строки подключения

            
        }
        
        /// <summary>
        /// Верификация Логина и Пароля с БД MSSQL
        /// </summary>
        /// <param name="Username">Логин</param>
        /// <param name="Password">Пароль</param>
        /// <returns></returns>
        private bool VeryfyUser(string Username,string Password)
        {
            Connection.Open(); //Открытие подключения
            CommandSql.Connection = Connection;
            CommandSql.CommandText = "select Status from Users where Username='"+Username+"' and Password='"+Password+"'"; // Запрос к БД га подтверждения данных
            SqlDataReader=CommandSql.ExecuteReader(); //Передаёт сроку запроса

            if (SqlDataReader.Read()) //Считавает данные из БД
            {
                if (Convert.ToBoolean(SqlDataReader["Status"]) == true) // Если Status == true, то позволяет входить
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// Выход из окна регистрации и входа
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Image_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Environment.Exit(0);
        }
        /// <summary>
        /// Метод для перемещения окна по экрану
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_MouseDown(object sender, MouseButtonEventArgs e)
        {
            DragMove();
        }

        /// <summary>
        /// Кнопка Входа
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Sign_button_Click(object sender, RoutedEventArgs e)
        {   
            if(Connection.State == System.Data.ConnectionState.Open) // Если подключение открыто,то закрыть
            {
                Connection.Close();
            }

            if (VeryfyUser(Login_user.Text, Password_user.Password)) // Если все правильно соообщение о успешном входе
            {
                
            }
            else
            {
                Login_user.BorderBrush = Brushes.Red;
                Password_user.BorderBrush= Brushes.Red;
            }
        }

    }
}

Ответы (0 шт):