Imagara 2 年之前
父節點
當前提交
bc915c01da

+ 17 - 13
MyTests/ConfirmationWindow.xaml

@@ -12,12 +12,15 @@
         WindowStartupLocation="CenterScreen" 
         WindowStyle="None" 
         ResizeMode="NoResize">
-    <Grid Background="#FF2D2D2D">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="27*"/>
-            <RowDefinition Height="13*"/>
-        </Grid.RowDefinitions>
-        <TextBlock Name="ErrorLabel" 
+    <Border BorderBrush="Black"
+            BorderThickness="1"
+            MouseDown="Border_MouseDown">
+        <Grid Background="#FF2D2D2D">
+            <Grid.RowDefinitions>
+                <RowDefinition Height="27*"/>
+                <RowDefinition Height="13*"/>
+            </Grid.RowDefinitions>
+            <TextBlock Name="ErrorLabel" 
                Text="Вы действительно хотите это сделать?" 
                TextWrapping="Wrap"
                HorizontalAlignment="Center" 
@@ -25,26 +28,27 @@
                VerticalAlignment="Top" 
                Width="262"
                    Background="{x:Null}">
-        </TextBlock>
-        <Grid Grid.Row="1">
-            <StackPanel Orientation="Horizontal"
+            </TextBlock>
+            <Grid Grid.Row="1">
+                <StackPanel Orientation="Horizontal"
                         HorizontalAlignment="Center"
                         VerticalAlignment="Center">
-                <Button Content="Да" 
+                    <Button Content="Да" 
                 VerticalAlignment="Bottom" 
                 HorizontalAlignment="Center" 
                 Height="30" 
                 Width="130" 
                         Margin="0,0,5,0"
                 Click="YesButton"/>
-                <Button Content="Нет" 
+                    <Button Content="Нет" 
                 VerticalAlignment="Bottom" 
                 HorizontalAlignment="Center" 
                 Height="30" 
                 Width="130"
                         Margin="5,0,0,0"
                 Click="NoButton"/>
-            </StackPanel>
+                </StackPanel>
+            </Grid>
         </Grid>
-    </Grid>
+    </Border>
 </Window>

+ 6 - 0
MyTests/ConfirmationWindow.xaml.cs

@@ -1,4 +1,5 @@
 using System.Windows;
+using System.Windows.Input;
 
 namespace MyTests
 {
@@ -20,5 +21,10 @@ namespace MyTests
             answer = false;
             this.Close();
         }
+        private void Border_MouseDown(object sender, MouseButtonEventArgs e)
+        {
+            if (e.LeftButton == MouseButtonState.Pressed)
+                DragMove();
+        }
     }
 }

+ 14 - 6
MyTests/ImagesManip.cs

@@ -39,12 +39,20 @@ namespace MyTests
 
         public static BitmapImage NewImage(Users user)
         {
-            MemoryStream ms = new MemoryStream(user.Image);
-            BitmapImage image = new BitmapImage();
-            image.BeginInit();
-            image.StreamSource = ms;
-            image.EndInit();
-            return image;
+            try
+            {
+                MemoryStream ms = new MemoryStream(user.Image);
+                BitmapImage image = new BitmapImage();
+                image.BeginInit();
+                image.StreamSource = ms;
+                image.EndInit();
+                return image;
+            }
+            catch
+            {
+                return new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute));
+            }
+            
         }
     }
 }

+ 20 - 6
MyTests/Pages/CheckTestResults.xaml

@@ -23,29 +23,43 @@
                    FontSize="25">
             </Label>
         </StackPanel>
-        <ListBox Name="TestsListBox"
+        <StackPanel Orientation="Horizontal"
+                    HorizontalAlignment="Right">
+            <Label Content="Прошел:"
+                   FontSize="20">
+            </Label>
+            <Image Name="AuthorImg"
+                   Source="/MyTests;component/Resources/StandartImage.png"
+                   Margin="7">
+            </Image>
+            <Label Name="PassedLabel"
+                   Content="USER"
+                   FontSize="20"
+                   MouseDown="PassedLabel_MouseDown">
+            </Label>
+        </StackPanel>
+        <ListBox Name="AnswersListBox"
                  Background="{StaticResource color1}"
                  BorderBrush="{Binding TestsListBox}" 
                  Grid.Row="1">
             <ScrollViewer VerticalScrollBarVisibility="Visible"/>
             <ListBox.ItemTemplate>
                 <DataTemplate>
-                    <Border Width="{Binding Path=ActualWidth, ElementName=TestsListBox}"
+                    <Border Width="{Binding Path=ActualWidth, ElementName=AnswersListBox}"
                             Height="50"
                             CornerRadius="10"
                             Background="{StaticResource color2}">
                         <StackPanel Orientation="Horizontal">
                             <Label MinWidth="30"
-                                   Content="{Binding RelativeSource={RelativeSource Mode=TemplatedParent},
-                                      Path=(ItemsControl.AlternationIndex)}"
+                                   Content="{Binding AnswerNum}"
                                    VerticalContentAlignment="Center"
                                    HorizontalContentAlignment="Center">
                             </Label>
                             <StackPanel>
-                                <Label Content="{Binding Questions.Content}"/>
+                                <Label Content="{Binding Answer.Questions.Content}"/>
                                 <TextBlock>
                                 <Run Text="Ответ: " Foreground="LightGray"/>
-                                <Run Text="{Binding Answer}" Foreground="White"/>
+                                <Run Text="{Binding Answer.Answer}" Foreground="White"/>
                                 </TextBlock>
                             </StackPanel>
                         </StackPanel>

+ 37 - 3
MyTests/Pages/CheckTestResults.xaml.cs

@@ -17,13 +17,47 @@ namespace MyTests.Pages
 {
     public partial class CheckTestResults : Page
     {
+        Users user;
         public CheckTestResults(Tests _test, Users _user)
         {
             InitializeComponent();
+            user = _user;
             TestName.Content = _test.Name;
-            TestsListBox.Items.Clear();
-            TestsListBox.ItemsSource = cnt.db.Answers.Where(item => item.Questions.IdTest == _test.IdTest &&
-            item.IdUser == Session.User.IdUser).ToList();
+            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 = ImagesManip.NewImage(_user);
+
+            AnswersListBox.Items.Clear();
+
+            List<AnswerClass> answerList = new List<AnswerClass>();
+
+            int counter = 1;
+
+            foreach (Answers answer in cnt.db.Answers.Where(item => item.Questions.IdTest == _test.IdTest &&
+                                                            item.IdUser == Session.User.IdUser).ToList())
+            {
+                AnswerClass ac = new AnswerClass();
+                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; }
+            public int AnswerNum { get; set; }
+        }
+
     }
 }

+ 2 - 2
MyTests/Pages/CurTestPage.xaml.cs

@@ -33,6 +33,7 @@ namespace MyTests.Pages
                 {
                     Answers answer = cnt.db.Answers.Where(item => item.IdQuestion == cnt.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;
+                    cnt.db.SaveChanges();
                 }
                 else
                 {
@@ -49,8 +50,7 @@ namespace MyTests.Pages
             }
             catch (Exception ex)
             {
-                MessageBox.Show(ex.ToString());
-                //new ErrorWindow(ex.ToString()).ShowDialog();
+                new ErrorWindow(ex.Message).ShowDialog();
             }
 
             if (AnswerBox.Text.ToLower().Trim() == Session.Quest.Answer[Session.CurQuestion].ToLower().Trim())

+ 20 - 9
MyTests/Pages/ProfilePage.xaml

@@ -35,7 +35,9 @@
                        HorizontalAlignment="Center">
                 </Label>
                 <Image Name="ProfileImage"
-                   Grid.Row="1"
+                       MinHeight="100"
+                       MinWidth="100"
+                       Grid.Row="1"
                        Margin="10,0,10,10"
                    Source="/MyTests;component/Resources/StandartImage.png"
                    MouseDown="EditImage_Click">
@@ -90,8 +92,9 @@
                  Margin="10,0,10,0"
                  Background="{StaticResource color1}"
                  BorderBrush="{x:Null}"
-                 SelectionChanged="TestsListBox_SelectionChanged">
-            <ScrollViewer VerticalScrollBarVisibility="Visible"/>
+                 SelectionChanged="TestsListBox_SelectionChanged"
+                 ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+                 ScrollViewer.VerticalScrollBarVisibility="Hidden">
             <ListBox.ItemTemplate>
                 <DataTemplate>
                     <Border Width="{Binding Path=ActualWidth, ElementName=TestsListBox}"
@@ -121,14 +124,22 @@
                             <StackPanel Orientation="Horizontal"
                                         HorizontalAlignment="Right">
                                 <Button Width="30" Height="30"
-                                    Margin="0,0,5,0"
-                                    Content="✓"
-                                    Click="CheckResultsButton_Click">
+                                        Margin="0,0,5,0"
+                                        Content="✓"
+                                        Visibility="{Binding Path=Visibility, ElementName=SaveButton}"
+                                        Click="CheckResultsButton_Click">
                                 </Button>
                                 <Button Width="30" Height="30"
-                                    Margin="0,0,5,0"
-                                    Content="✎"
-                                    Click="EditTestButton_Click">
+                                        Margin="0,0,5,0"
+                                        Content="✎"
+                                        Visibility="{Binding Path=Visibility, ElementName=SaveButton}"
+                                        Click="EditTestButton_Click">
+                                </Button>
+                                <Button Width="30" Height="30"
+                                        Margin="0,0,5,0"
+                                        Content="✕"
+                                        Visibility="{Binding Path=Visibility, ElementName=SaveButton}"
+                                        Click="DeleteTestButton_Click">
                                 </Button>
                             </StackPanel>
                             

+ 39 - 22
MyTests/Pages/ProfilePage.xaml.cs

@@ -13,27 +13,25 @@ namespace MyTests.Pages
         public ProfilePage(Users _user)
         {
             InitializeComponent();
-            if (_user != null)
+            TestsListBox.Items.Clear();
+            user = _user;
+            UserName.Content = user.Login;
+            if (user.Image == null)
+                ProfileImage.Source = new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute));
+            else
+                ProfileImage.Source = ImagesManip.NewImage(user);
+            EmailBox.Text = user.Email;
+            InfoBox.Text = user.Info;
+            if (user != Session.User)
             {
-                user = _user;
-                UserName.Content = user.Login;
-                if (user.Image == null)
-                    ProfileImage.Source = new BitmapImage(new Uri("../Resources/StandartImage.png", UriKind.RelativeOrAbsolute));
-                else
-                    ProfileImage.Source = ImagesManip.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;
+                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)
         {
@@ -50,9 +48,8 @@ namespace MyTests.Pages
         }
         private void TestsLoading()
         {
-            TestsListBox.Items.Clear();
-            if(user != Session.User)
-            TestsListBox.ItemsSource = cnt.db.Tests.Where(item => item.IdUser == user.IdUser && item.IsVisible == true).ToList();
+            if (user != Session.User)
+                TestsListBox.ItemsSource = cnt.db.Tests.Where(item => item.IdUser == user.IdUser && item.IsVisible == true).ToList();
             else
                 TestsListBox.ItemsSource = cnt.db.Tests.Where(item => item.IdUser == user.IdUser).ToList();
         }
@@ -106,5 +103,25 @@ namespace MyTests.Pages
                 new ErrorWindow("Ошибка открытия теста.").ShowDialog();
             }
         }
+
+        private void DeleteTestButton_Click(object sender, RoutedEventArgs e)
+        {
+            Button btn = (Button)sender;
+            if (btn.DataContext is Tests)
+            {
+                ConfirmationWindow confWindow = new ConfirmationWindow();
+                confWindow.ShowDialog();
+                if (confWindow.answer)
+                {
+                    foreach (Answers answer in cnt.db.Answers.Where(item => item.Questions.IdTest == ((Tests)btn.DataContext).IdTest))
+                        cnt.db.Answers.Remove(answer);
+                    foreach (Questions question in cnt.db.Questions.Where(item => item.IdTest == ((Tests)btn.DataContext).IdTest))
+                        cnt.db.Questions.Remove(question);
+                    cnt.db.Tests.Remove((Tests)btn.DataContext);
+                    cnt.db.SaveChanges();
+                    TestsLoading();
+                }
+            }
+        }
     }
 }

+ 3 - 2
MyTests/Pages/TestsCatalog.xaml

@@ -62,8 +62,9 @@
                  Grid.Row="1"
                  Background="{StaticResource color1}"
                  BorderBrush="{x:Null}"
-                 SelectionChanged="TestsListBox_SelectionChanged">
-            <ScrollViewer VerticalScrollBarVisibility="Visible"/>
+                 SelectionChanged="TestsListBox_SelectionChanged"
+                 ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+                 ScrollViewer.VerticalScrollBarVisibility="Hidden">
             <ListBox.ItemTemplate>
                 <DataTemplate>
                     <Border Width="{Binding Path=ActualWidth, ElementName=TestsListBox}"

+ 1 - 0
MyTests/Styles/Style.xaml

@@ -20,6 +20,7 @@
 
     <Style TargetType="Label">
         <Setter Property="Foreground" Value="White"/>
+        <Setter Property="VerticalContentAlignment" Value="Center"/>
     </Style>
 
     <Style TargetType="Run">