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); }
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); }
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); }
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); }