浏览代码

Use OnMeasureInvalidated instead of virtual InvalidateMeasure

Nikita Tsukanov 8 年之前
父节点
当前提交
35f353c2db
共有 2 个文件被更改,包括 11 次插入3 次删除
  1. 10 1
      src/Avalonia.Layout/Layoutable.cs
  2. 1 2
      src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs

+ 10 - 1
src/Avalonia.Layout/Layoutable.cs

@@ -367,10 +367,18 @@ namespace Avalonia.Layout
             }
         }
 
+
+        /// <summary>
+        /// Called by InvalidateMeasure
+        /// </summary>
+        protected virtual void OnMeasureInvalidated()
+        {
+        }
+
         /// <summary>
         /// Invalidates the measurement of the control and queues a new layout pass.
         /// </summary>
-        public virtual void InvalidateMeasure()
+        public void InvalidateMeasure()
         {
             if (IsMeasureValid)
             {
@@ -384,6 +392,7 @@ namespace Avalonia.Layout
                     LayoutManager.Instance?.InvalidateMeasure(this);
                     InvalidateVisual();
                 }
+                OnMeasureInvalidated();
             }
         }
 

+ 1 - 2
src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs

@@ -40,10 +40,9 @@ namespace Avalonia.Win32.Interop.Wpf
                 EnforceClientSize = false;
             }
 
-            public override void InvalidateMeasure()
+            protected override void OnMeasureInvalidated()
             {
                 ((FrameworkElement)PlatformImpl)?.InvalidateMeasure();
-                base.InvalidateMeasure();
             }
 
             protected override void HandleResized(Size clientSize)