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 determinare da quale controllo utilizzare o da quale controllo derivare, è necessario comprendere i tipi di oggetti che un particolare controllo può visualizzare meglio.
In questo argomento viene riepilogato il modello di contenuto per i controlli e i tipi simili al controllo WPF. Il modello di contenuto descrive il contenuto che può essere usato in un controllo . Questo argomento elenca anche le proprietà del contenuto per ogni modello di contenuto. Una proprietà di contenuto è una proprietà utilizzata per archiviare il contenuto dell'oggetto.
Classi che contengono contenuto arbitrario
Alcuni controlli possono contenere un oggetto di qualsiasi tipo, ad esempio una stringa, un oggetto DateTime o un UIElement che è un contenitore per elementi aggiuntivi. Ad esempio, un Button può contenere un'immagine e un testo; o un CheckBox 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 che contiene contenuto arbitrario | Contenuto |
---|---|
ContentControl | Singolo oggetto arbitrario. |
HeaderedContentControl | Intestazione e un singolo elemento, entrambi oggetti arbitrari. |
ItemsControl | Raccolta di oggetti arbitrari. |
HeaderedItemsControl | Un'intestazione e una raccolta di elementi, tutti oggetti arbitrari. |
I controlli che ereditano da queste classi possono contenere lo stesso tipo di contenuto e trattare il contenuto nello stesso modo. La figura seguente mostra un controllo di ogni modello di contenuto che contiene un'immagine e un testo:
Controlli che contengono un singolo oggetto arbitrario
La classe ContentControl contiene una singola parte di contenuto arbitrario. La proprietà "content" è Content. I controlli seguenti ereditano da ContentControl e usano il relativo modello di contenuto:
La figura seguente mostra quattro pulsanti il cui Content è impostato su una stringa, un oggetto DateTime, un Rectanglee un Panel che contiene un Ellipse e un TextBlock:
Per un esempio di come impostare la proprietà Content, vedere ContentControl.
Controlli che contengono un'intestazione e un singolo oggetto arbitrario
La classe HeaderedContentControl eredita da ContentControl e visualizza il contenuto con un'intestazione. Eredita la proprietà contenuto, Content, da ContentControl e definisce la proprietà Header di tipo Object; pertanto, entrambe possono essere un oggetto arbitrario.
I controlli seguenti ereditano da HeaderedContentControl e usano il relativo modello di contenuto:
La figura seguente mostra due oggetti TabItem. Il primo TabItem dispone di oggetti UIElement come Header e Content. Il Header è impostato su un StackPanel che contiene un Ellipse e un TextBlock. Il Content è impostato su un StackPanel contenente un TextBlock e un Label. Il secondo TabItem ha una stringa nel Header e un TextBlock nel Content.
Per un esempio di come creare oggetti TabItem, vedere HeaderedContentControl.
Controlli che contengono una raccolta di oggetti arbitrari
La classe ItemsControl 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 il ItemsControl con una raccolta dati. Se non si desidera utilizzare una raccolta per popolare il ItemsControl, è possibile aggiungere elementi usando la proprietà Items.
I controlli seguenti ereditano da ItemsControl e usano il relativo modello di contenuto:
La figura seguente mostra un ListBox che contiene questi tipi di elementi:
Controlli che contengono un'intestazione e una raccolta 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à del contenuto ItemsControl, ItemsSourcee Itemse definisce la proprietà Header che può essere un oggetto arbitrario.
I controlli seguenti ereditano da HeaderedItemsControl e usano il relativo modello di contenuto:
Classi che contengono una raccolta di oggetti UIElement
La classe Panel posiziona e dispone gli oggetti UIElement figlio. La proprietà content è Children.
Le classi seguenti ereditano dalla classe Panel e usano il relativo modello di contenuto:
Per ulteriori informazioni, vedere la Panoramica dei pannelli .
Classi che influiscono sull'aspetto di un oggetto UIElement
La classe Decorator applica effetti visivi su o intorno a un singolo elemento figlio UIElement. La proprietà del contenuto è Child. Le classi seguenti ereditano da Decorator e usano il relativo modello di contenuto:
La figura seguente mostra un TextBox che è decorato con un Border attorno.
TextBlock con un bordo
Classi che forniscono feedback visivo su un UIElement
La classe Adorner fornisce segnali visivi a un utente. Ad esempio, usare un Adorner per aggiungere maniglie funzionali agli elementi o fornire informazioni sullo stato di un controllo. La classe Adorner fornisce un framework per consentire la creazione di ornamenti personalizzati. WPF non fornisce decoratori implementati. Per ulteriori informazioni, vedere Panoramica sugli abbellimenti.
Classi che consentono agli utenti di immettere testo
WPF fornisce tre controlli principali che consentono agli utenti di immettere testo. Ogni controllo visualizza il testo in modo diverso. Nella tabella seguente sono elencati questi tre controlli correlati al testo, le relative funzionalità quando visualizzano testo e le relative proprietà che contengono il testo del controllo.
Controllo | Il testo viene visualizzato come | Proprietà contenuto |
---|---|---|
TextBox | Testo normale | Text |
RichTextBox | Testo formattato | Document |
PasswordBox | Testo nascosto (i caratteri sono mascherati) | Password |
Classi che visualizzano il testo
È possibile usare diverse classi per visualizzare testo normale o formattato. È possibile usare TextBlock per visualizzare piccole quantità di testo. Se si desidera visualizzare grandi quantità di testo, usare i controlli FlowDocumentReader, FlowDocumentPageViewero FlowDocumentScrollViewer.
L'TextBlock ha due proprietà del contenuto: Text e Inlines. Quando si desidera visualizzare testo che usa una formattazione coerente, la proprietà Text è spesso la scelta migliore. Se si prevede di utilizzare una formattazione diversa in tutto il testo, utilizzare la proprietà Inlines. La proprietà Inlines è una raccolta di oggetti Inline, che specificano come formattare il testo.
Nella tabella seguente sono elencate le proprietà dei contenuti per le classi FlowDocumentReader, FlowDocumentPageViewere FlowDocumentScrollViewer.
Controllo | Proprietà del contenuto | Tipo di proprietà del contenuto |
---|---|---|
FlowDocumentPageViewer | Documento | IDocumentPaginatorSource |
FlowDocumentReader | Documento | FlowDocument |
FlowDocumentScrollViewer | Documento | FlowDocument |
Il FlowDocument implementa l'interfaccia IDocumentPaginatorSource; pertanto, tutte e tre le classi possono accettare un FlowDocument come contenuto.
Classi che formattano il testo
TextElement e le relative classi consentono di formattare il testo. Gli oggetti TextElement contengono e formattano il testo negli oggetti TextBlock e FlowDocument. I due tipi principali di oggetti TextElement sono Block elementi e Inline elementi. 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 a cui vengono applicate. Ogni TextElement ha un proprio modello di contenuto. Per altre informazioni, vedere Cenni preliminari sul modello di contenuto textElement .
Vedere anche
.NET Desktop feedback