Browse Source

Handle IsReadOnly correct for DataGridTemplateColumn

pull/7315/head
Tim U 5 years ago
parent
commit
66a02a37d0
  1. 2
      src/Avalonia.Controls.DataGrid/DataGridColumn.cs
  2. 25
      src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs

2
src/Avalonia.Controls.DataGrid/DataGridColumn.cs

@ -448,7 +448,7 @@ namespace Avalonia.Controls
internal set; internal set;
} }
public bool IsReadOnly public virtual bool IsReadOnly
{ {
get get
{ {

25
src/Avalonia.Controls.DataGrid/DataGridTemplateColumn.cs

@ -15,7 +15,7 @@ namespace Avalonia.Controls
{ {
public class DataGridTemplateColumn : DataGridColumn public class DataGridTemplateColumn : DataGridColumn
{ {
IDataTemplate _cellTemplate; private IDataTemplate _cellTemplate;
public static readonly DirectProperty<DataGridTemplateColumn, IDataTemplate> CellTemplateProperty = public static readonly DirectProperty<DataGridTemplateColumn, IDataTemplate> CellTemplateProperty =
AvaloniaProperty.RegisterDirect<DataGridTemplateColumn, IDataTemplate>( AvaloniaProperty.RegisterDirect<DataGridTemplateColumn, IDataTemplate>(
@ -54,7 +54,7 @@ namespace Avalonia.Controls
{ {
// IsReadOnly = true; // IsReadOnly = true;
} }
protected override IControl GenerateElement(DataGridCell cell, object dataItem) protected override IControl GenerateElement(DataGridCell cell, object dataItem)
{ {
if(CellTemplate != null) if(CellTemplate != null)
@ -78,6 +78,10 @@ namespace Avalonia.Controls
{ {
return CellEditingTemplate.Build(dataItem); return CellEditingTemplate.Build(dataItem);
} }
else if (CellTemplate != null)
{
return CellTemplate.Build(dataItem);
}
if (Design.IsDesignMode) if (Design.IsDesignMode)
{ {
return null; return null;
@ -103,5 +107,22 @@ namespace Avalonia.Controls
base.RefreshCellContent(element, propertyName); base.RefreshCellContent(element, propertyName);
} }
public override bool IsReadOnly
{
get
{
if (CellEditingTemplate is null)
{
return true;
}
return base.IsReadOnly;
}
set
{
base.IsReadOnly = value;
}
}
} }
} }

Loading…
Cancel
Save