WPF 內容模型
Windows Presentation Foundation (WPF) 是一種簡報平臺,提供許多控制項和類似控制項的類型,其主要目的是顯示不同類型的內容。 為了判斷要使用哪一種控制項或從哪一種控制項衍生,您應該了解特定控制項顯示哪些物件的效果最佳。
本主題摘要說明 WPF 控制項和類似控制項類型的 con帳篷模式l。 內容模型描述控制項中可使用的內容。 本主題同時列出每一個內容模型的內容屬性。 內容屬性是一種用於儲存物件內容的屬性。
包含任意內容的類別
某些控制項可以包含任何類型的物件,例如字串、 DateTime 物件,或 UIElement 為其他專案的容器。 例如, Button 可以包含影像和某些文字,或 CheckBox 可以包含 的值 DateTime.Now 。
WPF 有四個類別可以包含任意內容。 下表列出繼承自 Control 的類別。
包含任意內容的類別 | Content |
---|---|
ContentControl | 單一任意物件。 |
HeaderedContentControl | 標頭和單一項目,兩者都是任意物件。 |
ItemsControl | 任意物件的集合。 |
HeaderedItemsControl | 標頭和項目集合,這些全部都是任意物件。 |
繼承自這些類別的控制項可以包含相同類型的內容,並且以相同方式處理內容。 下圖顯示每個 con帳篷模式l 包含影像和一些文字的控制項:
包含單一任意物件的控制項
類別 ContentControl 包含單一任意內容片段。 其內容屬性為 Content 。 下列控制項繼承自 ContentControl ,並使用其 con帳篷模式l:
下圖顯示四個按鈕,其 Content 設定為字串、物件、 Rectangle 、 和 Panel ,其中包含 Ellipse 和 TextBlock : DateTime
如需如何設定 Content 屬性的範例,請參閱 ContentControl 。
包含標頭和單一任意物件的控制項
類別 HeaderedContentControl 繼承自 ContentControl ,並以 標頭顯示內容。 它會從 繼承 content 屬性 , ContentContentControl 並定義 Header 型 Object 別的屬性;因此,這兩者都可以是任意物件。
下列控制項繼承自 HeaderedContentControl ,並使用其 con帳篷模式l:
下圖顯示兩個 TabItem 物件。 第一個 TabItem 具有 UIElement 物件做為 和 。 ContentHeader Header設定為 StackPanel ,其中包含 Ellipse 和 TextBlock 。 Content設定為 StackPanel ,其中包含 TextBlock 和 Label 。 第二 TabItem 個在 中 Header 具有 字串,並在 TextBlock 中 Content 具有 。
如需如何建立 TabItem 物件的範例,請參閱 HeaderedContentControl 。
包含任意物件集合的控制項
類別 ItemsControl 繼承自 Control ,而且可以包含多個專案,例如字串、物件或其他專案。 其內容屬性為 ItemsSource 和 Items 。 ItemsSource 通常用來以資料收集填入 ItemsControl 。 如果您不想使用集合填入 ItemsControl ,您可以使用 屬性來新增專案 Items 。
下列控制項繼承自 ItemsControl ,並使用其 con帳篷模式l:
下圖顯示 ListBox 包含這些類型的專案:
包含標頭和任意物件集合的控制項
類別 HeaderedItemsControl 繼承自 ItemsControl ,而且可以包含多個專案,例如字串、物件或其他專案,以及標頭。 它會繼承 ItemsControl 內容屬性 ItemsSource 、 和 Items ,並定義 Header 可以是任意物件的 屬性。
下列控制項繼承自 HeaderedItemsControl ,並使用其 con帳篷模式l:
包含 UIElement 物件集合的類別
類別 Panel 會放置及排列子 UIElement 物件。 其內容屬性為 Children 。
下列類別繼承自 類別, Panel 並使用其 con帳篷模式l:
如需詳細資訊,請參閱面板概觀。
影響 UIElement 外觀的類別
類別 Decorator 會將視覺效果套用至單一子系 UIElement 或周圍。 其內容屬性為 Child 。 下列類別繼承自 Decorator ,並使用其 con帳篷模式l:
下圖顯示 TextBox 周圍有 (裝飾) 的 Border 。
具有框線的 TextBlock
提供 UIElement 相關視覺化回應的類別
類別 Adorner 會向使用者提供視覺提示。 例如,使用 Adorner 將功能控制碼新增至元素,或提供控制項的狀態資訊。 類別 Adorner 提供架構,讓您可以建立自己的裝飾項。 WPF 不提供任何實作的裝飾項。 如需詳細資訊,請參閱裝飾項概觀。
可讓使用者輸入文字的類別
WPF 提供三種可讓使用者輸入文字的主要控制項。 每一個控制項都會以不同方式顯示文字。 下表列出這三個文字相關控制項、它們顯示文字時的功能,以及其包含控制項文字的屬性。
控制 | 文字顯示為 | 內容屬性 |
---|---|---|
TextBox | 純文字 | Text |
RichTextBox | 格式化文字 | Document |
PasswordBox | 隱藏文字 (字元會加上遮罩) | Password |
顯示文字的類別
有數種類別可用來顯示純文字或格式化文字。 您可以使用 TextBlock 來顯示少量的文字。 如果您想要顯示大量的文字,請使用 FlowDocumentReader 、 FlowDocumentPageViewer 或 FlowDocumentScrollViewer 控制項。
TextBlock有兩個內容屬性: Text 和 Inlines 。 當您想要顯示使用一致格式設定的文字時, Text 屬性通常是您的最佳選擇。 如果您打算在整個文字中使用不同的格式設定,請使用 Inlines 屬性。 屬性 Inlines 是 物件的集合 Inline ,指定如何格式化文字。
下表列出 、 FlowDocumentPageViewer 和 FlowDocumentScrollViewer 類別的內容屬性 FlowDocumentReader 。
控制 | 內容屬性 | 內容屬性類型 |
---|---|---|
FlowDocumentPageViewer | Document | IDocumentPaginatorSource |
FlowDocumentReader | Document | FlowDocument |
FlowDocumentScrollViewer | Document | FlowDocument |
會 FlowDocument 實作 IDocumentPaginatorSource 介面;因此,這三個 FlowDocument 類別都可以採用 作為內容。
格式化文字的類別
TextElement 及其相關類別可讓您格式化文字。 TextElement物件包含 及 格式化 和 FlowDocument 物件中的 TextBlock 文字。 兩個主要物件 TextElement 類型是 Block 元素和 Inline 元素。 元素 Block 代表文字區塊,例如段落或清單。 元素 Inline 代表區塊中的文字部分。 許多 Inline 類別會指定套用文字的格式設定。 每個 TextElement 都有自己的缺點帳篷模式l。 如需詳細資訊,請參閱 TextElement 內容模型概觀。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應