[英]C# wpf listview add items
我在创建列表视图时遇到问题。 我也是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]});
}
}
有人能帮我吗? 谢谢
看起来您正在尝试通过一次添加一行和一列来填充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;
然后只需将ListView
的ItemsSource
设置为您的结果对象,如下所示:
lbVysledky.ItemsSource = results;
另外,作为旁注,您似乎没有正确使用foreach
构造。 您正在枚举每个列,但是您要保留自己的计数器并按以下方式访问该列:
gvCol.Header = results.Columns[j].ColumnName;
在foreach
循环中,您已经使用dc变量枚举了列,因此可以像这样访问列:
gvCol.Header = dc.ColumnName;
并且您不需要手动计数列(带有j)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.