Ok, ich habe keine einfache Lösung gefunden und niemand hat mich auf einen hingewiesen. Der folgende Code kann verwendet werden, um einem DataGrid eine angefügte Eigenschaft IsInEditMode hinzuzufügen. Hoffe es hilft jemandem:
%Vor%Um es zu verwenden, setzen Sie auf dem Datagrid die ProcessIsInEditMode-Eigenschaft auf true:
%Vor% Stellen Sie sicher, dass die IsInEditMode-Eigenschaft mit dem Modus des DataGrids synchronisiert ist.
Wenn Sie auch die Bearbeitungszelle haben wollen, ändern Sie den Code in BeginningEdit
accorringly.
Es scheint, dass Sie diese Information auch aus der Items-Ansicht bekommen können, nämlich das funktioniert:
%Vor%Ich habe das nicht bestätigt, aber höchstwahrscheinlich könnten Sie diese Flags in einem Viewmodel abrufen, wenn Ihre gebundene Auflistung eine IEditableCollectionView bereitstellt.
Alle obigen Antworten mit IsEditing auf dem Datagridrow oder IsEdittitngItem in der IEditableCollectionView sind teilweise Antworten auf mich:
Wenn der Benutzer edition eingibt, dann auf irgendeine andere Zelle klickt, wird das EndEdit-Ereignis ausgelöst, aber das DataGridRow hat immer noch die Eigenschaft IsEditing to True !!! Und wenn Sie versuchen, die DataGridCell verantwortlich zu finden, ist seine IsEditingProperty immer falsch ... Ich denke, es ist ein Fehler. Und um das gewünschte Verhalten zu haben, musste ich diesen hässlichen Workaround schreiben
%Vor%Dies erzwingt im Grunde, dass das Raster IsEditing = false auf dem Datagridrow setzt, wenn eine Zelle die Bearbeitung stoppt.
Tags und Links wpf wpfdatagrid