Compartir a través de


Modelo de contenido de WPF

Windows Presentation Foundation (WPF) es una plataforma de presentación que proporciona muchos controles y tipos similares a controles cuyo propósito principal es mostrar diferentes tipos de contenido. Para determinar qué control utilizar o de cuál derivar, debe comprender los tipos de objetos que un control determinado puede mostrar mejor.

En este tema se resume el modelo de contenido para los controles y tipos similares a controles de WPF. El modelo de contenido describe qué contenido se puede usar en un control . En este tema también se enumeran las propiedades de contenido de cada modelo de contenido. Una propiedad de contenido es una propiedad que se usa para almacenar el contenido del objeto.

Clases que contienen contenido arbitrario

Algunos controles pueden contener un objeto de cualquier tipo, como una cadena, un DateTime objeto o un UIElement que es un contenedor para elementos adicionales. Por ejemplo, un Button puede contener una imagen y algún texto; o un CheckBox puede contener el valor de DateTime.Now.

WPF tiene cuatro clases que pueden contener contenido arbitrario. En la tabla siguiente se enumeran las clases, que heredan de Control.

Clase que contiene contenido arbitrario Contenido
ContentControl Un único objeto arbitrario.
HeaderedContentControl Encabezado y un único elemento, ambos son objetos arbitrarios.
ItemsControl Colección de objetos arbitrarios.
HeaderedItemsControl El encabezado y una colección de elementos, todos los cuales son objetos arbitrarios.

Los controles que heredan de estas clases pueden contener el mismo tipo de contenido y tratar el contenido de la misma manera. En la ilustración siguiente se muestra un control de cada modelo de contenido que contiene una imagen y algún texto:

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

Controles que contienen un único objeto arbitrario

La ContentControl clase contiene un solo fragmento de contenido arbitrario. Su propiedad de contenido es Content. Los siguientes controles heredan de ContentControl y usan su modelo de contenido:

En la ilustración siguiente se muestran cuatro botones cuya Content está establecida en una cadena, un DateTime objeto, un Rectangle, y un Panel que contiene un Ellipse y un TextBlock.

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

Para obtener un ejemplo de cómo establecer la Content propiedad , vea ContentControl.

Controles que contienen un encabezado y un único objeto arbitrario

La HeaderedContentControl clase hereda de ContentControl y muestra el contenido con un encabezado . Hereda la propiedad de contenido, Content, de ContentControl y define la Header propiedad que es de tipo Object; por lo tanto, ambos pueden ser un objeto arbitrario.

Los siguientes controles heredan de HeaderedContentControl y usan su modelo de contenido:

En la ilustración siguiente se muestran dos TabItem objetos. El primer TabItem tiene UIElement objetos como el Header y el Content. Header se establece en un StackPanel que contiene un Ellipse y un TextBlock. Content se establece en un objeto StackPanel que contiene TextBlock y Label. El segundo TabItem tiene una cadena en Header y un TextBlock en Content.

TabControl que usa diferentes tipos en la propiedad Header.

Para obtener un ejemplo de cómo crear TabItem objetos, vea HeaderedContentControl.

Controles que contienen una colección de objetos arbitrarios

La ItemsControl clase hereda de Control y puede contener varios elementos, como cadenas, objetos u otros elementos. Sus propiedades de contenido son ItemsSource y Items. ItemsSource normalmente se usa para rellenar ItemsControl con una colección de datos. Si no desea usar una colección para rellenar , ItemsControlpuede agregar elementos mediante la Items propiedad .

Los siguientes controles heredan de ItemsControl y usan su modelo de contenido:

En la ilustración siguiente se muestra un ListBox que contiene estos tipos de elementos:

Captura de pantalla que muestra un ListBox con cuatro tipos de contenido.

Controles que contienen un encabezado y una colección de objetos arbitrarios

La HeaderedItemsControl clase hereda de ItemsControl y puede contener varios elementos, como cadenas, objetos u otros elementos, y un encabezado. Hereda las propiedades de ItemsControl contenido, ItemsSource, y Items, y define la propiedad Header que puede ser un objeto arbitrario.

Los siguientes controles heredan de HeaderedItemsControl y usan su modelo de contenido:

Clases que contienen una colección de objetos UIElement

La clase Panel posiciona y organiza los objetos hijo UIElement. Su propiedad de contenido es Children.

Las siguientes clases heredan de la Panel clase y usan su modelo de contenido:

Para obtener más información, consulte Información general sobre paneles.

Clases que afectan a la apariencia de un UIElement

La Decorator clase aplica efectos visuales a o alrededor de un solo elemento secundario UIElement. Su propiedad de contenido es Child. Las siguientes clases heredan de Decorator y usan su modelo de contenido.

En la siguiente ilustración se muestra un TextBox que tiene (está decorado con) un Border alrededor de él.

Cuadro de texto con borde negro
TextBlock que tiene un borde

Clases que proporcionan retroalimentación visual sobre un UIElement

La Adorner clase proporciona indicaciones visuales a un usuario. Por ejemplo, use Adorner para agregar identificadores funcionales a elementos o proporcionar información de estado sobre un control. La Adorner clase proporciona un marco para que pueda crear sus propios adornos. WPF no proporciona ningún elemento decorativo implementado. Para más información, consulte Información general sobre adornos.

Clases que permiten a los usuarios escribir texto

WPF proporciona tres controles principales que permiten a los usuarios escribir texto. Cada control muestra el texto de forma diferente. En la tabla siguiente se enumeran estos tres controles relacionados con texto, sus funcionalidades cuando muestran texto y sus propiedades que contienen el texto del control.

Supervisión El texto se muestra como Content (propiedad)
TextBox Texto sin formato Text
RichTextBox Texto con formato Document
PasswordBox Texto oculto (los caracteres están enmascarados) Password

Clases que muestran tu texto

Se pueden usar varias clases para mostrar texto sin formato o con formato. Puede usar TextBlock para mostrar pequeñas cantidades de texto. Si desea mostrar grandes cantidades de texto, use los FlowDocumentReadercontroles , FlowDocumentPageViewero FlowDocumentScrollViewer .

TextBlock tiene dos propiedades de contenido: Text y Inlines. Cuando quiera mostrar texto que usa formato coherente, la Text propiedad suele ser la mejor opción. Si tiene previsto usar un formato diferente a lo largo del texto, use la Inlines propiedad . La Inlines propiedad es una colección de Inline objetos, que especifican cómo dar formato al texto.

En la tabla siguiente se muestra la propiedad de contenido para las clases FlowDocumentReader, FlowDocumentPageViewer, y FlowDocumentScrollViewer.

Supervisión Content (propiedad) Tipo de propiedad de contenido
FlowDocumentPageViewer Documento IDocumentPaginatorSource
FlowDocumentReader Documento FlowDocument
FlowDocumentScrollViewer Documento FlowDocument

FlowDocument implementa la interfaz IDocumentPaginatorSource; por lo tanto, las tres clases pueden aceptar FlowDocument como contenido.

Clases que formatean el texto

TextElement y sus clases relacionadas permiten dar formato al texto. TextElement los objetos contienen y formatean texto en TextBlock y FlowDocument objetos. Los dos tipos principales de TextElement objetos son Block elementos y Inline elementos. Un Block elemento representa un bloque de texto, como un párrafo o una lista. Un Inline elemento representa una parte del texto de un bloque. Muchas Inline clases especifican formato para el texto al que se aplican. Cada TextElement uno tiene su propio modelo de contenido. Para obtener más información, vea TextElement Content Model Overview( Información general sobre el modelo de contenido de TextElement).

Consulte también