How to determine if WPF DataGrid is in edit mode?

Possible duplicate:
Code to verify that the DataGrid cell is currently being edited

Is there a way to determine if the WPF DataGrid is in edit mode / which row is currently being edited?

+4
source share
1 answer

Vb.net

<Extension> Public Function GetContainerFromIndex(Of TContainer As DependencyObject) _ (ByVal itemsControl As ItemsControl, ByVal index As Integer) As TContainer Return DirectCast( itemsControl.ItemContainerGenerator.ContainerFromIndex(index), TContainer) End Function <Extension> Public Function IsEditing(ByVal dataGrid As DataGrid) As Boolean Return dataGrid.GetEditingRow IsNot Nothing End Function <Extension> Public Function GetEditingRow(ByVal dataGrid As DataGrid) As DataGridRow Dim sIndex = dataGrid.SelectedIndex If sIndex >= 0 Then Dim selected = dataGrid.GetContainerFromIndex(Of DataGridRow)(sIndex) If selected.IsEditing Then Return selected End If For i = 0 To dataGrid.Items.Count - 1 If i = sIndex Then Continue For Dim item = dataGrid.GetContainerFromIndex(Of DataGridRow)(i) If item.IsEditing Then Return item Next Return Nothing End Function 

FROM#:

 public static TContainer GetContainerFromIndex<TContainer> (this ItemsControl itemsControl, int index) where TContainer : DependencyObject { return (TContainer) itemsControl.ItemContainerGenerator.ContainerFromIndex(index); } public static bool IsEditing(this DataGrid dataGrid) { return dataGrid.GetEditingRow() != null; } public static DataGridRow GetEditingRow(this DataGrid dataGrid) { var sIndex = dataGrid.SelectedIndex; if (sIndex >= 0) { var selected = dataGrid.GetContainerFromIndex<DataGridRow>(sIndex); if (selected.IsEditing) return selected; } for (int i = 0; i < dataGrid.Items.Count; i++) { if (i == sIndex) continue; var item = dataGrid.GetContainerFromIndex<DataGridRow>(i); if (item.IsEditing) return item; } return null; } 
+8
source

Source: https://habr.com/ru/post/1316133/


All Articles