2012-08-27 61 views
0

我有一个ListView。我的主要目标是能够将ListViewItems复制到剪贴板,然后复制到Excel。但是我有麻烦阅读ListView单元格。从单元格获取值(ListView&ListViewItems)

得到我使用的列:

var columnNames = new StringBuilder(); 

foreach (GridViewColumn column in ((GridView)(listViewSolution.View)).Columns) 
{ 
     columnNames.Append(column.Header + "\t"); 
} 

现在我想添加的行,但我只能访问第一个单元格中的第一列,而不是第二或第三..:

var stringBuilder = new StringBuilder(); 

for (int i = 0; i < listViewSolution.Items.Count; i++) 
{ 
    stringBuilder.Append("\n"); 
    //foreach (GridViewColumn column in ((GridView)(listViewSolution.View)).Columns) 
    //{ 
     //if (column.Header != null) 
     //{ 
      ListViewItem myListBoxItem = 
       (ListViewItem)(listViewSolution.ItemContainerGenerator.ContainerFromIndex(0)); //= Index 0 -> First Row, First Cell; Index 1 = Second Row, First Cell; But do we get: Second Column, First Row???? 
      stringBuilder.Append(myListBoxItem.Content.ToString() + "\t"); 
     //} 
    //} 
} 
System.Windows.Clipboard.SetData(DataFormats.Text, columnNames.ToString() + stringBuilder.ToString()); 

帮助会非常感激..

回答

1

你不是在改变指数.ContainerFromIndex调用每个迭代。在那里使用你的循环变量,看看你得到了什么。

+0

当然,我已经尝试过了。看看背后的注释:'.ContainerFromIndex',用下一个索引(1),我切换到下一行,但不切换到下一个单元格第一行,我需要先从第一行获取所有数据,然后再增加下一行的索引。 – eMi