首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 筆記:StackPanel 堆疊佈局與 Alignment 控制

     編輯:關於.NET

StackPanel 適合**小規模線性排列** (如表單欄位、工具列、對話框按鈕區)。子元素按單一方向緊湊堆疊,無間隙、無對齊邏輯,需配合 Margin 與 Alignment 微調。

核心屬性

  • Orientation:Vertical (預設,上→下) / Horizontal (左→右)。
  • Margin:元素外邊距。
    - Vertical 時:上下 Margin 疊加 (非合併),左右 Margin 置中/靠邊。
    - Horizontal 時:左右 Margin 疊加,上下 Margin 置中/靠邊。
    - Margin="3,3" 簡寫 = 左右 3、上下 3。

Alignment 屬性:控制元素在堆疊方向垂直軸的佈局

屬性適用方向值行為
HorizontalAlignmentVertical StackPanelStretch (預設, 滿寬), Left, Center, Right決定元素在橫向剩餘空間中的位置
VerticalAlignmentHorizontal StackPanelStretch (預設, 滿高), Top, Center, Bottom決定元素在縱向剩餘空間中的位置

代碼示例

<StackPanel Orientation="Vertical">
  <TextBox Margin="5" HorizontalAlignment="Stretch" /> <!-- 滿寬 -->
  <Button Margin="5" HorizontalAlignment="Center" Content="OK" /> <!-- 置中 -->
  <Button Margin="5" HorizontalAlignment="Right" Content="Cancel" /> <!-- 右對齊 -->
</StackPanel>

關鍵行為

  • Stretch (預設):元素強制填滿堆疊方向垂直軸的可用空間 (寬度或高度)。
  • Left/Center/Right:元素**僅佔用自身 DesiredWidth**,定位於可用空間的左/中/右。**不會拉伸**。
  • 無自動換行/換行:空間不足時內容裁剪或超出邊界 (視父容器 ClipToBounds)。
  • 無間距屬性:需每個子元素單獨設定 Margin,或用 ItemContainerStyle 統一 (ItemsControl 场景)。

適用場景

  • ✅ 表單欄位垂直堆疊
  • ✅ 對話框底部按鈕水平堆疊 (Right 對齊)
  • ✅ 導航麵包屑、標籤雲 (Horizontal + WrapPanel 更佳)
  • ✅ 簡單清單 (VirtualizingStackPanel 大數據)
  • ❌ 複雜表格對齊 (用 Grid)
  • ❌ 自適應換行流式佈局 (用 WrapPanel/FlowDocument)

進階:VirtualizingStackPanel

ListBox/ListView/DataGrid 預設使用 VirtualizingStackPanel,**僅實例化可視區項目**,大數據效能極佳。
關鍵屬性:VirtualizingPanel.IsVirtualizing="True", VirtualizingPanel.VirtualizationMode="Recycling" (重用容器)。

StackPanel 簡單直接,善用 Margin + Alignment 即可覆蓋 80% 線性佈局需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved