Browse Source

Merge pull request #11012 from AvaloniaUI/fix-datagrid-edit-cell

Backport WCT fix for editing DataGrid
gh-readonly-queue/master/pr-11014-920ad77f1627cbc7d59a97f157e24358e1e344f5
Dan Walmsley 3 years ago
committed by GitHub
parent
commit
311df96fd3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      src/Avalonia.Controls.DataGrid/DataGrid.cs

28
src/Avalonia.Controls.DataGrid/DataGrid.cs

@ -3962,6 +3962,7 @@ namespace Avalonia.Controls
bool focusLeftDataGrid = true;
bool dataGridWillReceiveRoutedEvent = true;
Visual focusedObject = FocusManager.Instance.Current as Visual;
DataGridColumn editingColumn = null;
while (focusedObject != null)
{
@ -3974,22 +3975,29 @@ namespace Avalonia.Controls
// Walk up the visual tree. If we hit the root, try using the framework element's
// parent. We do this because Popups behave differently with respect to the visual tree,
// and it could have a parent even if the VisualTreeHelper doesn't find it.
Visual parent = focusedObject.GetVisualParent();
var parent = focusedObject.Parent as Visual;
if (parent == null)
{
if (focusedObject is Control element)
{
parent = element.VisualParent;
if (parent != null)
{
dataGridWillReceiveRoutedEvent = false;
}
}
parent = focusedObject.GetVisualParent();
}
else
{
dataGridWillReceiveRoutedEvent = false;
}
focusedObject = parent;
}
if (focusLeftDataGrid)
if (EditingRow != null && EditingColumnIndex != -1)
{
editingColumn = ColumnsItemsInternal[EditingColumnIndex];
if (focusLeftDataGrid && editingColumn is DataGridTemplateColumn)
{
dataGridWillReceiveRoutedEvent = false;
}
}
if (focusLeftDataGrid && !(editingColumn is DataGridTemplateColumn))
{
ContainsFocus = false;
if (EditingRow != null)

Loading…
Cancel
Save