Partilhar via


Modelo de conteúdo WPF

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

Este tópico resume o modelo de conteúdo para controle WPF e tipos semelhantes a controle. 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 objeto DateTime ou um UIElement que é um 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.

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 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 classe ContentControl contém uma única parte 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 cuja Content é definida como uma cadeia de caracteres, um objeto DateTime, um Rectanglee um Panel que contém um Ellipse e um TextBlock:

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

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

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

A classe HeaderedContentControl herda de ContentControl e exibe conteúdo com um cabeçalho. Ele herda a propriedade de conteúdo, Content, de ContentControl e define a propriedade Header 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 objetos TabItem. O primeiro TabItem tem UIElement objetos como o Header e o 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 objetos TabItem, consulte HeaderedContentControl.

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

A classe ItemsControl herda de 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 coleta de dados. Se não quiser usar uma coleção para preencher o ItemsControl, você pode adicionar itens usando a propriedade Items.

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 uma ListBox com quatro tipos de conteúdo.

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

A classe HeaderedItemsControl herda de 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, ItemsSourcee Itemse 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 classe Panel posiciona e organiza objetos filho UIElement. Sua propriedade content é Children.

As classes a seguir herdam da classe Panel 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 classe Decorator aplica efeitos visuais em ou ao redor de uma única criança UIElement. Sua propriedade content é Child. As classes a seguir herdam de Decorator e usam seu modelo de conteúdo:

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

TextBox com borda preta
TextBlock com uma borda

Classes que fornecem feedback visual sobre um UIElement

A classe Adorner fornece pistas 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 classe Adorner fornece uma estrutura para que você possa criar seus próprios adornos. O WPF não fornece nenhum decorador implementado. Para obter mais informações, consulte Visão geral dos Adorners.

Classes que permitem que os usuários insiram texto

O WPF fornece três controles principais 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 a texto, seus recursos quando exibem texto e suas propriedades que contêm o texto do controle.

Controlo O texto é exibido como Propriedade de conteúdo
TextBox Texto simples Text
RichTextBox Texto formatado Document
PasswordBox Texto oculto (os caracteres são mascarados) Password

Classes que exibem seu texto

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

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

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

Controlo Propriedade de Conteúdo Tipo de propriedade de conteúdo
FlowDocumentPageViewer Documento IDocumentPaginatorSource
FlowDocumentReader Documento FlowDocument
FlowDocumentScrollViewer Documento FlowDocument

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

Classes que formatam seu texto

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

Ver também

  • Avançado