Modelo de contenido de WPFWPF Content Model

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) es una plataforma de presentación que proporciona muchos controles y tipos semejantes a controles cuyo propósito principal es mostrar diferentes tipos de contenido.is a presentation platform that provides many controls and control-like types whose primary purpose is to display different types of content. Para determinar qué control usar o de qué control derivar, debe entender los tipos de objetos que un control determinado puede mostrar mejor.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.

En este tema se resume el modelo de contenido para controles y tipos semejantes a controles en WPFWPF.This topic summarizes the content model for WPFWPF control and control-like types. El modelo de contenido describe el contenido que se puede utilizar en un control.The content model describes what content can be used in a control. En este tema también se incluyen las propiedades de contenido para cada modelo de contenido.This topic also lists the content properties for each content model. Una propiedad de contenido es aquella que se utiliza para almacenar el contenido del objeto.A content property is a property that is used to store the content of the object.

Clases que incluyen contenido arbitrarioClasses That Contain Arbitrary Content

Algunos controles pueden contener un objeto de cualquier tipo, como una cadena, un objeto DateTime o un UIElement que sea un contenedor para elementos adicionales.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. Por ejemplo, un Button puede contener una imagen y texto. o un CheckBox puede contener el valor de DateTime.Now.For example, a Button can contain an image and some text; or a CheckBox can contain the value of DateTime.Now.

WPFWPF tiene cuatro clases que pueden incluir contenido arbitrario.has four classes that can contain arbitrary content. En la tabla siguiente se enumeran las clases, que heredan de Control.The following table lists the classes, which inherit from Control.

Clase que incluye contenido arbitrarioClass that contains arbitrary content ContenidoContent
ContentControl Un único objeto arbitrario.A single arbitrary object.
HeaderedContentControl Un encabezado y un único elemento; ambos son objetos arbitrarios.A header and a single item, both of which are arbitrary objects.
ItemsControl Una colección de objetos arbitrarios.A collection of arbitrary objects.
HeaderedItemsControl Un encabezado y una colección de elementos; todos ellos son objetos arbitrarios.A header and a collection of items, all of which are arbitrary objects.

Los controles que heredan de estas clases pueden incluir el mismo tipo de contenido y tratarlo de la misma manera.Controls that inherit from these classes can contain the same type of content and treat the content in the same way. En la ilustración siguiente se muestra un control de cada modelo de contenido que contiene una imagen y texto:The following illustration shows one control from each content model that contains an image and some text:

Captura de pantalla que muestra cuatro controles distintos, uno de cada modelo de contenido.

Controles que incluyen un único objeto arbitrarioControls That Contain a Single Arbitrary Object

La clase ContentControl contiene una sola parte de contenido arbitrario.The ContentControl class contains a single piece of arbitrary content. Su propiedad de contenido es Content.Its content property is Content. Los siguientes controles heredan de ContentControl y utilizan su modelo de contenido:The following controls inherit from ContentControl and use its content model:

En la siguiente ilustración se muestran cuatro botones cuyo Content está establecido en una cadena, un objeto DateTime, un Rectangley un Panel que contiene un Ellipse y un 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:

Captura de pantalla que muestra cuatro botones con distintos tipos de contenido.

Para obtener un ejemplo de cómo establecer la propiedad Content, vea ContentControl.For an example of how to set the Content property, see ContentControl.

Controles que incluyen un encabezado y un único objeto arbitrarioControls That Contain a Header and a Single Arbitrary Object

La clase HeaderedContentControl hereda de ContentControl y muestra el contenido con un encabezado.The HeaderedContentControl class inherits from ContentControl and displays content with a header. Hereda la propiedad de contenido, Content, de ContentControl y define la propiedad Header que es de tipo Object; por lo tanto, ambos pueden ser un objeto arbitrario.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.

Los siguientes controles heredan de HeaderedContentControl y utilizan su modelo de contenido:The following controls inherit from HeaderedContentControl and use its content model:

En la ilustración siguiente se muestran dos objetos TabItem.The following illustration shows two TabItem objects. La primera TabItem tiene UIElement objetos como Header y Content.The first TabItem has UIElement objects as the Header and the Content. La Header se establece en un StackPanel que contiene un Ellipse y un TextBlock.The Header is set to a StackPanel that contains an Ellipse and a TextBlock. La Content se establece en un StackPanel que contiene un TextBlock y un Label.The Content is set to a StackPanel that contains a TextBlock and a Label. El segundo TabItem tiene una cadena en el Header y un TextBlock en el Content.The second TabItem has a string in the Header and a TextBlock in the Content.

TabControl que usa tipos diferentes en la propiedad header.

Para obtener un ejemplo de cómo crear objetos de TabItem, vea HeaderedContentControl.For an example of how to create TabItem objects, see HeaderedContentControl.

Controles que incluyen una colección de objetos arbitrariosControls That Contain a Collection of Arbitrary Objects

La clase ItemsControl hereda de Control y puede contener varios elementos, como cadenas, objetos u otros elementos.The ItemsControl class inherits from Control and can contain multiple items, such as strings, objects, or other elements. Sus propiedades de contenido se ItemsSource y Items.Its content properties are ItemsSource and Items. normalmente ItemsSource se utiliza para rellenar el ItemsControl con una colección de datos.ItemsSource is typically used to populate the ItemsControl with a data collection. Si no desea usar una colección para rellenar el ItemsControl, puede agregar elementos mediante la propiedad Items.If you do not want to use a collection to populate the ItemsControl, you can add items by using the Items property.

Los siguientes controles heredan de ItemsControl y utilizan su modelo de contenido:The following controls inherit from ItemsControl and use its content model:

En la ilustración siguiente se muestra una ListBox que contiene estos tipos de elementos:The following illustration shows a ListBox that contains these types of items:

Captura de pantalla que muestra un cuadro de lista con cuatro tipos de contenido.

Controles que incluyen un encabezado y una colección de objetos arbitrariosControls That Contain a Header and a Collection of Arbitrary Objects

La clase HeaderedItemsControl hereda de ItemsControl y puede contener varios elementos, como cadenas, objetos u otros elementos, y un encabezado.The HeaderedItemsControl class inherits from ItemsControl and can contain multiple items, such as strings, objects, or other elements, and a header. Hereda las propiedades de contenido ItemsControl, ItemsSourcey Items, y define la propiedad Header que puede ser un objeto arbitrario.It inherits the ItemsControl content properties, ItemsSource, and Items, and it defines the Header property that can be an arbitrary object.

Los siguientes controles heredan de HeaderedItemsControl y utilizan su modelo de contenido:The following controls inherit from HeaderedItemsControl and use its content model:

Clases que incluyen una colección de objetos UIElementClasses That Contain a Collection of UIElement Objects

La clase Panel coloca y organiza los objetos UIElement secundarios.The Panel class positions and arranges child UIElement objects. Su propiedad de contenido es Children.Its content property is Children.

Las siguientes clases heredan de la clase Panel y utilizan su modelo de contenido:The following classes inherit from the Panel class and use its content model:

Para obtener más información, consulte Información general sobre elementos Panel.For more information, see Panels Overview.

Clases que afectan a la apariencia de un objeto UIElementClasses That Affect the Appearance of a UIElement

La clase Decorator aplica efectos visuales a un solo UIElementsecundario o alrededor de él.The Decorator class applies visual effects onto or around a single child UIElement. Su propiedad de contenido es Child.Its content property is Child. Las siguientes clases heredan de Decorator y utilizan su modelo de contenido:The following classes inherit from Decorator and use its content model:

En la ilustración siguiente se muestra un TextBox que tiene (se decora con) un Border alrededor.The following illustration shows a TextBox that has (is decorated with) a Border around it.

TextBox con borde negroTextBox with black border
TextBlock con bordeTextBlock that has a Border

Clases que proporcionan comentarios visuales sobre un objeto UIElementClasses That Provide Visual Feedback About a UIElement

La clase Adorner proporciona indicaciones visuales a un usuario.The Adorner class provides visual cues to a user. Por ejemplo, utilice un Adorner para agregar controladores funcionales a los elementos o proporcionar información de estado sobre un control.For example, use an Adorner to add functional handles to elements or provide state information about a control. La clase Adorner proporciona un marco para que pueda crear sus propios adornos.The Adorner class provides a framework so that you can create your own adorners. WPFWPF no proporciona ningún adorno implementado.does not provide any implemented adorners. Para más información, consulte Información general sobre adornos.For more information, see Adorners Overview.

Clases que permiten a los usuarios escribir textoClasses That Enable Users to Enter Text

WPF proporciona tres controles principales que permiten a los usuarios escribir texto.WPF provides three primary controls that enable users to enter text. Cada control muestra el texto de forma diferente.Each control displays the text differently. En la tabla siguiente, se muestran estos tres controles relacionados con el texto, sus funcionalidades cuando muestran texto y las propiedades que contienen el texto del control.The following table lists these three text-related controls, their capabilities when they display text, and their properties that contain the control's text.

ControlControl El texto se muestra comoText is displayed as Propiedad de contenidoContent property
TextBox Texto sin formatoPlain text Text
RichTextBox Texto con formatoFormatted text Document
PasswordBox Texto oculto (se enmascaran los caracteres)Hidden text (characters are masked) Password

Clases que muestran el textoClasses That Display Your Text

Se pueden usar varias clases para mostrar texto sin formato o con él.Several classes can be used to display plain or formatted text. Puede usar TextBlock para mostrar pequeñas cantidades de texto.You can use TextBlock to display small amounts of text. Si desea mostrar grandes cantidades de texto, utilice los controles FlowDocumentReader, FlowDocumentPageViewero FlowDocumentScrollViewer.If you want to display large amounts of text, use the FlowDocumentReader, FlowDocumentPageViewer, or FlowDocumentScrollViewer controls.

El TextBlock tiene dos propiedades de contenido: Text y Inlines.The TextBlock has two content properties: Text and Inlines. Si desea mostrar texto que utiliza un formato coherente, la propiedad Text suele ser la mejor opción.When you want to display text that uses consistent formatting, the Text property is often your best choice. Si piensa utilizar un formato diferente en todo el texto, use la propiedad Inlines.If you plan to use different formatting throughout the text, use the Inlines property. La propiedad Inlines es una colección de objetos Inline, que especifican cómo dar formato al texto.The Inlines property is a collection of Inline objects, which specify how to format text.

En la tabla siguiente se muestra la propiedad de contenido para las clases FlowDocumentReader, FlowDocumentPageViewery FlowDocumentScrollViewer.The following table lists the content property for FlowDocumentReader, FlowDocumentPageViewer, and FlowDocumentScrollViewer classes.

ControlControl Propiedad de contenidoContent property Tipo de propiedad de contenidoContent property type
FlowDocumentPageViewer DocumentoDocument IDocumentPaginatorSource
FlowDocumentReader DocumentoDocument FlowDocument
FlowDocumentScrollViewer DocumentoDocument FlowDocument

El FlowDocument implementa la interfaz de IDocumentPaginatorSource; por lo tanto, las tres clases pueden tomar un FlowDocument como contenido.The FlowDocument implements the IDocumentPaginatorSource interface; therefore, all three classes can take a FlowDocument as content.

Clases que dan formato al textoClasses That Format Your Text

TextElement y sus clases relacionadas le permiten dar formato al texto.TextElement and its related classes allow you to format text. TextElement objetos contienen y dan formato al texto de los objetos TextBlock y FlowDocument.TextElement objects contain and format text in TextBlock and FlowDocument objects. Los dos tipos principales de objetos TextElement son Block elementos y Inline elementos.The two primary types of TextElement objects are Block elements and Inline elements. Un elemento Block representa un bloque de texto, como un párrafo o una lista.A Block element represents a block of text, such as a paragraph or list. Un elemento Inline representa una parte del texto de un bloque.An Inline element represents a portion of text in a block. Muchas clases de Inline especifican el formato del texto al que se aplican.Many Inline classes specify formatting for the text to which they are applied. Cada TextElement tiene su propio modelo de contenido.Each TextElement has its own content model. Para más información, consulte Información general sobre el modelo de contenido de TextElement.For more information, see the TextElement Content Model Overview.

Consulte tambiénSee also