2009-02-22 13 views
5

Sono confuso con l'apprendimento di WPF. Vedo ControlTemplate usato per determinare come appare ogni elemento in una listbox. Non è quello per cui viene usato ItemTemplate nelle listbox? Qual è la differenza?ItemTemplate vs ControlTemplate

+0

Correlato: [Differenza tra stile e ControlTemplate] (http://stackoverflow.com/questions/6136200/difference-between-style-and-controltemplate) – Helen

risposta

10

Un ControlTemplate ti permette di modificare l'aspetto & feel dei controlli esistenti, ad esempio, creare un pulsante di tutti i giorni sembrano bottoni di vetro lucido della barra delle applicazioni di Vista o fare una linguetta il controllo sembra il nuovo nastro Office 2007.

L'idea è che il controllo contiene solo il comportamento e la ControlTemplate contiene l'aspetto & feel - in modo da un pulsante è "qualcosa si fa clic su" non "un rettangolo con un certo effetto 3d è possibile fare clic su".

È possibile sostituire il modello di controllo ListBox per ottenere qualcosa come una casella di riepilogo con angoli arrotondati o barre di scorrimento personalizzate.

Un DataTemplate, d'altra parte, consente di controllare il modo in cui le righe di dati visualizzate all'interno di caselle di riepilogo (e altri controlli simili), i modelli di dati vengono utilizzati per specificare elementi come "Mostra cognome, oltre a una virgola e il primo nome - e il cognome dovrebbe essere in grassetto e il nome dovrebbe essere verde se inizia con un A ".

E proprio per completezza c'è anche una classe ItemsPanelTemplate che viene utilizzata per modificare il layout interno di una casella di riepilogo: il libro WPF di Charles Petzold ha un esempio di utilizzo per fare in modo che una normale casella di riepilogo visualizzi gli elementi in una cerchia.

3

Un ItemTemplate descrive come eseguire il rendering dell'elemento di dati in una casella di riepilogo (ad esempio, è possibile che la casella di riepilogo sia vincolata a un elenco: ItemTemplate consente di specificare come eseguire il rendering di Foo). Un ItemTemplate è un DataTemplate.

Un ControlTemplate descrive come il ListBox stesso dovrebbe essere reso

+2

grazie per l'indicazione ItemTemplate è un DataTemplate – Felix

Problemi correlati