diff --git a/src/Avalonia.DataGrid/DataGridColumns.cs b/src/Avalonia.DataGrid/DataGridColumns.cs index 40b50e26e5..9d36a784dc 100644 --- a/src/Avalonia.DataGrid/DataGridColumns.cs +++ b/src/Avalonia.DataGrid/DataGridColumns.cs @@ -1440,7 +1440,7 @@ namespace Avalonia.Controls DataGridCell dataGridCell = dataGridRow.Cells[dataGridColumn.Index]; Debug.Assert(dataGridCell != null); - if (dataGridCell.Content is Control element) + if (dataGridCell.Content is IControl element) { dataGridColumn.RefreshCellContent(element, propertyName); } diff --git a/src/Avalonia.DataGrid/DataGridTemplateColumn.cs b/src/Avalonia.DataGrid/DataGridTemplateColumn.cs index c0f452af94..279d9e0c52 100644 --- a/src/Avalonia.DataGrid/DataGridTemplateColumn.cs +++ b/src/Avalonia.DataGrid/DataGridTemplateColumn.cs @@ -65,5 +65,15 @@ namespace Avalonia.Controls { return null; } + + protected internal override void RefreshCellContent(IControl element, string propertyName) + { + if(propertyName == nameof(CellTemplate) && element.Parent is DataGridCell cell) + { + cell.Content = GenerateElement(cell, cell.DataContext); + } + + base.RefreshCellContent(element, propertyName); + } } }