У меня проблема с созданием списка. Я тоже новичок в C # и wpf. Я пробовал разные методы заполнения элементов ListView и не могу решить эту проблему, потому что входной массив имеет размеры NxN. Я нашел инструкции на Bindig, но я не могу их применить, потому что я не могу создать объект этого типа, потому что входной массив является динамическим. Я могу заполнять столбцы заголовков, но не строки и столбцы значениями. Этот код работает, но все значения вместе в одном столбце.
public void PrintListView(ResultsTable results)
{
System.Windows.Controls.GridView gv = new System.Windows.Controls.GridView();
gv.AllowsColumnReorder = true;
int j=0;
foreach (DataColumn dc in results.Columns)
{
GridViewColumn gvCol = new GridViewColumn();
gvCol.Header = results.Columns[j].ColumnName;
gvCol.Width = 200;
gv.Columns.Add(gvCol);
j++;
}
lbVysledky.View = gv;
foreach (DataRow dr in results.Rows)
{
string[] array1 = new string[1000];
// List<string> zoznam = new List<string>();
// ObservableCollection<string> kolekcia = new ObservableCollection<string>();
int i = 0;
foreach (DataColumn dc in results.Columns)
{
array1[i] = dr[dc].ToString();
// zoznam.Add (dr[dc].ToString());
// kolekcia.Add(dr[dc].ToString());
i++;
}
this.lbVysledky.Items.Add(new ListViewItem { Content = pole[0] + pole[1]});
}
}
Кто-нибудь может мне помочь? Благодарность
1 ответ
Похоже, вы пытаетесь заполнить ListView
, добавляя по одной строки и столбцы. Это не тот подход, который следует использовать при заполнении ListView
. Вместо этого вы добавляете ItemsSource
(в данном случае ваш объект результатов) и сообщаете ListView
, что означает DisplayMemberBinding
для каждого столбца, и он будет отображать правильные значения в каждом столбце для каждый ряд.
Вероятно, это просто означает изменение вашего цикла, в котором вы добавляете столбцы в ListView
примерно так:
foreach (DataColumn dc in results.Columns)
{
GridViewColumn gvCol = new GridViewColumn();
gvCol.DisplayMemberBinding = new Binding(dc.ColumnName);
gvCol.Header = results.Columns[j].ColumnName;
gvCol.Width = 200;
gv.Columns.Add(gvCol);
j++;
}
lbVysledky.View = gv;
Затем просто установите ItemsSource
из ListView
для вашего объекта результатов следующим образом:
lbVysledky.ItemsSource = results;
Кроме того, в качестве примечания, вы, похоже, не правильно используете конструкцию foreach
. вы перечисляете по каждому столбцу, но сохраняете свой собственный счетчик и получаете доступ к столбцу следующим образом:
gvCol.Header = results.Columns[j].ColumnName;
В цикле foreach
вы уже перечисляете столбцы с помощью переменной dc, поэтому вы можете получить доступ к столбцу следующим образом:
gvCol.Header = dc.ColumnName;
И вам не нужно вручную подсчитывать столбцы (с j).
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.