1. 程式人生 > >WPF佈局系統Grid中Margin和對其方式組合效果

WPF佈局系統Grid中Margin和對其方式組合效果

我們都知道,在WPF佈局系統中控制元件分配的空間是一個矩形空間,根據影響佈局的屬性Margin、VerticalAlignment、HorizontalAlignment、Padding等,父級容器會分配給子控制元件一個空間(元素邊界框,可以使用LayoutInformation.GetLayoutSlot(element)獲取),然後將子控制元件填充在其中。今天在專案中碰到一個計算偏移量的問題,一直沒有計算正確,主要是在控制元件居中的時候Margin理解出錯,一開始理解成了先對齊然後設定Margin,實際上應該理解成先設定Magin,然後設定對齊方式。例如Margin為(50,0,0,0)HorizontalAlignment=”Center”,假設父容器寬度為ParentWidth,子元素寬度為ChildWidth。如果理解成先居中在設定Margin,元素左上角點為:50+(ParentWidth-ChildWidth)/2;如果理解成先設定Margin然後對齊,元素左上角點為:50+(ParentWidth-50)/2-ChildWidth/2=50/2+(ParentWidth-ChildWidth)/2;可見實際上相差了Margin.Left一半的數值。