2017-05-16 3 views
2

Ich boote ein Ereignis eines DataGrid in WPF, damit ich verfolgen kann, ob eine Zeile aktualisiert wurde.WPF RowEditEnding gibt alte Werte zurück

Also mein Ziel ist es, die neuen Werte der Zeile zu erhalten, wenn es geändert wurde, aber es gibt nur den alten Wert zurück. Wenn ich es zum zweiten Mal bearbeite, gibt es den neuen Wert zurück. Warum das?

+0

Ich will nicht ein neues Element hinzuzufügen. Ich möchte die bearbeitete Zeile mit ihren neuen Werten abrufen. – Anokrize

+0

möchten Sie es tun? e.EditAction == DataGridEditAction.?(commit?) (diese Bedingung in Ihrer Methode) –

+0

Was soll ich tun? Ich verstehe es nicht. Der Code von oben gibt nur die Zeile mit ihren alten Werten zurück. – Anokrize

Antwort

1

Warum ist das?

Das RowEditEnding Ereignis eintritt vor eine Reihe bearbeiten begangen oder abgebrochen wird: https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.roweditending(v=vs.110).aspx.

Was Sie wirklich tun sollten, ist die IEditableObject Schnittstelle in Ihrer Skill Klasse zu implementieren und die Logik in der EndEdit() Methode zu behandeln.

Die andere Option wäre, um explizit die Bearbeitung in den Ereignishandler zu begehen:

private bool _handle = true; 
private void dg2_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e) 
{ 
    if (_handle) 
    { 
     _handle = false; 
     dg2.CommitEdit(); 
     var text = e.Row.Item as Skill; 
     //... 
     _handle = true; 
    } 
} 
Verwandte Themen