コード例 #1
0
        public GridLineTest(int number, Test currentTest, bool isTeacher)
        {
            // Колонки для основного Grid
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });

            // "Главная " кнопка
            button = new Button {
                Style = (Style)(this.Resources["styleButtonForList"])
            };
            // grid внутри главной кнопки
            gridLineButton = new Grid
            {
                Background = Brushes.White
            };
            // Колонки главной кнопки.
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(8.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(2.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });

            // Данные главной кнопки
            TextBlockForNumber textBlockNumber = new TextBlockForNumber
            {
                Text = (number + 1).ToString()
            };

            textBlockTestName = new TextBlockForText
            {
                Text = currentTest.Name
            };
            textBlockCategory = new TextBlockForNumber
            {
                Text = currentTest.Category.Name
            };

            TextBlockForNumber textBlockQuantityQuestions = null;

            if (isTeacher)
            {
                textBlockQuantityQuestions = new TextBlockForNumber
                {
                    Text = currentTest.Question.Count().ToString()
                };
            }
            else
            {
                textBlockQuantityQuestions = new TextBlockForNumber
                {
                    Text = currentTest.Question
                           .Where(q => q.Active == true)
                           .Count().ToString()
                };
            }

            // Добавление textBlock с данными в кнопку.
            gridLineButton.Children.Add(textBlockNumber);
            gridLineButton.Children.Add(textBlockTestName);
            gridLineButton.Children.Add(textBlockCategory);
            gridLineButton.Children.Add(textBlockQuantityQuestions);

            // Расстановка textBlock по колонкам
            Grid.SetColumn(textBlockNumber, 0);
            Grid.SetColumn(textBlockTestName, 1);
            Grid.SetColumn(textBlockCategory, 2);
            Grid.SetColumn(textBlockQuantityQuestions, 3);

            // Скрываем зарезервированное место для кнопок админа.
            Grid.SetColumnSpan(button, 3);

            // Добавим в кнопку grid с текстБлоками (в которых данные).
            button.Content = gridLineButton;

            // HACK добавляю в Tag id теста
            button.Tag = currentTest.Id;   // HACK возможно не используется (заменено нижней строкой).
            // заменил нижней строкой.
            this.TestID = currentTest.Id;


            this.CategoryId = currentTest.CategoryId;

            // Установка кнопки в первую колонку
            Grid.SetColumn(button, 0);

            // Привяжем grid в кнопке (чтоб растянуть на всю ширину кнопки)
            // к доп. невидимому полю в stackPanel
            Binding binding = new Binding();

            binding.ElementName = "textBlockHiddenForSizeButtonLine";
            binding.Path        = new PropertyPath("ActualWidth");
            gridLineButton.SetBinding(Grid.WidthProperty, binding);

            this.Children.Add(button);
        }
コード例 #2
0
        public GridLineCategory(int number, Category currentCategories, bool isTeacher)
        {
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });

            // "Главная " кнопка
            button = new Button();
            // grid внутри главной кнопки
            gridLineButton = new Grid
            {
                Background = Brushes.White
            };
            // Колонки главной кнопки.
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });

            // Данные главной кнопки
            TextBlockForNumber tbNumber = new TextBlockForNumber
            {
                Text = (number + 1).ToString()
            };
            TextBlockForText tbNameCategory = new TextBlockForText
            {
                Text = currentCategories.Name
            };

            TextBlockForNumber tbQuantityTests = null;

            if (isTeacher)
            {
                tbQuantityTests = new TextBlockForNumber
                {
                    Text = currentCategories.Test.Count().ToString()
                };
            }
            else
            {
                tbQuantityTests = new TextBlockForNumber
                {
                    Text = currentCategories
                           .Test
                           .Where(t => t.Active == true)
                           .Count().ToString()
                };
            }

            // Добавление textBlock с данными в кнопку.
            gridLineButton.Children.Add(tbNumber);
            gridLineButton.Children.Add(tbNameCategory);
            gridLineButton.Children.Add(tbQuantityTests);

            // Расстановка textBlock по колонкам
            Grid.SetColumn(tbNumber, 0);
            Grid.SetColumn(tbNameCategory, 1);
            Grid.SetColumn(tbQuantityTests, 2);

            // Скрываем зарезервированное место для кнопок админа.
            Grid.SetColumnSpan(button, 3);


            // Добавим в кнопку grid с текстБлоками (в которых данные).
            button.Content = gridLineButton;
            // HACK добавляю в Tag id категории
            button.Tag = currentCategories.Id;

            // HACK возможно вместо верхней (если она не используется).
            this.CategoryId = currentCategories.Id;

            // Установка кнопки в первую колонку
            Grid.SetColumn(button, 0);

            // Привяжем grid в кнопке (чтоб растянуть на всю ширину кнопки)
            // к доп. невидимому полю в stackPanel
            Binding binding = new Binding();

            binding.ElementName = "textBlockHiddenForSizeButtonLine";
            //binding.ElementName = textBlockHiddenForSizeButtonLine.Name;
            binding.Path = new PropertyPath("ActualWidth");
            gridLineButton.SetBinding(Grid.WidthProperty, binding);


            this.Children.Add(button);
        }
コード例 #3
0
        public GridLineAnswer(int number, Answer currentAnswer)
        {
            // Колонки для основного Grid
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });


            // "Главная " кнопка
            button = new Button {
                Style = (Style)(this.Resources["styleButtonForList"])
            };
            // grid внутри главной кнопки
            gridLineButton = new Grid
            {
                Background = Brushes.White
            };
            // Колонки главной кнопки.
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });


            // Данные главной кнопки
            TextBlockForNumber textBlockNumber = new TextBlockForNumber
            {
                Text = (number + 1).ToString()
            };
            TextBlockForText textBlockQuestionName = new TextBlockForText
            {
                Text         = currentAnswer.ResponseText,
                TextWrapping = TextWrapping.Wrap
            };

            CheckBox checkBox = new CheckBox
            {
                IsEnabled           = false,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center
            };

            if (currentAnswer.CorrectAnswer == true)
            {
                checkBox.IsChecked = true;
            }
            else
            {
                checkBox.IsChecked = false;
            }

            // Добавление элементов с данными в кнопку.
            gridLineButton.Children.Add(textBlockNumber);
            gridLineButton.Children.Add(textBlockQuestionName);
            gridLineButton.Children.Add(checkBox);

            // Расстановка textBlock по колонкам
            Grid.SetColumn(textBlockNumber, 0);
            Grid.SetColumn(textBlockQuestionName, 1);
            Grid.SetColumn(checkBox, 2);

            // Скрываем зарезервированное место для кнопок админа.
            Grid.SetColumnSpan(button, 3);

            // Добавим в кнопку grid с текстБлоками (в которых данные).
            button.Content = gridLineButton;

            // Для получения id вопроса из кнопки.
            this.QuestionId = currentAnswer.QuestionId;

            // Установка кнопки в первую колонку
            Grid.SetColumn(button, 0);

            // Привяжем grid в кнопке (чтоб растянуть на всю ширину кнопки)
            // к доп. невидимому полю в stackPanel
            Binding binding = new Binding();

            binding.ElementName = "textBlockHiddenForSizeButtonLine";
            binding.Path        = new PropertyPath("ActualWidth");
            gridLineButton.SetBinding(Grid.WidthProperty, binding);

            this.Children.Add(button);
        }
コード例 #4
0
        public GridLineQuestion(int number, Question currentQuestion)
        {
            // Колонки для основного Grid
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            this.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });


            // "Главная " кнопка
            button = new Button {
                Style = (Style)(this.Resources["styleButtonForList"])
            };
            // grid внутри главной кнопки
            gridLineButton = new Grid
            {
                Background = Brushes.White
            };
            // Колонки главной кнопки.
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(10.0, GridUnitType.Star)
            });
            gridLineButton.ColumnDefinitions.Add(new ColumnDefinition
            {
                Width = new GridLength(1.0, GridUnitType.Star)
            });


            // Данные главной кнопки
            TextBlockForNumber textBlockNumber = new TextBlockForNumber
            {
                Text = (number + 1).ToString()
            };
            TextBlockForText textBlockQuestionName = new TextBlockForText
            {
                Text         = currentQuestion.QuestionText,
                TextWrapping = TextWrapping.Wrap
            };
            TextBlockForNumber textBlockQuantityAnswers = new TextBlockForNumber
            {
                Text = currentQuestion.Answer.Count().ToString()
            };

            // Добавление textBlock с данными в кнопку.
            gridLineButton.Children.Add(textBlockNumber);
            gridLineButton.Children.Add(textBlockQuestionName);
            gridLineButton.Children.Add(textBlockQuantityAnswers);

            // Расстановка textBlock по колонкам
            Grid.SetColumn(textBlockNumber, 0);
            Grid.SetColumn(textBlockQuestionName, 1);
            Grid.SetColumn(textBlockQuantityAnswers, 2);

            // Скрываем зарезервированное место для кнопок админа.
            Grid.SetColumnSpan(button, 3);

            // Добавим в кнопку grid с текстБлоками (в которых данные).
            button.Content = gridLineButton;

            this.QuestionID = currentQuestion.Id;
            this.TestId     = currentQuestion.TestId;

            // Установка кнопки в первую колонку
            Grid.SetColumn(button, 0);

            // Привяжем grid в кнопке (чтоб растянуть на всю ширину кнопки)
            // к доп. невидимому полю в stackPanel
            Binding binding = new Binding();

            binding.ElementName = "textBlockHiddenForSizeButtonLine";
            binding.Path        = new PropertyPath("ActualWidth");
            gridLineButton.SetBinding(Grid.WidthProperty, binding);

            this.Children.Add(button);
        }