WPF 佈局屬性雖繁多,掌握核心區別即可靈活驅動介面。本文聚焦 Margin/Padding 差異、LayoutTransform/RenderTransform 區別 及新版語法遷移。
| 屬性 | 作用對象 | 視覺效果 | 佈局影響 |
|---|---|---|---|
| Margin | 元素外部 | 元素與兄弟/父邊界的間距 | 參與佈局計算,佔用父容器空間 |
| Padding | 元素內部 | 內容與元素邊框的間距 | 僅影響內容呈現,不改變元素在父容器中的佈局槽位 |
可同時使用:<Button Margin="10" Padding="5"> 外邊距 10,內邊距 5。
舊版簡寫已廢棄:
<!-- 舊版 無效 -->
<Button RenderTransform="scale 3" />
<Line LayoutTransform="rotate 50" />
新版標準元素語法:
<!-- 縮放 -->
<Button>
<Button.LayoutTransform>
<ScaleTransform ScaleX="3" ScaleY="3" />
</Button.LayoutTransform>
</Button>
<!-- 旋轉 -->
<Line Stroke="Blue" Y1="30" X2="100">
<Line.LayoutTransform>
<RotateTransform Angle="50" />
</Line.LayoutTransform>
</Line>
| 特性 | LayoutTransform | RenderTransform |
|---|---|---|
| 執行時機 | 佈局階段 (Measure/Arrange) | 渲染階段 (繪製像素前) |
| 影響佈局 | 是:父容器會根據變換後尺寸重新排列 | 否:佈局槽位不變,超出部分被裁剪 |
| 自適應 | 支援:縮放後父容器自動調整 | 不支援:固定槽位內繪製 |
| 效能 | 稍高 (觸發佈局重算) | 極低 (僅像素級矩陣變換) |
| 典型用途 | 縮放整個控制項、旋轉文字佈局 | 動畫、翻轉、傾斜特效、縮略圖 |
ClipToBounds=False),父容器佈局完全不知情。LayoutTransform。RenderTransform (配合 RenderTransformOrigin="0.5,0.5" 設定中心點)。ScaleTransform、RotateTransform、TranslateTransform、SkewTransform 可組合 (TransformGroup)。LayoutTransform 支援所有 Transform 類型,早期版本僅支援 Scale/Rotate/Skew。正確選擇 Transform 類型,能避免「為什麼縮放後按鈕重疊了」或「動畫播放時佈局跳動」等常見坑。