Skip to content

Commit

Permalink
Iterate to find the index of the column taking visibility into account.
Browse files Browse the repository at this point in the history
  • Loading branch information
appel1 committed Apr 24, 2024
1 parent 151a66f commit 10dec90
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
14 changes: 12 additions & 2 deletions src/Avalonia.Controls.DataGrid/DataGridColumnCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -296,14 +296,24 @@ internal void EnsureVisibleEdgedColumnsWidth()
}
}

internal int GetColumnDisplayIndex(int columnIndex)
/// <summary>
/// Gets the index of the column among the visible columns in display order.
/// </summary>
internal int GetColumnVisibleIndex(int columnIndex)
{
if (columnIndex < 0 || columnIndex >= ItemsInternal.Count)
return -1;
var column = ItemsInternal[columnIndex];
if (!column.IsVisible)
return -1;
return column.DisplayIndex;

int index = 0;
while ((column = GetPreviousColumn(column, true, null, null)) != null)
{
index++;
}

return index;
}

internal DataGridColumn GetColumnAtDisplayIndex(int displayIndex)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ internal DataGridRow OwningRow
int IChildIndexProvider.GetChildIndex(ILogical child)
{
return child is DataGridCell cell
? OwningGrid.ColumnsInternal.GetColumnDisplayIndex(cell.ColumnIndex)
? OwningGrid.ColumnsInternal.GetColumnVisibleIndex(cell.ColumnIndex)
: throw new InvalidOperationException("Invalid cell type");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ internal DataGrid OwningGrid
int IChildIndexProvider.GetChildIndex(ILogical child)
{
return child is DataGridColumnHeader header
? OwningGrid.ColumnsInternal.GetColumnDisplayIndex(header.ColumnIndex)
? OwningGrid.ColumnsInternal.GetColumnVisibleIndex(header.ColumnIndex)
: throw new InvalidOperationException("Invalid cell type");
}

Expand Down

0 comments on commit 10dec90

Please sign in to comment.