C# / WPF : как я могу программно создать столько текстовых блоков, сколько необходимо для отображения данных из таблицы

#c# #wpf #combobox #textblock #programmatically-created

#c# #wpf #комбинированный набор #текстовый блок #программно созданный

Вопрос:

Я пытаюсь заполнить поле ввода текстовым блоком, содержащим значения из таблицы.

Я хотел бы создать столько текстовых блоков, сколько строк в наборе потоков данных, возвращаемых выбором.

Затем добавьте эти текстовые блоки в поле со списком.

Может кто-нибудь сказать, как это можно сделать, пожалуйста?

Вот мой код:

 // instead of doing this I'd rather create them as needed. TextBlock tbx1 = new TextBlock(); TextBlock tbx2 = new TextBlock(); TextBlock tbx3 = new TextBlock();  // Get all category 1  DataRow[] cutProblemsRow = gediDataSet.CutProblems.Select("CutProbCategId= "   1);   // If there is any records if (cutProblemsRow.Length gt; 0) {  // create as many texblock as there are rows here    // cycle between rows  for (int i = 0; i lt; cutProblemsRow.Count(); i  )  {  // Assign value to textblock  TextBlock.Text = cutProblemsRow[i]["Problem"].ToString();   }  }   // Add the texblock created to the ComboBox cmbxProblem.Items.Add(tbx1); cmbxProblem.Items.Add(tbx2); cmbxProblem.Items.Add(tbx3);  

Комментарии:

1. Назначьте коллекцию строк свойству ItemsSource выпадающего списка. Вам вообще не нужно создавать никаких текстовых блоков.

2. Может быть, что-то вроде этого: cmbxProblem.ItemsSource = gediDataSet.CutProblems.Select("CutProbCategId= " 1).Select(dr =gt; dr["Problem"].ToString()).ToList();

3. Спасибо вам за ваши предложения. Я нашел решение во время мозгового штурма с другим программистом.

4. Как я могу добавить CutProbCategId в качестве выбранного значения вместо текста в выпадающем списке? Я хотел бы добавить пару «ключ, значение» в поле «Комбинация».

Ответ №1:

Как предположили Клеменс и Загглер, лучший способ-это:

 private void AddProblemCategtoCombobox(int categ) {  // clear list  cmbxProblem.ItemsSource = null;    // get list  cmbxProblem.ItemsSource = gediDataSet.CutProblems.Select("CutProbCategId= "   categ).Select(dr =gt; dr["Problem"].ToString()).ToList();  }  

Комментарии:

1. Пожалуйста, также используйте английский язык в своих комментариях