소스 검색

Make ValueCache as abstract props.
Add setters to Row/ColumnDefinitions.

Jumar Macato 6 년 전
부모
커밋
534e3bf4ec
4개의 변경된 파일22개의 추가작업 그리고 31개의 파일을 삭제
  1. 4 0
      src/Avalonia.Controls/ColumnDefinition.cs
  2. 4 31
      src/Avalonia.Controls/DefinitionBase.cs
  3. 10 0
      src/Avalonia.Controls/Grid.cs
  4. 4 0
      src/Avalonia.Controls/RowDefinition.cs

+ 4 - 0
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;
     }
 }

+ 4 - 31
src/Avalonia.Controls/DefinitionBase.cs

@@ -410,45 +410,18 @@ namespace Avalonia.Controls
         /// <summary>
         /// Internal helper to access up-to-date UserSize property value.
         /// </summary>
-        internal GridLength UserSizeValueCache
-        {
-            get
-            { 
-                return (GridLength) GetValue(
-                        _isColumnDefinition ?
-                        ColumnDefinition.WidthProperty :
-                        RowDefinition.HeightProperty);
-            }
-        }
+        internal abstract GridLength UserSizeValueCache { get; }
 
         /// <summary>
         /// Internal helper to access up-to-date UserMinSize property value.
         /// </summary>
-        internal double UserMinSizeValueCache
-        {
-            get
-            {
-                return (double) GetValue(
-                        _isColumnDefinition ? 
-                        ColumnDefinition.MinWidthProperty : 
-                        RowDefinition.MinHeightProperty);
-            }
-        }
+        internal abstract double UserMinSizeValueCache { get; }
 
         /// <summary>
         /// Internal helper to access up-to-date UserMaxSize property value.
         /// </summary>
-        internal double UserMaxSizeValueCache
-        {
-            get
-            {
-                return (double) GetValue(
-                        _isColumnDefinition ?
-                        ColumnDefinition.MaxWidthProperty :
-                        RowDefinition.MaxHeightProperty);
-            }
-        }
-
+        internal abstract double UserMaxSizeValueCache { get; }
+        
         /// <summary>
         /// Protected. Returns <c>true</c> if this DefinitionBase instance is in parent's logical tree.
         /// </summary>

+ 10 - 0
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;
+            }
         }
 
         /// <summary>
@@ -230,6 +235,11 @@ namespace Avalonia.Controls
 
                 return (_data.RowDefinitions);
             }
+            set
+            {
+                if (_data == null) { _data = new ExtendedData(); }
+                _data.RowDefinitions = value;
+            }
         }
 
         //------------------------------------------------------

+ 4 - 0
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;
     }
 }