WPF 內容模型

Windows Presentation Foundation (WPF) 是一種簡報平臺,提供許多控制項和類似控制項的類型,其主要目的是顯示不同類型的內容。 為了判斷要使用哪一種控制項或從哪一種控制項衍生,您應該了解特定控制項顯示哪些物件的效果最佳。

本主題摘要說明 WPF 控制項和類似控制項類型的 con帳篷模式l。 內容模型描述控制項中可使用的內容。 本主題同時列出每一個內容模型的內容屬性。 內容屬性是一種用於儲存物件內容的屬性。

包含任意內容的類別

某些控制項可以包含任何類型的物件,例如字串、 DateTime 物件,或 UIElement 為其他專案的容器。 例如, Button 可以包含影像和某些文字,或 CheckBox 可以包含 的值 DateTime.Now

WPF 有四個類別可以包含任意內容。 下表列出繼承自 Control 的類別。

包含任意內容的類別 Content
ContentControl 單一任意物件。
HeaderedContentControl 標頭和單一項目,兩者都是任意物件。
ItemsControl 任意物件的集合。
HeaderedItemsControl 標頭和項目集合,這些全部都是任意物件。

繼承自這些類別的控制項可以包含相同類型的內容,並且以相同方式處理內容。 下圖顯示每個 con帳篷模式l 包含影像和一些文字的控制項:

Screenshot that shows four different controls, one from each content model.

包含單一任意物件的控制項

類別 ContentControl 包含單一任意內容片段。 其內容屬性為 Content 。 下列控制項繼承自 ContentControl ,並使用其 con帳篷模式l:

下圖顯示四個按鈕,其 Content 設定為字串、物件、 Rectangle 、 和 Panel ,其中包含 EllipseTextBlockDateTime

Screenshot that shows four buttons with different content types.

如需如何設定 Content 屬性的範例,請參閱 ContentControl

包含標頭和單一任意物件的控制項

類別 HeaderedContentControl 繼承自 ContentControl ,並以 標頭顯示內容。 它會從 繼承 content 屬性 , ContentContentControl 並定義 HeaderObject 別的屬性;因此,這兩者都可以是任意物件。

下列控制項繼承自 HeaderedContentControl ,並使用其 con帳篷模式l:

下圖顯示兩個 TabItem 物件。 第一個 TabItem 具有 UIElement 物件做為 和 。 ContentHeader Header設定為 StackPanel ,其中包含 EllipseTextBlockContent設定為 StackPanel ,其中包含 TextBlockLabel 。 第二 TabItem 個在 中 Header 具有 字串,並在 TextBlockContent 具有 。

TabControl that uses different types in the Header property.

如需如何建立 TabItem 物件的範例,請參閱 HeaderedContentControl

包含任意物件集合的控制項

類別 ItemsControl 繼承自 Control ,而且可以包含多個專案,例如字串、物件或其他專案。 其內容屬性為 ItemsSourceItemsItemsSource 通常用來以資料收集填入 ItemsControl 。 如果您不想使用集合填入 ItemsControl ,您可以使用 屬性來新增專案 Items

下列控制項繼承自 ItemsControl ,並使用其 con帳篷模式l:

下圖顯示 ListBox 包含這些類型的專案:

Screenshot that shows a ListBox with four types of content.

包含標頭和任意物件集合的控制項

類別 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

TextBox with black border
具有框線的 TextBlock

提供 UIElement 相關視覺化回應的類別

類別 Adorner 會向使用者提供視覺提示。 例如,使用 Adorner 將功能控制碼新增至元素,或提供控制項的狀態資訊。 類別 Adorner 提供架構,讓您可以建立自己的裝飾項。 WPF 不提供任何實作的裝飾項。 如需詳細資訊,請參閱裝飾項概觀

可讓使用者輸入文字的類別

WPF 提供三種可讓使用者輸入文字的主要控制項。 每一個控制項都會以不同方式顯示文字。 下表列出這三個文字相關控制項、它們顯示文字時的功能,以及其包含控制項文字的屬性。

控制 文字顯示為 內容屬性
TextBox 純文字 Text
RichTextBox 格式化文字 Document
PasswordBox 隱藏文字 (字元會加上遮罩) Password

顯示文字的類別

有數種類別可用來顯示純文字或格式化文字。 您可以使用 TextBlock 來顯示少量的文字。 如果您想要顯示大量的文字,請使用 FlowDocumentReaderFlowDocumentPageViewerFlowDocumentScrollViewer 控制項。

TextBlock有兩個內容屬性: TextInlines 。 當您想要顯示使用一致格式設定的文字時, Text 屬性通常是您的最佳選擇。 如果您打算在整個文字中使用不同的格式設定,請使用 Inlines 屬性。 屬性 Inlines 是 物件的集合 Inline ,指定如何格式化文字。

下表列出 、 FlowDocumentPageViewerFlowDocumentScrollViewer 類別的內容屬性 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 內容模型概觀

另請參閱