Technology Experience
.NET World

Qualche info su “Silverlight for Windows Phone 7 Toolkit”–November 2010

Il toolkit in oggetto è disponibile su CodePlex a questo indirizzo. E’ un componente molto interessante, oserei dire quasi indispensabile, per chiunque voglia sviluppare applicazioni per Windows Phone 7. Oggi pomeriggio ho dato un’occhiata ai vari controlli aggiuntivi; davvero stupefacente, perchè praticamente a costo zero usate controlli un po’ più in linea con quelle che sono le guidelines, e vi uniformate all’interfaccia utente che WP7 mette già a disposizione.

Controllo ToggleSwitch
In pratica, è una CheckBox standard ri-templizzata, in modo tale da apparire come un interruttore/switch. In pratica, è lo stesso controllo che con WP7 vedete sotto Impostazioni –> toni & suonerie, per attivare le suonerie e la vibrazione. Dal punto di vista developer, è una vera e propria CheckBox, quindi dispone della proprietà IsChecked che può essere messa in binding con una qualsiasi proprietà booleana, etc. etc.

ToggleSwitch

<ctl:ToggleSwitch 
    Header=”Mantieni centrato l’aereo”
    IsChecked=”True” />

Notare che per creare un ToggleSwitch come si deve, bisogna usare la proprietà Header per dare un titolo, che appare in un carattere più piccolo. Non usate la proprietà Content, che invece reimposta quello che appare quando si sposta la levetta. Per default, il ToggleSwitch mostra On/Off. Come tutti i controlli, anche questo può essere personalizzato come si vuole, con colori, template, bordi, font, etc. etc.

Controllo DatePicker
Come dice il nome, è un controllo che visualizza un DateTime nel formato in cui volete voi. Cliccandoci sopra, il controllo naviga in una pagina che permette di impostare una nuova data, scegliendo giorno/mese/anno. E’ esattamente il controllo che WP7 vi fa usare quando reimpostate l’ora di sistema.

DatePicker01

DatePicker02

<ctl:DatePicker
    ValueStringFormat=”{}{0:d}”
    Header=”Data di nascita” />

Ancora una volta, ho utilizzato la proprietà Header per dare un titolo al controllo. Ho usato la proprietà ValueStringFormat per specificare una stringa di formattazione per la data. Specificare “d” significa data in formato breve; specificare “D” significa data in formato esteso. Notare che la Culture con cui viene visualizzata la data dipende dalla lingua del sistema operativo (oppure quella che avete messo in Impostazioni –> paese e lingua). La proprietà PickerPageUri – che non ho avuto tempo di testare – dovrebbe servire ad impostare la pagina XAML per scegliere la data – nel caso in cui quella predefinita non vi andasse bene (ad esempio, notare nell’immagine qui sopra il titolo della pagina “Choose Date”, nonostante l’emulatore stia girando in italiano).

Controllo TimePicker
Tutto come sopra, però per l’ora.

TimePicker01

TimePicker02

<ctl:TimePicker
    ValueStringFormat=”{}{0:t}”
    Header=”Imposta l’ora corrente” />

 

TransitionService – transizioni ed effetti durante la navigazione delle pagine
Tutto molto semplice anche in questo caso. In pratica, voi utilizzate la solita classe NavigationService per spostarvi da una pagina all’altra, ma un engine dietro le quinte le fa apparire con diversi effetti: rotazione, slider, etc. etc. Il tutto è molto semplice e naturale:

<ctl:TransitionService.NavigationInTransition>
    <ctl:NavigationInTransition>
        <ctl:NavigationInTransition.Backward>
            <ctl:RollTransition />
        </ctl:NavigationInTransition.Backward>
        <ctl:NavigationInTransition.Forward>
            <ctl:RollTransition />
        </ctl:NavigationInTransition.Forward>
    </ctl:NavigationInTransition>
</ctl:TransitionService.NavigationInTransition>

 

Il namespace ctl è dichiarato come:

xmlns:ctl="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

 

Il blocco XAML qui sopra va inserito appena dopo il nodo <phone:PhoneApplicationPage>. In pratica, si specifica l’effetto di transizione da applicare quando si raggiunge questa pagina, in ambedue i sensi (cioè…sia attraverso un back che un forward). Ovviamente si può anche specificare l’effetto quando si lascia questa pagina: è sufficiente usare NavigationOutTransition al posto di NavigationInTransition. Gli effetti disponbili attualmente sono:

  • RollTransition
  • RotateTransition
  • SlideTransition
  • SwiveTransition
  • TurnstileTransition

L’ultimo accorgimento per far funzionare le transizioni è andare a toccare il code-behind nel file App.xaml.cs:

private void InitializePhoneApplication()
{
    if (phoneApplicationInitialized)
        return;
    RootFrame = new TransitionFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;
    phoneApplicationInitialized = true;
}

 

L’oggetto RootFrame, che è dichiarato come PhoneApplicationFrame, deve essere creato con il tipo TransitionFrame, altrimenti nisba.

Ovviamente il tipo TransitionFrame è un tipo dichiarato e definito nell’assembly Microsoft.Phone.Controls.Toolkit, ed eredita da PhoneApplicationFrame.

AutoCompleteBox

A metà strada tra una TextBox ed una ComboBox, controllo imperdibile se volete facilitare la scelta di una voce da un elenco predefinito. Purtroppo il mio tempo per questa sera terminato, lascio approfondire a voi la cosa!

Smile

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.