Content Model di WPF
Ispirato da un post dell'amico Igor, ho deciso di scrivere qualcosa su questa nuova e potente funzionalità di Windows Presentation Foundation.
La proprietà Control esposta da tutti i controlli che derivano dalla classe ContentControl è, innanzitutto, di tipo object (a differenza di Caption nelle WindowsForms che è di tipo stringa) e contiene quello che il controllo deve visualizzare.
In questo modo possiamo utilizzare la proprietà con una semplice stringa:
Button btn = new Button();
btn.Content = "Io conosco il gallo mannaro";
che con XAML verrebbe:
<Button>Io conosco il gallo mannaro</Button>
Oppure, per fare qualcosa di più carino, possiamo impostare impostare come Content un'immagine:
<Button>
<Image Source="c:\images\gallo.jpg" Width="16" Height="16"/>
</Button>
Con questa semplice operazione abbiamo già creato un pulsante personalizzato con un'immagine.
Un limite della property Content è che può contenere un solo oggetto e, ad esempio, l'oggetto Window nella stragrande maggioranza dei casi deve contenere più controlli.
In questo caso ecco venirci in aiuto i controlli di tipo Panel come il controllo Grid, Canvas, DockPanel, WrapPanel, etc.... che, oltre a contenere più controlli, si occupano del loro posizionamento automatico.
Approfondimenti: Content Model Overview