WP7
My adventures in the Windows Phone 7 world
In questi giorni (o meglio, notti) sto aggiornando la mia app WorldCam per WP7 all’ultima versione dei tools (Mango). Con l’occasione ho riscritto e ottimizzato parte del programma, soprattutto per quanto riguarda il download delle immagini. Per testare le modifiche effettuate, ho pensato di utilizzare Fiddler per controllare il traffico dati. Per fare ciò ho seguito questa semplice procedura: Lanciare Fiddler ed abilitare le connessioni remote su Options-> Connections. Eventualmente modificare la porta sulla quale Fiddler si metterà in ascolto. Sul device WP7, nelle impostazioni di rete, settare come Proxy l’indirizzo...
Che il vostro progetto sia sviluppato in WPF, Silverlight o Silverlight per WP7 un aspetto fondamentale (direi quasi un requisito non funzionale) da soddisfare è il supporto ai designer di Visual Studio/Blend, identificato con il termine “Blendability”. Anche se può sembrare banale, in realtà la faccenda si complica man mano che i nostri ViewModel prendono forma e utilizziamo IoC. In soldoni il Designer non è in grado di rappresentare graficamente una View collegata ad un ViewModel di questo tipo: public MainViewModel(IPersonService personService) { People = new ObservableCollection<Person>(personService.GetAll()); ShowPersonDetailCommand = new RelayCommand(PerformShowPersonDetail, CanShowPersonDetail);...
E’ stato rilasciato il template di SketchFlow per Windows Phone 7.
In questo modo potrete facilmente creare mockup utilizzando pivot, panorama, datetime picker, map, application bar, behaviors per simulare la navigazione e molto altro…
Per iniziare a creare prototipi delle vostre app, il sito da visitare è http://wp7sketchflow.codeplex.com, dove troverete maggiori info e l’installer msi.
Attenzione: per usare il template è necessario avere installato Expression Blend 4 con SketchFlow e i Mango developer tools per Windows Phone.
Happy Sketching!
In una mia applicazione utilizzo l’oggetto WebClient per effettuare chiamate REST ad un web service che mi restituisce un XML con il risultato.
Una particolarità è che, a parità di URL, l’XML risultante cambia (es: un metodo GetRandomProducts).
Fin qui niente di strano..tuttavia WebClient utilizza un meccanismo di cache interno in base all’indirizzo e non ci sono proprietà per disabilitare tale comportamento.
L’unica soluzione che ho trovato è passare in QueryString un parametro random (es: un GUID).
Mi sono quindi creato un extension method che qui riporto.
public static class WebClientExtensions
{
...
Se sviluppate applicazioni per Window Phone 7 saprete che è necessario specificare nel file WMAppManifest.xml tutte le funzionalità del device che la nostra applicazione andrà ad utilizzare. La validità di quanto indicato informerà l’utente prima del download, e verrà inoltre controllata durante il processo di pubblicazione sul Marketplace. Per identificare velocemente quali funzionalità sono necessarie per il corretto funzionamento della nostra app è disponibile il CapabilityDetection, installato assieme all’SDK. Per comodità mi sono creato quindi uno shortcut tra i tool di Visual Studio in questo modo: Title: WP7 Capability Detection Command:...
Se avete provato a sviluppare applicazioni Silverlight per Windows Phone 7 (derivante in gran parte su Silverlight 3), avrete notato che il controllo Button non ha una proprietà Command, utilizzata spessissimo se sviluppate le vostre applicazioni con l’ormai famoso pattern MVVM, e che consiglio di utilizzare per tutte le applicazioni “non banali” (leggi “non demo” ).
Fortunatamente, comunque, l’infrastruttura per gestire il Commanding è supportata e perfettamente funzionante. Infatti potete tranquillamente creare i vostri ViewModel esponendo proprietà di tipo ICommand. Come fare però ad agganciare i controlli della UI a queste proprietà?
Per questo proposito ci corre in aiuto il Behaviour...
Sul blog di Daniel Egan, MVP nonché Microsoft Regional Director, c’è un interessante post che illustra come salvare un’immagine nella Media Library di Windows Phone 7.
La procedura illustrata è abbastanza chiara ed è commentata in ogni passaggio significativo, per cui non mi soffermerò su di essa. Nel caso abbiate un oggetto BitmapImage caricato con la vostra immagine (v. esempio) tutto funzionerà tranquillamente.
Tuttavia un oggetto BitmapImage può essere creato passando al costruttore un oggetto URI che identifica la risorsa, sia essa remota (caricata da web) o locale (espressa tramite Pack Uri). In questo caso, però, verrà sollevata un’eccezione di tipo NullReferenceException:...
Volevo segnalarvi che, da qualche giorno, è disponibile GRATUITAMENTE un e-book inerente la programmazione per Windows Phone 7: “Programming Windows Phone 7”, di Charles Petzold. E’ un bel “librone” con più di mille pagine che va a toccare sia lo sviluppo con Silverlight che quello con XNA. Ecco il link: Programming Windows Phone 7 Credo proprio che ci darò un occhio! Alla prossima