Windows Phone
There are 12 entries for the tag
Windows Phone
If you’re a Windows Phone 7 developer you’ll probably know that with ‘Mango’ it is now possible to persist data using a local database based on SQL Server CE whose data files are stored inside isolated storage, this is a quick overview of how to save and load data on a Windows Phone 7.1 application. First of all, if you, like me, gave Linq2Sql a change when it came out you’ll probably happy to know that your investment has gone totally lost from Entity Framework advent since all database interaction is based on Linq2Sql. In...
Sometimes you might need to play multiple sounds at once (games are just one example) and as stated into documentation here: http://msdn.microsoft.com/en-us/library/ff426928(VS.96).aspx you can have only one MediaElement on a page, so: how do I play multiple sounds at the same time? If you can afford to use plain 16 bit mono wav files you can use XNA’s SoundEffect class in just a few steps: Add a project reference to Microsoft.Xna.Framework assembly. Add the wav files to your project using Content as default build action (don’t forget that Resource is a load time performance...
When using the Windows Phone emulator pressing the Pause button activates the hardware keyboard that you can use in place of the on-screen keyboard emulator to interact with the application. A little-known detail is that if you turn on this feature the OrientationChange event is no longer generated until you restore the software keyboard back (this is by design) This detail has made me spend a moment of panic yesterday so I wanted to share it. Technorati Tags: Windows Phone,OrientationChangedEvent
The Panorama control is certainly one of the most interesting controls available on Windows Phone 7 toolset, unfortunately it has a defect that is evident during Tombstoning or when you navigate to a page containing a Panorama and try to set its initial view to an item other than the first one. To better understand what the problem is, let’s start with this page: that has following code associated in order to properly handle its tombstoning: protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e){ base.OnNavigatedFrom(e); this.State["InitialIndex"] = MyPano.SelectedIndex;}protected override...
Il controllo Panorama è sicuramente tra quelli più d’impatto dell’intero toolset di Windows Phone 7, sfortunatamente il controllo ha un difetto che si evidenzia durante il tombstoning oppure quando volete navigare verso una pagina che contiene un Panorama posizionandolo verso un PanoramaItem diverso dal primo. Per capire meglio il problema supponiamo di avere questa pagina: e di avere utilizzato questo codice per gestirne correttamente il tombstoning: protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e){ base.OnNavigatedFrom(e); this.State["InitialIndex"] = MyPano.SelectedIndex;}protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e){ base.OnNavigatedTo(e); if (this.State.ContainsKey("InitialIndex"))...
Non tutti i launcher e/o Choosers causano il tombstoning dell’applicazione, ad esempio lanciano un EmailComposerTask l’applicazione non viene disattivata. I Launcher e Chooser che causano sempre il tombstoning dell’applicazione sono: WebBrowserTask MarketplaceDetailTask MarketplaceHubTask MarketplaceReviewTask MarketplaceSearchTask SaveEmailAddressTask SavePhoneNumberTask SearchTask SmsComposeTask Quelli che “potrebbero” sono: PhotoChooserTask CameraCaptureTask MediaPlayerLauncher EmailAddressChooserTask PhoneNumberChooserTask Multiplayer...
Una delle domande più ricorrenti relative a Windows Phone 7 è: Esiste la possibilità di identificare in maniera univoca un device? (attenzione: ho scritto device, non utente…) la risposta è si, attraverso la classe DeviceExtendedProperties la quale espone una lunga serie di informazioni interessanti come Memoria totale, Memoria occupata, Versione firmare e hardware etc… Personalmente per comodità mi sono wrappato tutto in una classe DeviceInformation e ho convertito i 20 bytes che identificano il device in un unsigned integer, attenzione che la chiamata ritorna un UnAuthorizedAccessException se non avete attivato ID_CAP_IDENTITY_DEVICE in WMAppManifest.xml ...
Ci sono cose che dicono tutti, (BTW: Lo sapete che sono usciti I tools in RTM vero?) e cose che invece ti fanno dannare e che succedono solo a te… In ogni caso: Se salvando lo stato della vostra applicazione prima del tombstoning vi trovate con questo meraviglioso errore: evidentemente avete superato lo spazio disponibile per lo state che, per la cronaca , equivale a: 2MB per ogni Pagina e 4MB per l’intera applicazione. http://msdn.microsoft.com/en-us/library/microsoft.phone.controls.phoneapplicationpage.state(v=VS.92).aspx Soluzioni? Salvare meno dati oppure usare IsolatedStorage perdendo però in prestazioni. Certo, un messaggio leggermente...
Anche se sviluppare un applicazione su Windows Phone 7 è, direi al 80%, del tutto simile allo sviluppo di un applicazione Silverlight 3.0, non dobbiamo dimenticarci di quel 20% che è sicuramente quello destinato a farci penare prima del rilascio, in quel 20% oltre al Tombstoning aggungerei sicuramente l’aspetto performances perchè, non dimentichiamolo, abbiamo comunque a che fare con un dispositivo e non con un personal computer. Un esempio dove un dettaglio può far la differenza è la modalità di embedding di eventuali risorse all'interno di un progetto WP7. Da questo punto di vista gli...
Le applicazioni Windows Phone 7 vengono eseguite nella propria sandbox e non hanno accesso diretto alle funzionalità del telefono come ad esempio: l’elenco dei contatti, l’invio degli SMS oppure l’invio di una semplice telefonata. Per far questo bisogna utilizzare delle opportune API definite nella documentazione col nome di Launchers e Choosers, già dal nome dovreste intuire che queste sono a tutti gli effetti delle applicazioni built-in (non a caso le relative classi stanno in Microsoft.Phone.Task) le quali si differenziano dal fatto che i Choosers, a differenza dei Launchers, possono ritornare delle informazioni all’applicazione chiamante. Nella...
In Windows Phone 7 ogni singola PhoneApplicationPage è automaticamente ospitata all’interno di un PhoneApplicationFrame che viene impostato come RootVisual allo startup dell’applicazione all’interno del metodo CompleteInitializePhoneApplication presente in App.xaml.cs (l’evento RootFrame.Navigated scatta dopo che lo SplashScreen è stato sostituito con la pagina iniziale dell’applicazione) Visto che PhoneApplicationFrame estende la classe Frame introdotta in Silverlight 3.0 la navigazione da una pagina all’altra avviene esattamente secondo la stessa modalità, quindi per navigare da MainPage a AnotherPage è sufficiente usare la classe NavigationService. private void OnClick(object sender, RoutedEventArgs e){ NavigationService.Navigate(new Uri("/AnotherPage.xaml", UriKind.Relative));}
Anche in...
Una delle prime regole quando si lavora con WPF/SL/WP7 è organizzare le risorse in modo tale che sia immediato capire dove si trovano gli stili,templates e brushes. Forti di questa convizione, con Blend la cosa è spaventosamente semplice supponiamo di voler definire il colore di sfondo di un Border: Trasciniamo il Border nell’artboard e, col border selezionato, usiamo il menu Object->Edit Style->Create Empty Rispettando l’esigenza di organizzazione delle risorse, indichiamo a Blend di memorizzare lo style in un nuovo ResourceDictionary Styles.xaml: Fatto questo, all’interno della definizione dello Style cambiamo il colore...