Da quando è uscito il .NET Framework 3.0 mi sono rimesso intensamente a provarlo e sicuramente una cosa la studio meglio quando lo applico a qualcosa. A parte un'applicazione che sto scrivendo interamente in WPF e che mantengo ancora segreta :-), ho sviluppato quindi un nuovo controllo in WPF. L'idea è partita dopo che ho installato Ubuntu (non ditelo al mio capo) e provato, senza successo, XGL. Va beh, con Linux, sono un po' una schiappa, ma a forza di sudo e nano dopo un po' ho lasciato perdere.
Mi è piaciuto comunque l'effetto del cubo 3D che ruota e mostra i desktop e che sicuramente colpisce chiunque. Perciò ho creato dapprima quattro facce all'interno di un Viewport3D che ho inserito all'interno di una mia classe denominata Selector3D.
Poi ho creato un pannello custom che mostrasse un item per volta e che scompare al variare dell'indice corrente, per poi dare alle quattro facce del cubo un material basato su un VisualBrush dell'item corrente e di quello che lo precede e lo segue. Il tutto condito con un'animazione che allontana la camera, ruota il cubo sull'asse di 90 gradi e riavvicina la camera.
La classe Selector3D che ho creato eredita inoltre dall'oggetto primitivo Selector e supporta quindi molteplici items, binding, template, styling ecc e si usa quindi allo stesso modo di una ListBox, come per esempio:
<c:Selector3D x:Name="tab" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource cube}"> </c:Selector3D>
Il risultato catturando l'animazione è il seguente, dove ho caricato una struttura rappresentante i mesi dell'anno con i loro rispettivi giorni (in parte è presente una ListBox per saltare un mese con l'altro).
Devo dire che non è stato banale, perché di 3D non sono espertissimo e il sistema di layout e containers degli items è abbastanza complesso, ma sicuramente è stato un bel esercizio.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Visual Studio 11 beta: le novità di WPF 4.5, l'1 marzo 2012 alle 19:32
- Spettro audio con WPF, il 28 novembre 2007 alle 23:24
- Controllo WPF: AdvancedListBox, il 24 ottobre 2007 alle 19:24
- Multithreading WPF nel Binding, il 21 ottobre 2007 alle 23:40
- Com'è fatto il formato BAML di WPF?, il 12 settembre 2007 alle 21:31
- WPF attached properties + extension methods, il 10 giugno 2007 alle 22:12