Modello di contenuto WPF

Windows Presentation Foundation (WPF) è una piattaforma di presentazione che fornisce molti controlli e molti tipi simili ai controlli con lo scopo principale di visualizzare tipi di contenuto diversi. Per determinare quale controllo utilizzare o da quale controllo eseguire la derivazione, è necessario comprendere i tipi di oggetti che possono essere visualizzati in modo ottimale da un determinato controllo.

In questo argomento viene riepilogato il modello di contenuto per il controllo WPF e i tipi di controllo simili. Il modello di contenuto descrive il contenuto che può essere utilizzato in un controllo. In questo argomento sono inoltre elencate le proprietà di contenuto per ogni modello di contenuto. Una proprietà di contenuto è una proprietà utilizzata per archiviare il contenuto dell'oggetto.

Nel presente argomento sono contenute le seguenti sezioni.

  • Classi che contengono contenuto arbitrario
  • Classi che contengono un insieme di oggetti UIElement
  • Classi che influiscono sull'aspetto di un oggetto UIElement
  • Classi che forniscono feedback visivo su un oggetto UIElement
  • Classi che consentono agli utenti di immettere testo
  • Classi che consentono di visualizzare il testo dell'utente
  • Classi che consentono di formattare il testo dell'utente
  • Argomenti correlati

Classi che contengono contenuto arbitrario

Alcuni controlli possono contenere un oggetto di qualsiasi tipo, ad esempio una stringa, un oggetto DateTime o un oggetto UIElement che rappresenta un contenitore di elementi aggiuntivi. Un oggetto Button può ad esempio contenere un'immagine e testo, mentre un oggetto CheckBox può contenere il valore di DateTime.Now.

WPF dispone di quattro classi che possono includere contenuto arbitrario. Nella tabella seguente sono elencate le classi, le quali ereditano da Control.

Classe che contiene contenuto arbitrario

Contenuto

ContentControl

Un singolo oggetto arbitrario.

HeaderedContentControl

Un'intestazione e un singolo elemento, costituiti entrambi da oggetti arbitrari.

ItemsControl

Un insieme di oggetti arbitrari.

HeaderedItemsControl

Un'intestazione e un insieme di elementi, tutti costituiti da oggetti arbitrari.

I controlli che ereditano da queste classi possono contenere lo stesso tipo di contenuto e gestiscono il contenuto nello stesso modo. Nell'immagine seguente viene illustrato un controllo di ogni modello di contenuto contenente un'immagine e testo.

Button, GroupBox, Listbox, TreeViewItem

Controlli che contengono un singolo oggetto arbitrario

La classe ContentControl contiene una singola parte di contenuto arbitrario. La proprietà di contenuto corrispondente è Content. I controlli seguenti ereditano da ContentControl e utilizzano il relativo modello di contenuto:

Nell'illustrazione seguente vengono illustrati quattro pulsanti la cui proprietà Content è impostata su una stringa, un oggetto DateTime, un oggetto Rectangle e un oggetto Panel che contengono un oggetto Ellipse e un oggetto TextBlock.

Quattro pulsanti che dispongono di tipi di contenuto diversi

Quattro pulsanti

Per un esempio relativo all'impostazione della proprietà Content, vedere ContentControl.

Controlli che contengono un'intestazione e un singolo oggetto arbitrario

La classe HeaderedContentControl eredita da ContentControl e consente la visualizzazione di contenuto con un'intestazione. Eredita la proprietà di contenuto, Content, da ContentControl e definisce la proprietà Header, che è di tipo Object; pertanto, entrambe possono essere costituite da un oggetto arbitrario.

I controlli seguenti ereditano da HeaderedContentControl e utilizzano il relativo modello di contenuto:

Nell'immagine seguente vengono illustrati due oggetti TabItem. Il primo oggetto TabItem dispone di oggetti UIElement come Header e Content. Header è impostato su un oggetto StackPanel che contiene Ellipse e TextBlock. Content è impostato su un oggetto StackPanel che contiene TextBlock e Label. Il secondo oggetto TabItem dispone di una stringa in Header e di TextBlock in Content.

TabControl che utilizza tipi diversi nella proprietà Header

TabControl

Per un esempio relativo alla creazione di oggetti TabItem, vedere HeaderedContentControl.

Controlli che contengono un insieme di oggetti arbitrari

La classe ItemsControl eredita da Control e può contenere più elementi, ad esempio stringhe, oggetti o altri elementi. Le proprietà di contenuto corrispondenti sono ItemsSource e Items. ItemsSource viene in genere utilizzato per popolare ItemsControl con un insieme di dati. Se non si desidera utilizzare un insieme per popolare ItemsControl, è possibile aggiungere elementi utilizzando la proprietà Items.

I controlli seguenti ereditano da ItemsControl e utilizzano il relativo modello di contenuto:

Nell'immagine seguente viene illustrato un controllo ListBox contenente i tipi di elementi seguenti:

Oggetto ListBox contenente più tipi di oggetti

ListBox con quattro tipi di contenuto

Controlli che contengono un'intestazione e un insieme di oggetti arbitrari

La classe HeaderedItemsControl eredita da ItemsControl e può contenere più elementi, ad esempio stringhe, oggetti o altri elementi e un'intestazione. Eredita le proprietà di contenuto dell'oggetto ItemsControl, ovvero ItemsSource e Items e definisce la proprietà Header che può essere costituita da un oggetto arbitrario.

I controlli seguenti ereditano da HeaderedItemsControl e utilizzano il relativo modello di contenuto:

Classi che contengono un insieme di oggetti UIElement

La classe Panel consente di posizionare e disporre oggetti UIElement figlio. La proprietà di contenuto corrispondente è Children.

Le classi seguenti ereditano dalla classe Panel e utilizzano il relativo modello di contenuto:

Per ulteriori informazioni, vedere Cenni preliminari sugli elementi Panel.

Classi che influiscono sull'aspetto di un oggetto UIElement

La classe Decorator applica effetti visivi a un singolo oggetto UIElement figlio o intorno ad esso. La proprietà di contenuto corrispondente è Child. Le classi seguenti ereditano da Decorator e utilizzano il relativo modello di contenuto:

Nell'immagine seguente viene illustrato un oggetto TextBox che dispone di (o è decorato con) un bordo Border.

Oggetto TextBlock che dispone di un bordo

TextBox con bordo nero

Classi che forniscono feedback visivo su un oggetto UIElement

La classe Adorner fornisce indicazioni visive a un utente. Utilizzare ad esempio un oggetto Adorner per aggiungere handle funzionali a elementi o fornire informazioni sullo stato di un controllo. La classe Adorner fornisce un framework che consente di creare strumenti decorativi visuali personalizzati. In WPF non sono inclusi strumenti decorativi implementati. Per ulteriori informazioni, vedere Cenni preliminari sugli strumenti decorativi visuali.

Classi che consentono agli utenti di immettere testo

In WPF sono disponibili tre controlli primari che consentono agli utenti di immettere testo. Ogni controllo determina una visualizzazione diversa del testo. Nella tabella seguente vengono elencati questi tre controlli correlati al testo, le relative funzionalità per la visualizzazione di testo, nonché le relative proprietà contenenti il testo del controllo.

Controllo

Il testo viene visualizzato come

Proprietà di contenuto

TextBox

Testo normale

Text

RichTextBox

Testo formattato

Document

PasswordBox

Testo nascosto (i caratteri sono mascherati)

Password

Classi che consentono di visualizzare il testo dell'utente

Per la visualizzazione di testo normale o formattato è possibile utilizzare diverse classi. È possibile utilizzare TextBlock per visualizzare quantità di testo limitate. Se si desidera visualizzare le grandi quantità di testo, utilizzare FlowDocumentReader, FlowDocumentPageViewer o i controlli FlowDocumentScrollViewer.

TextBlock dispone di due proprietà di contenuto, ovvero Text e Inlines. Quando si desidera visualizzare testo che utilizza una formattazione coerente, la proprietà Text rappresenta spesso la scelta migliore. Se si prevede di utilizzare testo con formattazioni diverse, utilizzare la proprietà Inlines. La proprietà Inlines è un insieme di oggetti Inline che specificano la modalità di formattazione del testo.

Nella seguente tabella sono elencate le proprietà di contenuto per le classi FlowDocumentReader, FlowDocumentPageViewer e FlowDocumentScrollViewer.

Controllo

Proprietà di contenuto

Tipo proprietà di contenuto

FlowDocumentPageViewer

Document

IDocumentPaginatorSource

FlowDocumentReader

Document

FlowDocument

FlowDocumentScrollViewer

Documento

FlowDocument

FlowDocument implementa l'interfaccia IDocumentPaginatorSource. Tutte e tre le classi possono pertanto accettare un oggetto FlowDocument come contenuto.

Classi che consentono di formattare il testo dell'utente

TextElement e le relativi classi correlate consentono di formattare il testo. Gli TextElement contengono e consentono di formattare il testo incluso negli oggetti TextBlock e FlowDocument. I due tipi di oggetti TextElement primari sono costituiti dagli elementi Block e Inline. Un elemento Block rappresenta un blocco di testo, ad esempio un paragrafo o un elenco. Un elemento Inline rappresenta una parte di testo in un blocco. Molte classi Inline specificano la formattazione per il testo al quale vengono applicate. Ogni oggetto TextElement dispone di un relativo modello di contenuto. Per ulteriori informazioni, vedere Cenni preliminari sul modello di contenuto TextElement.

Vedere anche

Altre risorse

Nozioni fondamentali su WPF