Compartilhar via


Modelo de conteúdo do WPF

O WPF (Windows Presentation Foundation) é uma plataforma de apresentação que fornece muitos controles e tipos semelhantes a controles cuja principal finalidade é exibir diferentes tipos de conteúdo. Para determinar de qual controle usar ou de qual controle derivar, você deve entender os tipos de objetos que um controle específico pode exibir melhor.

Este tópico resume o modelo de conteúdo para tipos de controle e similares ao controle do WPF. O modelo de conteúdo descreve qual conteúdo pode ser usado em um controle. Este tópico também lista as propriedades de conteúdo para cada modelo de conteúdo. Uma propriedade de conteúdo é uma propriedade usada para armazenar o conteúdo do objeto.

Classes que contêm conteúdo arbitrário

Alguns controles podem conter um objeto de qualquer tipo, como uma cadeia de caracteres, um DateTime objeto ou um UIElement contêiner para itens adicionais. Por exemplo, um Button pode conter uma imagem e algum texto; ou um CheckBox pode conter o valor de DateTime.Now.

O WPF tem quatro classes que podem conter conteúdo arbitrário. A tabela a seguir lista as classes que herdam de Control.

Classe que contém conteúdo arbitrário Conteúdo
ContentControl Um único objeto arbitrário.
HeaderedContentControl Um cabeçalho e um único item, ambos objetos arbitrários.
ItemsControl Uma coleção de objetos arbitrários.
HeaderedItemsControl Um cabeçalho e uma coleção de itens, todos os quais são objetos arbitrários.

Os controles que herdam dessas classes podem conter o mesmo tipo de conteúdo e tratar o conteúdo da mesma maneira. A ilustração a seguir mostra um controle de cada modelo de conteúdo que contém uma imagem e algum texto:

Captura de tela que mostra quatro controles diferentes, um de cada modelo de conteúdo.

Controles que contêm um único objeto arbitrário

A ContentControl classe contém um único pedaço de conteúdo arbitrário. Sua propriedade de conteúdo é Content. Os seguintes controles herdam de ContentControl e usam seu modelo de conteúdo:

A ilustração a seguir mostra quatro botões que Content estão definidos como uma cadeia de caracteres, um DateTime objeto, um Rectanglee um Panel que contém um Ellipse e um TextBlock:

Captura de tela que mostra quatro botões com tipos de conteúdo diferentes.

Para obter um exemplo de como definir a Content propriedade, consulte ContentControl.

Controles que contêm um cabeçalho e um único objeto arbitrário

A HeaderedContentControl classe herda ContentControl e exibe conteúdo com um cabeçalho. Ele herda a propriedade de conteúdo, Contentde ContentControl e define a Header propriedade que é do tipo Object; portanto, ambos podem ser um objeto arbitrário.

Os seguintes controles herdam de HeaderedContentControl e usam seu modelo de conteúdo:

A ilustração a seguir mostra dois TabItem objetos. O primeiro TabItem tem UIElement objetos como Header e Content. O Header é definido como um StackPanel que contém um Ellipse e um TextBlock. O Content é definido como um StackPanel que contém um TextBlock e um Label. O segundo TabItem tem uma cadeia de caracteres no Header e um TextBlock no Content.

TabControl que usa tipos diferentes na propriedade Header.

Para obter um exemplo de como criar TabItem objetos, consulte HeaderedContentControl.

Controles que contêm uma coleção de objetos arbitrários

A ItemsControl classe herda Control e pode conter vários itens, como cadeias de caracteres, objetos ou outros elementos. Suas propriedades de conteúdo são ItemsSource e Items. ItemsSource normalmente é usado para preencher o ItemsControl com uma coleção de dados. Se você não quiser usar uma coleção para preencher a ItemsControl, poderá adicionar itens usando a Items propriedade.

Os seguintes controles herdam de ItemsControl e usam seu modelo de conteúdo:

A ilustração a seguir mostra um ListBox que contém esses tipos de itens:

Captura de tela que mostra um ListBox com quatro tipos de conteúdo.

Controles que contêm um cabeçalho e uma coleção de objetos arbitrários

A HeaderedItemsControl classe herda ItemsControl e pode conter vários itens, como cadeias de caracteres, objetos ou outros elementos, e um cabeçalho. Ele herda as propriedades de conteúdo ItemsControl, ItemsSource e Items, e define a propriedade Header que pode ser um objeto arbitrário.

Os seguintes controles herdam de HeaderedItemsControl e usam seu modelo de conteúdo:

Classes que contêm uma coleção de objetos UIElement

A Panel classe posiciona e organiza objetos filho UIElement . Sua propriedade de conteúdo é Children.

As seguintes classes herdam da Panel classe e usam seu modelo de conteúdo:

Para obter mais informações, consulte Visão geral dos painéis.

Classes que afetam a aparência de um UIElement

A Decorator classe aplica efeitos visuais sobre ou ao redor de um único elemento UIElement. Sua propriedade de conteúdo é Child. As seguintes classes herdam de Decorator e usam seu modelo de conteúdo:

A ilustração a seguir mostra um TextBox que tem (é decorado com) um Border ao seu redor.

TextBox com borda preta
TextBlock que tem uma borda

Classes que fornecem comentários visuais sobre um UIElement

A Adorner classe fornece indicações visuais para um usuário. Por exemplo, use um Adorner para adicionar identificadores funcionais a elementos ou fornecer informações de estado sobre um controle. A Adorner classe fornece uma estrutura para que você possa criar seus próprios decoradores. O WPF não fornece nenhum adornador implementado. Para mais informações, consulte Visão geral dos adornos.

Classes que permitem que os usuários insiram texto

O WPF fornece três controles primários que permitem que os usuários insiram texto. Cada controle exibe o texto de forma diferente. A tabela a seguir lista esses três controles relacionados ao texto, seus recursos quando exibem texto e suas propriedades que contêm o texto do controle.

Controle O texto é exibido como Propriedade content
TextBox Texto sem formatação Text
RichTextBox Texto formatado Document
PasswordBox Texto oculto (caracteres são mascarados) Password

Classes que exibem seu texto

Várias classes podem ser usadas para exibir texto simples ou formatado. Você pode usar TextBlock para exibir pequenas quantidades de texto. Se você quiser exibir grandes quantidades de texto, use o FlowDocumentReader, FlowDocumentPageViewerou FlowDocumentScrollViewer controles.

O TextBlock tem duas propriedades de conteúdo: Text e Inlines. Quando você deseja exibir o texto que usa formatação consistente, a Text propriedade geralmente é sua melhor opção. Se você planeja usar formatação diferente ao longo do texto, use a propriedade Inlines. A Inlines propriedade é uma coleção de Inline objetos, que especificam como formatar texto.

A tabela a seguir lista a propriedade de conteúdo para FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer classes.

Controle Propriedade content Tipo de propriedade de conteúdo
FlowDocumentPageViewer Documento IDocumentPaginatorSource
FlowDocumentReader Documento FlowDocument
FlowDocumentScrollViewer Documento FlowDocument

O FlowDocument implementa a interface IDocumentPaginatorSource; por isso, todas as três classes podem ter um FlowDocument como conteúdo.

Classes que formatam o seu texto

TextElement e suas classes relacionadas permitem formatar texto. TextElement objetos contêm e formatam texto em TextBlock e FlowDocument objetos. Os dois tipos principais de TextElement objetos são Block elementos e Inline elementos. Um Block elemento representa um bloco de texto, como um parágrafo ou uma lista. Um Inline elemento representa uma parte do texto em um bloco. Muitas Inline classes especificam a formatação para o texto ao qual são aplicadas. Cada TextElement um tem seu próprio modelo de conteúdo. Para obter mais informações, consulte a visão geral do modelo de conteúdo TextElement.

Consulte também