WPF のコンテンツ モデルWPF Content Model

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) は、多くのコントロールやコントロールのような型を提供する表示プラットフォームで、その主な目的は、異なる種類のコンテンツを表示することです。is a presentation platform that provides many controls and control-like types whose primary purpose is to display different types of content. 使用するコントロールまたは派生元のコントロールを判断するには、特定のコントロールが最適に表示できるオブジェクトの種類を理解する必要があります。To determine which control to use or which control to derive from, you should understand the kinds of objects a particular control can best display.

このトピックは、WPFWPF コントロールとコントロールのような型に関するコンテンツ モデルのまとめです。This topic summarizes the content model for WPFWPF control and control-like types. コンテンツ モデルは、どのようなコンテンツをコントロールで使用できるかについて説明します。The content model describes what content can be used in a control. このトピックは、各コンテンツ モデルのコンテンツのプロパティもリストします。This topic also lists the content properties for each content model. コンテンツのプロパティは、オブジェクトのコンテンツの格納に使用されるプロパティです。A content property is a property that is used to store the content of the object.

任意のコンテンツを含むクラスClasses That Contain Arbitrary Content

一部のコントロールには、文字列、DateTimeオブジェクト、追加UIElement項目のコンテナーであるなど、任意の型のオブジェクトを含めることができます。Some controls can contain an object of any type, such as a string, a DateTime object, or a UIElement that is a container for additional items. たとえば、 aButtonにはイメージとテキストを含めることができます。または、CheckBoxの値を含DateTime.Nowめることができます。For example, a Button can contain an image and some text; or a CheckBox can contain the value of DateTime.Now.

WPFWPF には、任意のコンテンツを含めることができる 4 つのクラスがあります。has four classes that can contain arbitrary content. 次の表は、からControl継承するクラスの一覧です。The following table lists the classes, which inherit from Control.

任意のコンテンツを含むクラスClass that contains arbitrary content コンテンツContent
ContentControl 1 つの任意のオブジェクト。A single arbitrary object.
HeaderedContentControl ヘッダーと 1 つの項目。両方とも任意のオブジェクトです。A header and a single item, both of which are arbitrary objects.
ItemsControl 任意のオブジェクトのコレクション。A collection of arbitrary objects.
HeaderedItemsControl ヘッダーと項目のコレクション。すべて任意のオブジェクトです。A header and a collection of items, all of which are arbitrary objects.

これらのクラスから継承するコントロールは、同じ種類のコンテンツを格納でき、同じ方法でコンテンツを処理することができます。Controls that inherit from these classes can contain the same type of content and treat the content in the same way. 次の図は、イメージとテキストを含む各コンテンツ モデルのコントロールを示しています。The following illustration shows one control from each content model that contains an image and some text:

各コンテンツ モデルから 1 つずつ、4 つの異なるコントロールを示すスクリーンショット。

任意の 1 つのオブジェクトを格納しているコントロールControls That Contain a Single Arbitrary Object

このContentControlクラスには、任意のコンテンツが 1 つ含まれています。The ContentControl class contains a single piece of arbitrary content. そのコンテンツ プロパティContentは です。Its content property is Content. 次のコントロールは、ContentControlそのコンテンツ モデルから継承して使用します。The following controls inherit from ContentControl and use its content model:

次のContent図は、文字列、DateTimeオブジェクト、および を含むRectangleの 4 つのPanelボタン、EllipseおよびTextBlockを含む を示しています。The following illustration shows four buttons whose Content is set to a string, a DateTime object, a Rectangle, and a Panel that contains an Ellipse and a TextBlock:

コンテンツ タイプが異なる 4 つのボタンを示すスクリーンショット。

Contentプロパティの設定方法の例については、「」を参照ContentControlしてください。For an example of how to set the Content property, see ContentControl.

ヘッダーと任意の 1 つのオブジェクトを格納しているコントロールControls That Contain a Header and a Single Arbitrary Object

このHeaderedContentControlクラスは、ヘッダーContentControlを持つコンテンツを継承し、表示します。The HeaderedContentControl class inherits from ContentControl and displays content with a header. content プロパティContentを継承ContentControlし、型HeaderObjectのプロパティを定義します。したがって、両方とも任意のオブジェクトにすることができます。It inherits the content property, Content, from ContentControl and defines the Header property that is of type Object; therefore, both can be an arbitrary object.

次のコントロールは、HeaderedContentControlそのコンテンツ モデルから継承して使用します。The following controls inherit from HeaderedContentControl and use its content model:

次の図は、2 つのオブジェクトをTabItem示しています。The following illustration shows two TabItem objects. 最初TabItemのオブジェクトUIElementは、HeaderおよびContentとして.The first TabItem has UIElement objects as the Header and the Content. HeaderStackPanelEllipseと を含む にTextBlock設定されます。The Header is set to a StackPanel that contains an Ellipse and a TextBlock. ContentStackPanelTextBlockと を含む にLabel設定されます。The Content is set to a StackPanel that contains a TextBlock and a Label. 2TabItemつ目の場合はHeaderTextBlockに文字列Contentが含まれ、 に a が含まれます。The second TabItem has a string in the Header and a TextBlock in the Content.

プロパティ内の異なる型を使用するタブ コントロール。

オブジェクトの作成TabItem方法の例については、を参照HeaderedContentControlしてください。For an example of how to create TabItem objects, see HeaderedContentControl.

任意のオブジェクトのコレクションを格納しているコントロールControls That Contain a Collection of Arbitrary Objects

このItemsControlクラスは、文字列Control、オブジェクト、その他の要素など、複数の項目を継承し、含めることができます。The ItemsControl class inherits from Control and can contain multiple items, such as strings, objects, or other elements. そのコンテンツ プロパティItemsSourceItems、 および です。Its content properties are ItemsSource and Items. ItemsSourceは通常、データ コレクションItemsControlを設定するために使用されます。ItemsSource is typically used to populate the ItemsControl with a data collection. コレクションを使用して を設定しない場合はItemsControl、 プロパティを使用して項目をItems追加できます。If you do not want to use a collection to populate the ItemsControl, you can add items by using the Items property.

次のコントロールは、ItemsControlそのコンテンツ モデルから継承して使用します。The following controls inherit from ItemsControl and use its content model:

次の図は、ListBox次の種類のアイテムを含むを示しています。The following illustration shows a ListBox that contains these types of items:

4 種類のコンテンツを含む ListBox を示すスクリーンショット。

ヘッダーと任意のオブジェクトのコレクションを含むコントロールControls That Contain a Header and a Collection of Arbitrary Objects

このHeaderedItemsControlクラスは、文字列ItemsControl、オブジェクト、その他の要素、ヘッダーなど、複数の項目を継承し、含めることができます。The HeaderedItemsControl class inherits from ItemsControl and can contain multiple items, such as strings, objects, or other elements, and a header. このクラスは、ItemsControlコンテンツ プロパティItemsSourceItems、および をHeader継承し、任意のオブジェクトにできるプロパティを定義します。It inherits the ItemsControl content properties, ItemsSource, and Items, and it defines the Header property that can be an arbitrary object.

次のコントロールは、HeaderedItemsControlそのコンテンツ モデルから継承して使用します。The following controls inherit from HeaderedItemsControl and use its content model:

UIElement オブジェクトのコレクションを含むクラスClasses That Contain a Collection of UIElement Objects

クラスPanelは子UIElementオブジェクトを配置し、配置します。The Panel class positions and arranges child UIElement objects. そのコンテンツ プロパティChildrenは です。Its content property is Children.

次のクラスはPanelクラスから継承され、そのコンテンツ モデルを使用します。The following classes inherit from the Panel class and use its content model:

詳細については、「Panels Overview」を参照してください。For more information, see Panels Overview.

UIElement の外観に影響を与えるクラスClasses That Affect the Appearance of a UIElement

このDecoratorクラスは、視覚効果を 1 つの子UIElementに適用するか、または 1 つの子の周囲に適用します。The Decorator class applies visual effects onto or around a single child UIElement. そのコンテンツ プロパティChildは です。Its content property is Child. 次のクラスは、Decoratorそのコンテンツ モデルから継承し、使用します。The following classes inherit from Decorator and use its content model:

次の図はTextBox、周囲に a が付いているBorder(装飾されている) を示しています。The following illustration shows a TextBox that has (is decorated with) a Border around it.

境界線が黒の TextBoxTextBox with black border
境界がある TextBlockTextBlock that has a Border

UIElement についての視覚的なフィードバックを提供するクラスClasses That Provide Visual Feedback About a UIElement

クラスAdornerは、ユーザーに視覚的な手掛かりを提供します。The Adorner class provides visual cues to a user. たとえば、 をAdorner使用して、要素に機能ハンドルを追加したり、コントロールに関する状態情報を提供したりできます。For example, use an Adorner to add functional handles to elements or provide state information about a control. クラスAdornerは、独自の装飾を作成できるようにフレームワークを提供します。The Adorner class provides a framework so that you can create your own adorners. WPFWPF は実装された装飾は提供しません。does not provide any implemented adorners. 詳しくは、Adorners Overviewをご覧ください。For more information, see Adorners Overview.

ユーザーがテキストを入力できるようにするクラスClasses That Enable Users to Enter Text

WPF は、ユーザーがテキストを入力できるようにする 3 つの主なコントロールを提供します。WPF provides three primary controls that enable users to enter text. 各コントロールは、異なる方法で、テキストを表示します。Each control displays the text differently. 次の表は、これら 3 つのテキスト関連のコントロール、テキストを表示するときのそれぞれの機能、およびコントロールのテキストを格納するそれぞれのプロパティの一覧です。The following table lists these three text-related controls, their capabilities when they display text, and their properties that contain the control's text.

コントロールControl テキストの表示形態Text is displayed as コンテンツのプロパティContent property
TextBox プレーンテキスト ファイルPlain text Text
RichTextBox 書式付きテキストFormatted text Document
PasswordBox 非表示のテキスト (文字はマスクされます)Hidden text (characters are masked) Password

テキストを表示するクラスClasses That Display Your Text

いくつかのクラスを使用して、プレーン テキストまたは書式設定されたテキストを表示できます。Several classes can be used to display plain or formatted text. を使用TextBlockして、少量のテキストを表示できます。You can use TextBlock to display small amounts of text. 大量のテキストを表示する場合は、 、FlowDocumentReaderFlowDocumentPageViewerまたはFlowDocumentScrollViewerコントロールを使用します。If you want to display large amounts of text, use the FlowDocumentReader, FlowDocumentPageViewer, or FlowDocumentScrollViewer controls.

にはTextBlock、 と のTextInlines2 つのコンテンツ プロパティがあります。The TextBlock has two content properties: Text and Inlines. 一貫性のある書式を使用するテキストを表示する場合Text、多くの場合、プロパティが最適な選択肢になります。When you want to display text that uses consistent formatting, the Text property is often your best choice. テキスト全体で異なる書式を使用する場合は、Inlinesプロパティを使用します。If you plan to use different formatting throughout the text, use the Inlines property. プロパティInlinesは、テキストの書式設定Inline方法を指定するオブジェクトのコレクションです。The Inlines property is a collection of Inline objects, which specify how to format text.

次の表は、 、 FlowDocumentReaderFlowDocumentPageViewerおよびFlowDocumentScrollViewerクラスのコンテンツ プロパティの一覧です。The following table lists the content property for FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer classes.

コントロールControl コンテンツのプロパティContent property コンテンツのプロパティの型Content property type
FlowDocumentPageViewer ドキュメントDocument IDocumentPaginatorSource
FlowDocumentReader ドキュメントDocument FlowDocument
FlowDocumentScrollViewer ドキュメントDocument FlowDocument

FlowDocumentインターフェイスを実装IDocumentPaginatorSourceします。したがって、3 つのクラスはすべてコンテンツFlowDocumentとして受け取ることができます。The FlowDocument implements the IDocumentPaginatorSource interface; therefore, all three classes can take a FlowDocument as content.

テキストを書式設定するクラスClasses That Format Your Text

TextElementまた、関連するクラスを使用してテキストの書式を設定できます。TextElement and its related classes allow you to format text. TextElementオブジェクトには、テキストとオブジェクトTextBlockFlowDocument含まれ、書式設定されます。TextElement objects contain and format text in TextBlock and FlowDocument objects. オブジェクトのTextElement2 つの主要Blockな型Inlineは、要素と要素です。The two primary types of TextElement objects are Block elements and Inline elements. 要素Blockは、段落やリストなどのテキストのブロックを表します。A Block element represents a block of text, such as a paragraph or list. 要素Inlineは、ブロック内のテキストの一部を表します。An Inline element represents a portion of text in a block. Inlineくのクラスでは、適用するテキストの書式を指定します。Many Inline classes specify formatting for the text to which they are applied. それぞれにTextElement独自のコンテンツ モデルがあります。Each TextElement has its own content model. 詳細については、「TextElement Content Model Overview」を参照してください。For more information, see the TextElement Content Model Overview.

関連項目See also