Modello di contenuto WPF

Windows Presentation Foundation (WPF) è una piattaforma di presentazione che fornisce molti controlli e tipi simili a controlli il cui scopo principale è quello di visualizzare diversi tipi di contenuto. Per stabilire quale controllo usare o da quale controllo eseguire la derivazione, è consigliabile comprendere i tipi di oggetti che possono essere visualizzati in modo ottimale da un determinato controllo.

In questo argomento viene riepilogato il con modalità tenda l per i tipi di controllo e di controllo WPF. Il modello di contenuto descrive il contenuto che può essere usato in un controllo. Questo argomento include anche un elenco delle proprietà di contenuto per ogni modello di contenuto. Una proprietà di contenuto è una proprietà che viene usata per archiviare il contenuto dell'oggetto.

Classi con contenuto arbitrario

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

WPF ha quattro classi che possono contenere contenuto arbitrario. Nella tabella seguente sono elencate le classi che ereditano da Control.

Classe con contenuto arbitrario Contenuto
ContentControl Un singolo oggetto arbitrario.
HeaderedContentControl Un'intestazione e un singolo elemento, che sono entrambi oggetti arbitrari.
ItemsControl Una raccolta di oggetti arbitrari.
HeaderedItemsControl Un'intestazione e una raccolta di elementi, che costituiscono tutti oggetti arbitrari.

I controlli che ereditano da queste classi possono contenere lo stesso tipo di contenuto e gestiscono il contenuto nello stesso modo. La figura seguente mostra un controllo di ogni con modalità tenda l che contiene un'immagine e un testo:

Screenshot that shows four different controls, one from each content model.

Controlli che contengono un singolo oggetto arbitrario

La ContentControl classe contiene una singola parte di contenuto arbitrario. La proprietà del contenuto è Content. I controlli seguenti ereditano da ContentControl e usano il relativo con modalità tenda l:

La figura seguente mostra quattro pulsanti il cui Content oggetto è impostato su una stringa, un DateTime oggetto , un Rectangleoggetto e un Panel oggetto che contiene un Ellipse oggetto e un TextBlockoggetto :

Screenshot that shows four buttons with different content types.

Per un esempio di come impostare la Content proprietà, vedere ContentControl.

Controlli che contengono un'intestazione e un singolo oggetto arbitrario

La HeaderedContentControl classe eredita da ContentControl e visualizza il contenuto con un'intestazione. Eredita la proprietà content, , Contentda ContentControl e definisce la Header proprietà di tipo Object, pertanto entrambi possono essere un oggetto arbitrario.

I controlli seguenti ereditano da HeaderedContentControl e usano il relativo con modalità tenda l:

La figura seguente mostra due TabItem oggetti. Il primo TabItem ha UIElement oggetti come Header e .Content l'oggetto Header è impostato su un StackPanel oggetto che contiene un Ellipse oggetto e un oggetto TextBlock. l'oggetto Content è impostato su un StackPanel oggetto che contiene un TextBlock oggetto e un oggetto Label. Il secondo TabItem ha una stringa in Header e un TextBlock in Content.

TabControl that uses different types in the Header property.

Per un esempio di come creare TabItem oggetti, vedere HeaderedContentControl.

Controlli che contengono una raccolta di oggetti arbitrari

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

I controlli seguenti ereditano da ItemsControl e usano il relativo con modalità tenda l:

La figura seguente mostra un oggetto ListBox che contiene questi tipi di elementi:

Screenshot that shows a ListBox with four types of content.

Controlli che contengono un'intestazione e una raccolta di oggetti arbitrari

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

I controlli seguenti ereditano da HeaderedItemsControl e usano il relativo con modalità tenda l:

Classi che contengono una raccolta di oggetti UIElement

La Panel classe posiziona e dispone gli oggetti figlio UIElement . La proprietà del contenuto è Children.

Le classi seguenti ereditano dalla Panel classe e usano il relativo con modalità tenda l:

Per altre informazioni, vedere Cenni preliminari sugli elementi Panel.

Classi che influiscono sull'aspetto di un oggetto UIElement

La Decorator classe applica effetti visivi a o intorno a un singolo elemento figlio UIElement. La proprietà del contenuto è Child. Le classi seguenti ereditano da Decorator e usano il relativo con modalità tenda l:

Nella figura seguente viene illustrato un oggetto con un TextBox oggetto (decorato con) Border intorno a esso.

TextBox with black border
TextBlock con bordo nero

Classi che forniscono feedback visivo su un oggetto UIElement

La Adorner classe fornisce segnali visivi a un utente. Ad esempio, usare un Adorner oggetto per aggiungere handle funzionali agli elementi o fornire informazioni sullo stato su un controllo. La Adorner classe fornisce un framework in modo da poter creare oggetti decorativi personalizzati. WPF non fornisce strumenti decorativi implementati. Per altre informazioni, vedere Cenni preliminari sugli strumenti decorativi.

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. La tabella seguente elenca 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 sono disponibili numerose classi. È possibile usare TextBlock per visualizzare piccole quantità di testo. Se si desidera visualizzare grandi quantità di testo, usare i FlowDocumentReadercontrolli , FlowDocumentPageViewero FlowDocumentScrollViewer .

Ha TextBlock due proprietà del contenuto: Text e Inlines. Quando si desidera visualizzare testo che usa una formattazione coerente, la proprietà è spesso la Text scelta migliore. Se si prevede di utilizzare una formattazione diversa in tutto il testo, utilizzare la Inlines proprietà . La Inlines proprietà è una raccolta di Inline oggetti che specificano come formattare il testo.

Nella tabella seguente sono elencate le proprietà del contenuto per FlowDocumentReaderle classi , FlowDocumentPageViewere FlowDocumentScrollViewer .

Controllo Proprietà di contenuto Tipo proprietà di contenuto
FlowDocumentPageViewer Documento IDocumentPaginatorSource
FlowDocumentReader Documento FlowDocument
FlowDocumentScrollViewer Documento FlowDocument

FlowDocument implementa l'interfacciaIDocumentPaginatorSource, pertanto tutte e tre le classi possono accettare come FlowDocument contenuto.

Classi che consentono di formattare il testo dell'utente

TextElement e le relative classi consentono di formattare il testo. TextElement gli oggetti contengono e formattano il testo in TextBlock e FlowDocument gli oggetti . I due tipi principali di TextElement oggetti sono Block elementi ed Inline elementi. Un Block elemento rappresenta un blocco di testo, ad esempio un paragrafo o un elenco. Un Inline elemento rappresenta una parte di testo in un blocco. Molte Inline classi specificano la formattazione per il testo a cui vengono applicate. Ognuno TextElement ha un proprio con modalità tenda l. Per altre informazioni, vedere il Cenni preliminari sul modello di contenuto di TextElement.

Vedi anche