Imagara 2 vuotta sitten
vanhempi
commit
dfc23c0de6

+ 14 - 5
MyTests/Pages/CheckTestResults.xaml.cs

@@ -15,6 +15,7 @@ using System.Windows.Shapes;
 
 namespace MyTests.Pages
 {
+    // Страница с результатами выбранного пользователя
     public partial class CheckTestResults : Page
     {
         Users user;
@@ -22,20 +23,26 @@ namespace MyTests.Pages
         {
             InitializeComponent();
             user = _user;
-            TestName.Content = _test.Name;
-            PassedLabel.Content = _user.Surname + " " + _user.Name + " " + _user.Patronymic;
 
+            //Заполнение верхней панели при проверке результатов
+            TestName.Content = _test.Name; //Заполнение названия теста
+            PassedLabel.Content = _user.Surname + " " + _user.Name + " " + _user.Patronymic; // Заполнение пользователя, который проходил тест
+
+            // Проверка на картинку в базе данных у пользователя. Если нет, то устанавливается стандартная
             if (_user.Image == null)
                 AuthorImg.Source = new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute));
             else
                 AuthorImg.Source = ImagesFunctions.NewImage(_user);
 
+            //Очистка списка ответов в программе (ListBox)
             AnswersListBox.Items.Clear();
 
+            // Создание переменной(списка), хранящей список ответов
             List<AnswerClass> answerList = new List<AnswerClass>();
-
+            // Счетчик с номером ответа
             int counter = 1;
 
+            // Заполнение переменной ответами из базы данных, которые принадлежат выбранному тесту и пользователю
             foreach (Answers answer in cdb.db.Answers.Where(item => item.Questions.IdTest == _test.IdTest &&
                                                             item.IdUser == Session.User.IdUser).ToList())
             {
@@ -43,16 +50,18 @@ namespace MyTests.Pages
                 ac.Answer = answer;
                 ac.AnswerNum = counter;
                 counter++;
+                // Добавление данных в переменную(список)
                 answerList.Add(ac);
             }
-
+            // Заполнение списка ответов переменной со списком ответов
             AnswersListBox.ItemsSource = answerList;
         }
         private void PassedLabel_MouseDown(object sender, MouseButtonEventArgs e)
         {
+            // Переход на страницу профиля выбранного пользователя
             NavigationService.Navigate(new ProfilePage(user));
         }
-
+        //Класс, необходимый для ответов
         public class AnswerClass
         {
             public Answers Answer { get; set; }

+ 12 - 2
MyTests/Pages/CheckTestResultsCatalog.xaml.cs

@@ -6,6 +6,7 @@ using System.Windows.Navigation;
 
 namespace MyTests.Pages
 {
+    // Страница с каталогом результатов пользователей
     public partial class CheckTestResultsCatalog : Page
     {
         Tests test;
@@ -13,10 +14,13 @@ namespace MyTests.Pages
         {
             InitializeComponent();
             test = _test;
+            //Очистка списка ответов в программе (ListBox)
             AnswersListBox.Items.Clear();
 
+            // Создание переменной(списка), хранящей пользователя, список правильных ответов и количество вопросов в тесте
             List<AnswerClass> answerList = new List<AnswerClass>();
 
+            // Заполнение переменной данными из базы данных
             foreach (Users user in cdb.db.Users.Where(item => item.Answers.Count() > 0))
             {
                 if (cdb.db.Answers.Select(item => item.Questions.IdTest + " " + item.IdUser).Contains(_test.IdTest + " " + user.IdUser))
@@ -25,12 +29,14 @@ namespace MyTests.Pages
                     newUserAnswer.User = user;
                     newUserAnswer.Correct = Functions.CorrectAnswersCounter(_test, user);
                     newUserAnswer.Count = cdb.db.Questions.Where(item => item.IdTest == _test.IdTest).Count();
-
+                    // Добавление данных в переменную(список), хранящей пользователя, список правильных ответов и количество вопросов в тесте
                     answerList.Add(newUserAnswer);
                 }
             }
-
+            // Заполнение списка для отображение, хранящего пользователя и его баллы за тест
             AnswersListBox.ItemsSource = answerList;
+
+            // Если количество ответов на этот тест = 0, то появится надпись "На данный момент тест еще никто не прошел."
             if (AnswersListBox.Items.Count == 0)
                 ResultLabel.Content = "На данный момент тест еще никто не прошел.";
 
@@ -38,8 +44,10 @@ namespace MyTests.Pages
 
         private void AnswersListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
+            // Если выбран элемент списка
             if (((AnswerClass)AnswersListBox.SelectedItem) != null)
             {
+                // переход на страницу с проверкой результатов у конкретного пользователя
                 NavigationService.Navigate(new Pages.CheckTestResults(test,
                     cdb.db.Users.Where(item => item.IdUser == ((AnswerClass)AnswersListBox.SelectedItem).User.IdUser).FirstOrDefault()));
             }
@@ -47,8 +55,10 @@ namespace MyTests.Pages
 
         private void BackButton_Click(object sender, RoutedEventArgs e)
         {
+            // Возврат на прошлую страницу
             NavigationService.GoBack();
         }
+        // Класс, хранящий пользователя, список правильных ответов и количество вопросов в тесте
         public class AnswerClass
         {
             public Users User { get; set; }

+ 12 - 4
MyTests/Pages/CurTestPage.xaml.cs

@@ -6,11 +6,13 @@ using System.Windows.Navigation;
 
 namespace MyTests.Pages
 {
+    // Страница с прохождением теста
     public partial class CurTestPage : Page
     {
         public CurTestPage()
         {
             InitializeComponent();
+            // Заполнение вопроса из массива Content в файле-классе Session
             QuestionBox.Text = Session.Quest.Content[Session.CurQuestion];
         }
 
@@ -18,15 +20,19 @@ namespace MyTests.Pages
         {
             try
             {
+                // Создание переменной с вопросом из массива Content файла-класса Session
                 string strContent = Session.Quest.Content[Session.CurQuestion];
+                // Создание переменной с ответами из массива Answer файла-класса Session
                 string strAnswer = Session.Quest.Answer[Session.CurQuestion];
+
+                // Замена ответа пользователя в базе данных, если пользователь уже проходил этот тест
                 if (cdb.db.Answers.Select(item => item.IdQuestion + " " + item.IdUser).Contains(cdb.db.Questions.Where(item => item.Content == strContent && item.Answer == strAnswer).Select(item => item.IdQuestion).FirstOrDefault() + " " + Session.User.IdUser))
                 {
                     Answers answer = cdb.db.Answers.Where(item => item.IdQuestion == cdb.db.Questions.Where(i => i.Content == strContent && i.Answer == strAnswer).Select(i => i.IdQuestion).FirstOrDefault() && item.IdUser == Session.User.IdUser).FirstOrDefault();
                     answer.Answer = AnswerBox.Text;
                     cdb.db.SaveChanges();
                 }
-                else
+                else // Сохранение ответа пользователя, если он еще не проходил этот тест
                 {
                     Answers newAnswer = new Answers()
                     {
@@ -41,16 +47,18 @@ namespace MyTests.Pages
             }
             catch (Exception ex)
             {
-                new ErrorWindow(ex.Message).ShowDialog();
+                new ErrorWindow(ex.Message).ShowDialog();  // Вывод ошибки, если она есть
             }
 
+            // Добавление баллов в переменную Points файла-класса Session, если ответ правильный
             if (AnswerBox.Text.ToLower().Trim() == Session.Quest.Answer[Session.CurQuestion].ToLower().Trim())
                 Session.Points++;
+            // Если пройдены все вопросы, то переход к странице с результатами
             if (Session.CurQuestion >= Session.OpenedTest.Questions.Count() - 1)
                 NavigationService.Navigate(new Pages.ResultTestPage());
-            else
+            else // Если еще остались вопросы, то переход к следующему вопросу
             {
-                Session.CurQuestion++;
+                Session.CurQuestion++; // Номер вопроса прибавляется на 1
                 NavigationService.Navigate(new Pages.CurTestPage());
             }
         }

+ 46 - 24
MyTests/Pages/EditTestPage.xaml.cs

@@ -8,6 +8,7 @@ using System.Windows.Navigation;
 
 namespace MyTests.Pages
 {
+    // Страница с редактированием/созданием теста
     public partial class EditTestPage : Page
     {
         Tests test;
@@ -15,11 +16,15 @@ namespace MyTests.Pages
         public EditTestPage(Tests _test = null)
         {
             InitializeComponent();
-            if (_test == null)
+
+            if (_test == null) // Создание теста
             {
                 try
                 {
+                    // Получение максимального id теста и добавления к нему 1
                     int testId = cdb.db.Tests.Select(p => p.IdTest).DefaultIfEmpty(0).Max() + 1;
+
+                    // Создание теста
                     Tests newTest = new Tests()
                     {
                         IdTest = testId,
@@ -29,8 +34,12 @@ namespace MyTests.Pages
                         IsVisible = false,
                         CanAgain = false
                     };
+
+                    // Добавление теста в базу данных
                     cdb.db.Tests.Add(newTest);
                     cdb.db.SaveChanges();
+
+                    // Выбор созданного теста
                     test = cdb.db.Tests.Where(item => item.IdTest == testId).FirstOrDefault();
                 }
                 catch (Exception ex)
@@ -38,88 +47,101 @@ namespace MyTests.Pages
                     new ErrorWindow(ex.Message);
                 }
             }
-            else
+            else // Редактирование теста
             {
-                test = _test;
+                test = _test; // Выбор теста
+
+                // Замена состояний CheckBox
                 IsVisibleCB.IsChecked = test.IsVisible;
                 IsAnswersVisibleCB.IsChecked = test.IsAnswersVisible;
                 CanAgainCB.IsChecked = test.CanAgain;
             }
 
+            // Заполнение верхней панели
+            TestNameBox.Text = test.Name; // Заполнение названия теста
+            TestImg.Source = test.Image == null ?                                                   // Проверка на существование картинки у теста
+                new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : // в базе данных. Если существует, то устанавливается на ту, что в базе данных
+                ImagesFunctions.NewImage(_test);                                                    // Если не существует, то устанавливается стандартная
 
-            TestNameBox.Text = test.Name;
-            TestImg.Source = test.Image == null ? 
-                new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) :
-                ImagesFunctions.NewImage(_test);
-
+            // Очистка списка с вопросами
             QuestionsListBox.Items.Clear();
+            // Вызов метода с обновлением вопросов
             QuestionsUpdate();
         }
         private void QuestionsUpdate()
         {
+            // Заполнение списка с вопросами данными из базы данных
             QuestionsListBox.ItemsSource = cdb.db.Questions.Where(item => item.IdTest == test.IdTest).ToList();
         }
 
         private void QuestionsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            selected = ((Questions)QuestionsListBox.SelectedItem);
+            // Заполнение выбранного элемента списка с вопросамми
+            selected = (Questions)QuestionsListBox.SelectedItem;
         }
 
         private void AddQuestionButton_Click(object sender, RoutedEventArgs e)
         {
+            // Открытие окна с добавлением вопроса
             new QuestionAddToTestWindow(test).ShowDialog();
+            // Вызов метода с обновлением вопросов
             QuestionsUpdate();
         }
         private void DeleteQuestionButton_Click(object sender, RoutedEventArgs e)
         {
-            if (selected != null)
+            if (selected != null) // Проверка, выбран ли элемент списка с вопросами
             {
+                // Открытие окна с подтверждением действия
                 ConfirmationWindow confWindow = new ConfirmationWindow();
                 confWindow.ShowDialog();
-                if (confWindow.answer)
+                if (confWindow.answer) // Если ответ "Да"
                 {
                     try
                     {
+                        // Проход по всем ответам пользователей выбранного вопроса
                         foreach (Answers answer in cdb.db.Answers.Where(item => item.IdQuestion == selected.IdQuestion))
-                            cdb.db.Answers.Remove(answer);
-                        cdb.db.Questions.Remove(selected);
-                        cdb.db.SaveChanges();
+                            cdb.db.Answers.Remove(answer); // Удаление всех ответов пользователей, которые прошли этот вопрос.
+                        cdb.db.Questions.Remove(selected); // Удаление вопроса
+                        cdb.db.SaveChanges(); // Сохранение
                     }
                     catch (Exception ex)
                     {
-                        new ErrorWindow(ex.Message);
+                        new ErrorWindow(ex.Message); // Вывод ошибки, если она есть
                     }
                 }
+                // Вызов метода с обновлением вопросов
                 QuestionsUpdate();
             }
         }
         private void BackButton_Click(object sender, RoutedEventArgs e)
         {
+            // Возврат на прошлую страницу
             NavigationService.GoBack();
         }
 
         private void TestImg_MouseDown(object sender, MouseButtonEventArgs e)
         {
+            // Выбор картинки с компьютера пользователя
             BitmapImage image = ImagesFunctions.SelectImage();
-            if (image != null)
+            if (image != null) // Если картинка выбрана
             {
-                TestImg.Source = image;
-                test.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)TestImg.Source);
-                cdb.db.SaveChanges();
+                TestImg.Source = image; // Замена картинки теста на выбранную
+                test.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)TestImg.Source); // Замена картинки в базе данных в виде varbinary
+                cdb.db.SaveChanges(); // Сохранение
             }
         }
 
         private void TestNameBox_LostFocus(object sender, RoutedEventArgs e)
         {
-            test.Name = TestNameBox.Text;
+            test.Name = TestNameBox.Text; // Замена названия теста в базе данных на содержимое TestNameBox
         }
 
         private void SaveInfoCB(object sender, RoutedEventArgs e)
         {
-            test.IsVisible = IsVisibleCB.IsChecked == true;
-            test.IsAnswersVisible = IsAnswersVisibleCB.IsChecked == true;
-            test.CanAgain = CanAgainCB.IsChecked == true;
-            cdb.db.SaveChanges();
+            test.IsVisible = IsVisibleCB.IsChecked == true; // замена IsVisible в базе данных на содержимое IsVisibleCB
+            test.IsAnswersVisible = IsAnswersVisibleCB.IsChecked == true; // замена IsAnswersVisible в базе данных на содержимое IsAnswersVisibleCB
+            test.CanAgain = CanAgainCB.IsChecked == true; // замена CanAgain в базе данных на содержимое CanAgainCB
+            cdb.db.SaveChanges(); // сохранение данных
         }
     }
 }

+ 10 - 8
MyTests/Pages/LoginPage.xaml.cs

@@ -4,6 +4,7 @@ using System.Windows.Controls;
 using System.Windows.Navigation;
 namespace MyTests.Pages
 {
+    // Страница с входом
     public partial class LoginPage : Page
     {
         public LoginPage()
@@ -12,26 +13,27 @@ namespace MyTests.Pages
         }
         private void RegButton_Click(object sender, RoutedEventArgs e)
         {
-            NavigationService.Navigate(new Pages.RegistrationPage());
+            // Переход на страницу регистрации
+            NavigationService.Navigate(new RegistrationPage());
         }
 
         private void LogButton_Click(object sender, RoutedEventArgs e)
         {
             try
             {
-                if (!Functions.IsValidLogAndPass(LogBox.Text, PassBox.Password))
-                    new ErrorWindow("Поля не могут быть пустыми").Show();
-                else if (!Functions.LoginCheck(LogBox.Text, PassBox.Password))
-                    new ErrorWindow("Неверный логин или пароль").Show();
+                if (!Functions.IsValidLogAndPass(LogBox.Text, PassBox.Password))// Проверка, заполнены ли данные
+                    new ErrorWindow("Поля не могут быть пустыми").Show(); // Вывод ошибки
+                else if (!Functions.LoginCheck(LogBox.Text, PassBox.Password)) // Проверка на правильность ввода логина и пароля
+                    new ErrorWindow("Неверный логин или пароль").Show(); // Вывод ошибки
                 else
                 {
-                    Session.User = cdb.db.Users.Where(item => item.Login == LogBox.Text).FirstOrDefault();
-                    NavigationService.Navigate(new Pages.MainPage());
+                    Session.User = cdb.db.Users.Where(item => item.Login == LogBox.Text).FirstOrDefault(); // Запись пользователя, вошедшего в программу, в файл класса Session для будущего взаимодействия
+                    NavigationService.Navigate(new MainPage()); // Переход на главную страницу
                 }
             }
             catch
             {
-                new ErrorWindow("Ошибка входа").ShowDialog();
+                new ErrorWindow("Ошибка входа").ShowDialog();  // Вывод ошибки, если она есть
             }
         }
     }

+ 2 - 1
MyTests/Pages/MainPage.xaml

@@ -18,7 +18,8 @@
                     Height="30"
                     Margin="5"
                     Content="Создать тест"
-                    Click="CreateTestClick">
+                    Click="CreateTestClick"
+                    Visibility="Collapsed">
             </Button>
             <Button Height="30"
                     Margin="5"

+ 10 - 5
MyTests/Pages/MainPage.xaml.cs

@@ -3,26 +3,31 @@ using System.Windows.Controls;
 
 namespace MyTests.Pages
 {
+    // Страница с кнопками навигации снизу
     public partial class MainPage : Page
     {
         public MainPage()
         {
             InitializeComponent();
-            if (Session.User.Post != "Преподаватель")
-                CreateTest.Visibility = Visibility.Collapsed;
+
+            if (Session.User.Post == "Преподаватель") // Проверка, есть ли у пользователя права преподавателя
+                CreateTest.Visibility = Visibility.Visible; // Отображение кнопки создания теста
         }
         private void ProfileClick(object sender, RoutedEventArgs e)
         {
-            MainContentFrame.Content = new Pages.ProfilePage(Session.User);
+            // Переход на страницу с профилем
+            MainContentFrame.Content = new ProfilePage(Session.User);
         }
 
         private void TestsCatalogClick(object sender, RoutedEventArgs e)
         {
-            MainContentFrame.Content = new Pages.TestsCatalog();
+            // Переход на страницу с тестами
+            MainContentFrame.Content = new TestsCatalog();
         }
         private void CreateTestClick(object sender, RoutedEventArgs e)
         {
-            MainContentFrame.Content = new EditTestPage();
+            if (Session.User.Post == "Преподаватель")// Проверка, есть ли у пользователя права преподавателя
+                MainContentFrame.Content = new EditTestPage();// Переход на страницу создания теста
         }
     }
 }

+ 50 - 41
MyTests/Pages/ProfilePage.xaml.cs

@@ -8,88 +8,97 @@ using System.Windows.Navigation;
 
 namespace MyTests.Pages
 {
+    // Страница с профилем
     public partial class ProfilePage : Page
     {
         static Users user;
         public ProfilePage(Users _user)
         {
             InitializeComponent();
-            TestsListBox.Items.Clear();
+            TestsListBox.Items.Clear(); // Очистка списка с тестами
+
             user = _user;
-            FIOLabel.Content = user.Surname + " " + user.Name + " " + user.Patronymic; 
-            ProfileImage.Source = user.Image == null ?
-                new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute)) :
-                ImagesFunctions.NewImage(user);
-            EmailBox.Text = user.Email;
-            InfoBox.Text = user.Info;
-            if (user != Session.User)
-            {
-                EmailBox.IsEnabled = false;
-                InfoBox.IsEnabled = false;
-                SaveButton.Visibility = Visibility.Collapsed;
-            }
-            if (user.Post == "Преподаватель")
-                TestsLoading();
-            else
-                TestsListBox.Visibility = Visibility.Collapsed;
+
+            //Заполняются данные из БД
+            FIOLabel.Content = user.Surname + " " + user.Name + " " + user.Patronymic; // Заполнение ФИО из базы данных
+            ProfileImage.Source = user.Image == null ?                                                     // Если НЕТ картинки у пользователя в базе данных, то
+                new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute)) :   // Устанавливается стандартная
+                ImagesFunctions.NewImage(user); // Если есть - картинка устанавливается из БД
+
+            EmailBox.Text = user.Email; // Заполняется электронная почта из БД
+            InfoBox.Text = user.Info; // Заполняется информация из БД
+
+            if (user != Session.User)                        //
+            {                                                //
+                EmailBox.IsEnabled = false;                  // Если пользователь не владелец профиля, то запрещается редактирование
+                InfoBox.IsEnabled = false;                   //
+                SaveButton.Visibility = Visibility.Collapsed;//
+            }                                                //
+            
+            if (user.Post == "Преподаватель")// Если пользователь - преподаватель, то
+                TestsLoading();              // загружается список тестов преподавателя
+            else  // иначе
+                TestsListBox.Visibility = Visibility.Collapsed; // список тестов скрывается
         }
         private void EditImage_Click(object sender, RoutedEventArgs e)
         {
-            if (user == Session.User)
+            if (user == Session.User) // если пользователь - владелец
             {
-                BitmapImage image = ImagesFunctions.SelectImage();
-                if (image != null)
+                BitmapImage image = ImagesFunctions.SelectImage(); // Выбор картинки с компьютера пользователя
+                if (image != null) // Если картинка выбрана
                 {
-                    ProfileImage.Source = image;
-                    Session.User.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)ProfileImage.Source);
-                    cdb.db.SaveChanges();
+                    ProfileImage.Source = image; // картинка профиля заменяется на выбранную
+                    Session.User.Image = ImagesFunctions.BitmapSourceToByteArray((BitmapSource)ProfileImage.Source); // Замена картинки в базе данных в виде varbinary
+                    cdb.db.SaveChanges(); // Сохранение данных
                 }
             }
         }
         private void TestsLoading()
         {
+            // Создание списка с тестами. Если профиль открыл владелец, то в список добавляются еще и скрытые тесты.
             List<Tests> list = user != Session.User ? cdb.db.Tests.Where(item => item.IdUser == user.IdUser && item.IsVisible == true).ToList() :
                 cdb.db.Tests.Where(item => item.IdUser == user.IdUser).ToList();
 
+            // Создание списка с типом TestsClass, в котором будут хранится тесты и их картинки
             List<TestsClass> testsList = new List<TestsClass>();
-
+            // Берется каждый тест из списка с тестами
             foreach (Tests test in list)
             {
                 TestsClass tc = new TestsClass();
                 tc.test = test;
-                tc.testImage = test.Image == null ? new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : ImagesFunctions.NewImage(test);
-                testsList.Add(tc);
+                tc.testImage = test.Image == null ? new BitmapImage(new Uri("../Resources/Approval.png", UriKind.RelativeOrAbsolute)) : ImagesFunctions.NewImage(test); // Если у теста нет картинки, то устанавливается стандартная. Иначе - картинка из БД
+                testsList.Add(tc);// Добавление данных в список с тестами и картинками
             }
-
+            // Добавление данных из списка с тестами и картинками в список для отображения (ListBox)
             TestsListBox.ItemsSource = testsList;
         }
 
         private void SaveButton_Click(object sender, RoutedEventArgs e)
         {
-            if (!Functions.IsValidEmail(EmailBox.Text))
-                new ErrorWindow("Email введен неверно.").Show();
-            else if (Functions.IsEmailAlreadyTaken(EmailBox.Text) && EmailBox.Text != user.Email)
-                new ErrorWindow("Данный email уже используется.").Show();
+            if (!Functions.IsValidEmail(EmailBox.Text)) // Проверка на правильность ввода электронной почты
+                new ErrorWindow("Email введен неверно.").Show(); // Вывод ошибки
+            else if (Functions.IsEmailAlreadyTaken(EmailBox.Text) && EmailBox.Text != user.Email) // Проверка на уникальность электронной почты
+                new ErrorWindow("Данный email уже используется.").Show(); // Вывод ошибки
             else
             {
-                Session.User.Email = EmailBox.Text;
-                Session.User.Info = InfoBox.Text;
-                cdb.db.SaveChanges();
-                new ErrorWindow("Успешно.").ShowDialog();
+                Session.User.Email = EmailBox.Text; // Замена электронной почты в БД на содержимое EmailBox
+                Session.User.Info = InfoBox.Text;   // Замена информации в БД на содержимое InfoBox
+                cdb.db.SaveChanges(); // Сохранение 
+                new ErrorWindow("Успешно.").ShowDialog(); // Вывод диалогового окна
             }
         }
 
         private void CheckResultsButton_Click(object sender, RoutedEventArgs e)
         {
-            Button btn = (Button)sender;
-            if (btn.DataContext is TestsClass)
-                NavigationService.Navigate(new Pages.CheckTestResultsCatalog(((TestsClass)btn.DataContext).test));
+            Button btn = (Button)sender; // Создание кнопки, которая равна sender
+            if (btn.DataContext is TestsClass) // Проверка на содержимое элемента ListBox
+                NavigationService.Navigate(new CheckTestResultsCatalog(((TestsClass)btn.DataContext).test)); //Переход на страницу с каталогом результатов
         }
         private void EditTestButton_Click(object sender, RoutedEventArgs e)
         {
-            Button btn = (Button)sender;
-            if (btn.DataContext is TestsClass)
-                NavigationService.Navigate(new Pages.EditTestPage(((TestsClass)btn.DataContext).test));
+            Button btn = (Button)sender;// Создание кнопки, которая равна sender
+            if (btn.DataContext is TestsClass) // Проверка на содержимое элемента ListBox
+                NavigationService.Navigate(new EditTestPage(((TestsClass)btn.DataContext).test)); // Переход на страницу с редактированием теста
         }
 
         private void TestsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)