Una delle cose che saltano più all'occhio quando si vede - anche da semplice utente - Windows Presentation Foundation all'opera, è il fatto che i controlli come il Button non vengono più renderizzati sulla UI con una semplice caption, una stringa insomma, ma in modo radicalmente diverso. Affinchè un controllo possa renderizzare un qualcosa, è necessario che questo qualcosa derivi dalla classe ContentControl del Framework 2.0. Gran parte dei controlli che utilizziamo tutti i giorni derivano proprio da questa classe, come ListBox, CheckBox e, magia delle magie, anche Window. Questo vuol dire che d'ora in poi, con WPF almeno, un Button può apparire sulle Page o sulle Window di WPF con un contenuto molto più complesso rispetto a quanto siamo abituati. Il contenuto inoltre è interattivo: se un Button si renderizza come una ListBox, per esempio, tale ListBox è a tutti gli effetti "funzionante" in ogni sua parte.
Un piccolo esempio in XAML è obbligatorio. :-)
<Button Width="100" Height="100">
<Image Source="myLogo.jpg">
</Button>
Il piccolo estratto di codice XAML qui sopra renderizza il Button usando un'immagine JPG. Nulla di particolare, insomma. Sto facendo qualche esperimento per poter renderizzare il Button usando la mia RollerLabel di cui ho parlato qualche tempo fa.