共用方式為


排列、邊界、填充

在 XAML 應用程式中,大多數使用者介面(UI)元素繼承自 FrameworkElement 類別。 每個 FrameworkElement 都有尺寸、對齊、邊距和填充屬性,這些都會影響版面的行為。 以下指引概述如何使用這些版面屬性,確保你的應用程式介面在任何情境下都清晰易讀且易於使用。

尺寸(高度、寬度)

適當的尺寸確保所有內容清晰可讀。 使用者不應該需要捲動或縮放才能解讀主要內容。

尺寸圖示

  • 高度寬度則指定 元素的大小。 預設值是數學上的 NaN (Not A Number)。 你可以設定以有效像素計算的固定值,或者使用自動比例大小 來實現流暢的行為。

  • ActualHeightActualWidth 是唯讀屬性,能在執行時提供元素的大小。 如果流動佈局會成長或縮小,則在 SizeChanged 事件中值會改變。 請注意, RenderTransform 不會改變 ActualHeight 和 ActualWidth 的值。

  • 最小寬度/MaxWidthMinHeight/MaxHeight 指定了限制元素大小的值,同時允許流體調整大小。

  • FontSize 及其他文字屬性控制文字元素的版面大小。 雖然文字元素沒有明確宣告的尺寸,但它們會計算出實際寬度(ActualWidth)和實際高度(ActualHeight)。

對齊方式

對齊讓你的 UI 看起來整齊、有條理且平衡,也能用來建立視覺層級與關係。

對齊圖示

  • HorizontalAlignmentVerticalAlignment 指定元素在其父容器中應如何定位。

    • HorizontalAlignment 的值包含 LeftCenterRightStretch
    • VerticalAlignment 的值包含 TopCenterBottomStretch
  • Stretch 是這兩種屬性的預設,元素會填滿它們在父容器中提供的所有空間。 實數高度與寬度會抵銷拉伸值,該值將作為中心值。 有些控制項,比如按鈕,會在它們的預設樣式中覆寫預設的拉伸值。

  • HorizontalContentAlignmentVerticalContentAlignment 指定 子元素在容器中的位置。

  • 對齊方式可能會影響版面配置面板內的裁剪。 例如,使用HorizontalAlignment="Left"時,如果內容大於實際寬度,元素的右側會被裁切。

  • 文字元素使用 TextAlignment 屬性。 一般來說,我們建議使用預設值左對齊。 欲了解更多關於字體樣式的資訊,請參見 字體設計

邊距與填充

邊界和填充屬性能讓 UI 看起來不會太雜亂或太稀疏,也能讓某些輸入(如筆和觸控)更容易使用。 這裡有一張展示容器及其內容的邊界與填充的插圖。

XAML 邊距與填充圖

Margin

邊距 控制元素周圍的空白空間量。 Margin 不會將像素加入 ActualHeight 和 ActualWidth,也不被視為進行命中測試和輸入事件來源的一部分元素。

  • 邊距值可以是統一的,也可以是不同的。 當使用Margin="20"時,元素的上下左右四側會均勻地增加20像素的邊距。 當 Margin="0,10,5,25"時,這些值分別依序套用到左、上、右、下。
  • 邊距是相加的。 若兩個元素都指定均勻的 10 像素距,且在任意方向上相鄰,則它們之間的距離為 20 像素。
  • 允許負邊距。 然而,使用負邊距常會導致內容被截斷或其他元素重疊,因此使用負邊距並不常見。
  • 邊距值是最後才會被限制的,所以要小心處理邊距,因為容器可能會限制或剪除元素。 邊界值可能是元素未呈現的原因;在施加邊際時,元素的維度可以被限制為 0。

填充

填充 控制元素內邊界與子元素之間的空間大小。 正的 Padding 值會減少元素的內容區域。

與 Margin 不同,Padding 並非 FrameworkElement 的屬性。 有數個類別各自定義其自己的 Padding 屬性:

在這些情況下,元素也具有邊際性質。 若同時應用邊際與填充,則為加法:外層容器與內部內容物之間的表觀距離即為邊際加填充。

Example

讓我們來看看 Margin 與 Padding 對實際控制元件的影響。 這裡有一個放在格子裡的文字框,預設邊距和填充值為 0。

TextBox 的邊界和填充均為 0

這是與本 XAML 所示相同的文字框和網格,其中文字框上設有邊距和內距值。

<Grid BorderBrush="Blue" BorderThickness="4" Width="200">
    <TextBox Text="This is text in a TextBox." Margin="20" Padding="16,24"/>
</Grid>

具有正值邊距和填充值的文本框

樣式資源

您不必在控制項上單獨設定每個屬性值。 將屬性值分組到 Style 資源,並將 Style 套用到控制項通常會更有效率。 當您需要將相同的屬性值套用到許多控制項時尤其如此。 想了解更多樣式的使用資訊,請參見 XAML 樣式

一般建議

  • 只對特定關鍵元素套用測量值,其他元素則採用流動佈局行為。 這在視窗寬度改變時提供 響應式介面
  • 如果你使用測量單位, 所有尺寸、邊距和填充都應該以 4 epx 為增量。 當 XAML 利用 有效像素和縮放 技術,讓你的應用程式在所有裝置和螢幕尺寸上都能讀懂時,它會將 UI 元素放大成 4 的倍數。 以 4 為單位使用數值,能透過與整像素對齊,達到最佳渲染效果。
  • 對於小於640像素的窗戶寬度,我們建議使用12個EPX排水溝;對於較大窗戶寬度,我們建議使用24個EPX排水溝。

推薦排水溝