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