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 derivar de ou qual controle usar, você deve entender os tipos de objetos de que um determinado controle melhor pode exibir.
Este tópico resume o modelo de conteúdo para WPF e controle todos os tipos semelhantes de controle. O modelo de conteúdo descreve o conteúdo que pode ser usado em um controle. Este tópico também lista as propriedades de conteúdo para cada modelo de conteúdo. A content property is a property that is used to store the content of the object.
Este tópico contém as seguintes seções.
- Classes que contêm conteúdo arbitrário
- Classes que contêm uma coleção de objetos de UIElement
- Classes que afetam a aparência de um UIElement.
- Classes que fornecem Feedback Visual sobre um UIElement.
- Classes que permitem aos usuários inserir texto
- Classes que exibem o texto.
- Classes que formatam o texto
- Tópicos relacionados
Classes que contêm conteúdo arbitrário
Alguns controles podem conter um objeto de qualquer tipo, como, por exemplo, uma seqüência de caracteres, um DateTime o objeto, ou um UIElement isto é um recipiente para itens adicionais. Por exemplo, um Button pode conter uma imagem e texto; ou um CheckBox pode conter o valor de DateTime.Now.
WPFtem quatro classes que podem conter conteúdo arbitrário. A tabela a seguir lista as classes que herdam de Control.
Classe que contém o conteúdo arbitrário |
Content |
---|---|
Um único objeto arbitrário. |
|
Um cabeçalho e um único item, que são objetos arbitrários. |
|
Uma coleção de objetos arbitrários. |
|
Um cabeçalho e uma coleção de itens, que são objetos arbitrários. |
Controles que herdam essas 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 contenha uma imagem e texto.
Controles que contêm um único objeto arbitrário
O ContentControl classe contém uma única parte do conteúdo arbitrário. É de sua propriedade content Content. Os seguintes controles herdam ContentControl e usar o modelo de conteúdo:
A ilustração a seguir mostra quatro botões cuja Content é definida como uma seqüência de caracteres, um DateTime objeto, um Rectanglee um Panel que contém um Ellipse e um TextBlock.
Quatro botões têm diferentes tipos de conteúdo
Para obter um exemplo de como definir o Content propriedade, consulte ContentControl.
Controles que contêm um cabeçalho e um único objeto arbitrário
O HeaderedContentControl classe herda de ContentControl e exibe o conteúdo com um cabeçalho. Ela herda a propriedade de conteúdo, Content, da ContentControl e define o Header que é do tipo de propriedade Object; Portanto, pode ser um objeto arbitrário.
Os seguintes controles herdam HeaderedContentControl e usar o modelo de conteúdo:
A ilustração a seguir mostra dois TabItem objetos. O primeiro TabItem tem UIElement objetos como o Header e o Content. O Header é definida como um StackPanel que contém um Ellipse e um TextBlock. O Content é definida como um StackPanel que contém um TextBlock e um Label. A segunda TabItem tem uma seqüência de caracteres na Header e um TextBlock na Content.
TabControl usa tipos diferentes na propriedade de cabeçalho
Para obter um exemplo de como criar TabItem objetos, consulte HeaderedContentControl.
Controles que contêm uma coleção de objetos arbitrários
O ItemsControl classe herda de Control e pode conter vários itens, como seqüências de caracteres, objetos ou outros elementos. Suas propriedades de conteúdo são ItemsSource e Items. ItemsSourcenormalmente é usado para preencher o ItemsControl com um conjunto de dados. Se você não quiser usar uma coleção para preencher o ItemsControl, você pode adicionar itens usando o Items propriedade.
Os seguintes controles herdam ItemsControl e usar o modelo de conteúdo:
A ilustração a seguir mostra um ListBox que contém esses tipos de itens:
Caixa de listagem que contém vários tipos de objetos
Controles que contêm um cabeçalho e uma coleção de objetos arbitrários
O HeaderedItemsControl classe herda de ItemsControl e pode conter vários itens, como seqüências de caracteres, objetos, ou outros elementos e um cabeçalho. Ele herda o ItemsControl Propriedades de conteúdo ItemsSource, e Items, e define o Header propriedade que pode ser um objeto arbitrário.
Os seguintes controles herdam HeaderedItemsControl e usar o modelo de conteúdo:
Classes que contêm uma coleção de objetos de UIElement
O Panel classe posiciona e organiza o filho UIElement objetos. É de sua propriedade content Children.
As seguintes classes herdam a Panel de classe e usar o modelo de conteúdo:
For more information, see Panels Overview.
Classes que afetam a aparência de um UIElement.
O Decorator classe aplica efeitos visuais em ou em torno de um único filho UIElement. É de sua propriedade content Child. As seguintes classes herdam de Decorator e usar o modelo de conteúdo:
A ilustração a seguir mostra um TextBox que possui (está decorado com) uma Border em torno do proprietário.
TextBlock tem uma borda
Classes que fornecem Feedback Visual sobre um UIElement.
O Adorner classe fornece dicas visuais para um usuário. Por exemplo, usar um Adorner para adicionar alças funcionais a elementos ou fornecer informações de estado sobre um controle. O Adorner classe fornece uma estrutura para que você pode criar seus próprios adorners. WPFnão fornece qualquer adorners implementadas. For more information, see Visão Geral de Adornos.
Classes que permitem aos usuários inserir texto
O WPF fornece três principais controles que permitem aos usuários inserir texto. Cada controle exibe o texto de forma diferente. A tabela a seguir lista esses três texto controles relacionados, seus recursos quando eles exibem o texto e suas propriedades que contêm o texto do controle.
Control |
Texto é exibido como |
Propriedade Content |
---|---|---|
Texto sem formatação |
||
Texto formatado |
||
(Os caracteres são mascarados) de texto oculto |
Classes que exibem o texto.
Várias classes podem ser usados para exibir texto sem formatação ou formatado. Você pode usar TextBlock para exibir pequenas quantidades de texto. Se você deseja exibir grandes quantidades de texto, use o FlowDocumentReader, FlowDocumentPageViewer, ou FlowDocumentScrollViewer controles.
O TextBlock tem duas propriedades de conteúdo: Text and Inlines. Quando você deseja exibir o texto que usa a formatação consistente, o Text propriedade é geralmente a melhor opção. Se você planeja usar uma formatação diferente em todo o texto, use o Inlines propriedade. O Inlines propriedade é uma coleção de Inline objetos, que especificam como formatar texto.
A tabela a seguir lista a propriedade content de FlowDocumentReader, FlowDocumentPageViewer, e FlowDocumentScrollViewer classes.
Control |
Propriedade Content |
Tipo de propriedade de conteúdo |
---|---|---|
Document |
||
Document |
||
Document |
O FlowDocument implementa o IDocumentPaginatorSource interface; Portanto, todas as três classes podem levar uma FlowDocument como o conteúdo.
Classes que formatam o texto
TextElemente suas classes relacionados permitem que você formate o texto. TextElementobjetos contêm e formatar texto em TextBlock e FlowDocument objetos. Os dois principais tipos de TextElement os objetos são Block elementos e Inline elementos. A Block elemento representa um bloco de texto, como um parágrafo ou lista. Um Inline elemento representa uma parte do texto em um bloco. Muitos Inline classes especificam a formatação do texto ao qual são aplicadas. Cada TextElement tem seu próprio modelo de conteúdo. Para obter mais informações, consulte o Visão geral do modelo Conteúdo TextElement.