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

WPF 筆記:文字佈局控件全解析 (TextBlock/TextFlow/Inline 元素)

     編輯:關於.NET

WPF 提供豐富的文字佈局控件,從輕量的 TextBlock 到排版級的 TextFlow (即 FlowDocument),滿足從簡單標籤到複雜文檔的多樣需求。

1. TextBlock:最基礎輕量文字控件

核心屬性

  • 5 種 Font 屬性:FontFamily, FontSize, FontWeight, FontStyle, FontStretch。
  • TextWrapping:Wrap (換行) / NoWrap (不換行,預設) — *原書標註有誤,此處更正*。
  • TextAlignment:Left/Right/Center/Justify (兩端對齊)。

內容模型:不只是文字

TextBlock 內可直接放置**任意 UIElement** (非僅 Inline),會按行內流佈局:

<TextBlock TextWrapping="Wrap">
  <Button>Split</Button>
  <CheckBox>across</CheckBox>
  <TextBox>multiple</TextBox>
  lines
</TextBlock>

Inline 元素豐富行內樣式

<TextBlock FontSize="18">
  <Run>This </Run>
  <Italic>is</Italic> 
  <Bold>rather</Bold>
  <Underline>messy</Underline>. 
  <Hyperlink NavigateUri="https://example.com">www.example.com</Hyperlink>
</TextBlock>

支援:Run, Bold, Italic, Underline, Hyperlink, Span 等。
AccessText (存取鍵提示) 效果不如預期;Subscript/Superscript 已廢棄。

2. Whitespace 處理:xml:space="preserve"

預設 TextBlock 忽略 XAML 中的換行/縮進 (視為單一空白)。保留原始格式需設定:

<TextBlock FontSize="18" xml:space="preserve">
  This is
  multi-line
  text.
</TextBlock>

也可局部套用:<Bold xml:space="preserve">...</Bold>。
建議:僅在直接複製大段文本時使用,正常開發用 <LineBreak/> 或 <Paragraph> 控制換行。

3. FlowDocument (原 TextFlow):排版級文檔容器

功能遠超 TextBlock,提供 5 種區塊容器:

容器用途對應 HTML
Paragraph段落<p>
List清單 (項目符號/編號)<ul>/<ol>
Table表格<table>
Floater浮動元素 (圖文環繞)CSS float
Figure獨立圖文塊 (可定位)<figure>

效能權衡

微軟白皮書明確指出:**TextBlock 效能遠高於 FlowDocument**。除非需要複雜排版 (分頁、欄位、註腳、浮動),**優先使用 TextBlock**。
FlowDocument 適用場景:報表列印、電子書閱讀器、豐富文檔編輯器。

選擇指南

需求推薦控件理由
單行/多行標籤、按鈕文字、簡單提示TextBlock輕量、高效、支援 Inline 混排
可編輯文字TextBox / RichTextBox輸入支援
複雜文檔 (分頁、目錄、浮動圖表)FlowDocument + FlowDocumentReader排版引擎完整
固定版面列印 (發票、報表)FixedDocument精確像素控制

理解文字控件層級與效能特性,能在「輕量顯示」與「豐富排版」間做出正確架構決策。

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