WPF中MeasureOverride ArrangeOverride 的理解
阿新 • • 發佈:2018-12-12
1. Measure Arrange這兩個方法是UIElement的方法
MeasureOverride ArrangeOverride這兩個方法是FrameworkElement的方法,FrameworkElement是UIElement的子類
MeasureOverride傳入父容器分配的可用空間,返回該容器根據其子元素大小計算確定的在佈局過程中所需的大小。
ArrangeOverride傳入父容易最終分配的控制元件大小,返回使用的實際大小
2. MeasureOverride 用於計算本身及其子控制元件的大小
ArrangeOverride用於佈局本身及其子控制元件的位置和大小
3. WPF佈局系統大概分為兩步:Measure和Arrange
Measure方法自頂而下,遞迴呼叫各子控制元件的Measure方法,Measure方法會把該控制元件所需的大小控制元件存在desired size屬性中,控制元件根據各子控制元件的desired size 屬性確定自身空間大小,並返回自己的desired size
Arrange方法發生在Measure中,傳入Measure方法計算到的大小,利用控制元件的位置設定分配子控制元件的位置
簡單來說,這兩個方法一個管大小,一個管佈局,都需要呼叫子類的Measure和Measure
codeproject的這篇文章講的很條理https://www.codeproject.com/Articles/1034445/Understanding-MeasureOverride-and-ArrangeOverride