diff --git a/src/Avalonia.Controls/ColumnDefinition.cs b/src/Avalonia.Controls/ColumnDefinition.cs index d316881a05..d87a683cc8 100644 --- a/src/Avalonia.Controls/ColumnDefinition.cs +++ b/src/Avalonia.Controls/ColumnDefinition.cs @@ -87,5 +87,9 @@ namespace Avalonia.Controls get { return GetValue(WidthProperty); } set { SetValue(WidthProperty, value); } } + + internal override GridLength UserSizeValueCache => this.Width; + internal override double UserMinSizeValueCache => this.MinWidth; + internal override double UserMaxSizeValueCache => this.MaxWidth; } } diff --git a/src/Avalonia.Controls/DefinitionBase.cs b/src/Avalonia.Controls/DefinitionBase.cs index dcb375745d..2e0afc7fe7 100644 --- a/src/Avalonia.Controls/DefinitionBase.cs +++ b/src/Avalonia.Controls/DefinitionBase.cs @@ -410,45 +410,18 @@ namespace Avalonia.Controls /// /// Internal helper to access up-to-date UserSize property value. /// - internal GridLength UserSizeValueCache - { - get - { - return (GridLength) GetValue( - _isColumnDefinition ? - ColumnDefinition.WidthProperty : - RowDefinition.HeightProperty); - } - } + internal abstract GridLength UserSizeValueCache { get; } /// /// Internal helper to access up-to-date UserMinSize property value. /// - internal double UserMinSizeValueCache - { - get - { - return (double) GetValue( - _isColumnDefinition ? - ColumnDefinition.MinWidthProperty : - RowDefinition.MinHeightProperty); - } - } + internal abstract double UserMinSizeValueCache { get; } /// /// Internal helper to access up-to-date UserMaxSize property value. /// - internal double UserMaxSizeValueCache - { - get - { - return (double) GetValue( - _isColumnDefinition ? - ColumnDefinition.MaxWidthProperty : - RowDefinition.MaxHeightProperty); - } - } - + internal abstract double UserMaxSizeValueCache { get; } + /// /// Protected. Returns true if this DefinitionBase instance is in parent's logical tree. /// diff --git a/src/Avalonia.Controls/Grid.cs b/src/Avalonia.Controls/Grid.cs index 9fb5098030..eaa7cc11c3 100644 --- a/src/Avalonia.Controls/Grid.cs +++ b/src/Avalonia.Controls/Grid.cs @@ -216,6 +216,11 @@ namespace Avalonia.Controls return (_data.ColumnDefinitions); } + set + { + if (_data == null) { _data = new ExtendedData(); } + _data.ColumnDefinitions = value; + } } /// @@ -230,6 +235,11 @@ namespace Avalonia.Controls return (_data.RowDefinitions); } + set + { + if (_data == null) { _data = new ExtendedData(); } + _data.RowDefinitions = value; + } } //------------------------------------------------------ diff --git a/src/Avalonia.Controls/RowDefinition.cs b/src/Avalonia.Controls/RowDefinition.cs index 8e6ab3ae36..f2f09f797c 100644 --- a/src/Avalonia.Controls/RowDefinition.cs +++ b/src/Avalonia.Controls/RowDefinition.cs @@ -87,5 +87,9 @@ namespace Avalonia.Controls get { return GetValue(HeightProperty); } set { SetValue(HeightProperty, value); } } + + internal override GridLength UserSizeValueCache => this.Height; + internal override double UserMinSizeValueCache => this.MinHeight; + internal override double UserMaxSizeValueCache => this.MaxHeight; } } \ No newline at end of file