WPF datagrid coller

J'ai de la difficulté à coller à partir d'un fichier csv dans le wpf datagrid - j'ai suivi les suggestions ici

http://blogs.msdn.com/b/vinsibal/archive/2008/09/25/pasting-content-to-new-rows-on-the-wpf-datagrid.aspx

et le code exectues avec pas de problème, cependant, il semble que toutes les nouvelles lignes sont créées, mais seule la première ligne est renseignée avec les données. Les données semblent être constamment remplacés, de sorte que le dernier élément dans le presse-papiers de données est renseignée dans la première ligne et toutes les autres lignes sont vides. Je sais que ce doit être un indice de la question ou quelque chose, mais je ne peux pas le retrouver.

Aussi quand je regarde les objets de la grille peut être liée collection n'ont pas de toutes les données. Est-il quelque chose dans le OnPastingCellClipboardContent de la colonne qui va mal (conversion de données peut-être)?

Toutes les idées (voir le code ci-dessous)

protected virtual void OnExecutedPaste(object sender, ExecutedRoutedEventArgs args)
{
//parse the clipboard data
List<string[]> rowData = ClipboardHelper.ParseClipboardData();
bool hasAddedNewRow = false;
//call OnPastingCellClipboardContent for each cell
int minRowIndex = Math.Max(Items.IndexOf(CurrentItem), 0);
int maxRowIndex = Items.Count - 1;
int minColumnDisplayIndex = (SelectionUnit != DataGridSelectionUnit.FullRow) ? Columns.IndexOf(CurrentColumn) : 0;
int maxColumnDisplayIndex = Columns.Count - 1;
int rowDataIndex = 0;
for (int i = minRowIndex; i <= maxRowIndex && rowDataIndex < rowData.Count; i++, rowDataIndex++)
{
if (CanUserAddRows && i == maxRowIndex)
{
//add a new row to be pasted to
ICollectionView cv = CollectionViewSource.GetDefaultView(Items);
IEditableCollectionView iecv = cv as IEditableCollectionView;
if (iecv != null)
{
hasAddedNewRow = true;
iecv.AddNew();
if (rowDataIndex + 1 < rowData.Count)
{
//still has more items to paste, update the maxRowIndex
maxRowIndex = Items.Count - 1;
}
}
}
else if (i == maxRowIndex)
{
continue;
}
int columnDataIndex = 0;
for (int j = minColumnDisplayIndex; j < maxColumnDisplayIndex && columnDataIndex < rowData[rowDataIndex].Length; j++, columnDataIndex++)
{
DataGridColumn column = ColumnFromDisplayIndex(j);
column.OnPastingCellClipboardContent(Items[i], rowData[rowDataIndex][columnDataIndex]);
}
}

}

InformationsquelleAutor Jon | 2010-11-07