Archive

Archive for the ‘C#’ Category

Disabilitare il blocco automatico su Windows Phone

novembre 19, 2012 51 commenti

Ciao! Oggi ho fatto un’app per la quale avevo la necessità di disabilitare il lock automatico del device dato che non ci interagivo per molto… Ecco il codice per disabilitare il blocco:

PhoneApplicationService phoneAppService = PhoneApplicationService.Current;
phoneAppService.UserIdleDetectionMode = IdleDetectionMode.Disabled;

Ricordatevi di aggiungere la relativa using:

using Microsoft.Phone.Shell;

Happy coding! 🙂

Categorie:C#, Windows Phone

MonoGame: XNA per Windows 8 è possibile!

ottobre 11, 2012 4 commenti

Ciao a tutti dev! Ritorno dopo un periodo di assenza per scrivere un articolo (spero) utile… Avete mai sognato di sviluppare un gioco per Windows 8 con XNA? Si? Bene, anche io. Peccato che XNA per Win8 non sia supportato 🙂 Ragion per cui bisogna vagliare altre soluzioni; sto parlando in particolare di MonoGame per .NET, che vi consente di avere una versione alternativa di XNA.

In rete si trova molta confusione al riguardo, sopratutto sul sito ufficiale del progetto. Vi riporto qui una guida (molto semplice) alla creazione del primo progetto con MonoGame.

Ecco i requisiti:

Dopo aver fatto ciò, bisognerà incollare il template MonoGame nella cartella templates di VS:

“%UserProfile%\My Documents\Visual Studio 2012\Templates\ProjectTemplates\Visual C#\”

image

Una volta che avete completato questa semplice procedura, potrete aprire VS e vi ritroverete il progetto sample di MonoGame:

image

Una volta che avrete il vostro progetto, dovrete aggiungere le referenze a MonoGame.Framework.Windows8.dll (reperibile nella cartella che avete scaricato in precedenza MonoGame Binary):

image

Una volta completato anche questo ultimo passaggio, provate a compilare; funziona! Ecco il vostro primo (mini) gioco! Esattamente come per XNA vi ritroverete il famoso sfondo azzurrino; ora sta a voi e alla vostra fantasia creare dal nulla il vostro capolavoro ludico!

Happy coding 🙂

Salvate una lista di oggetti nell’IsolatedStorage

agosto 6, 2012 8 commenti

Ciao!

Ecco una comoda classe che ci permette di salvare una lista di oggetti in un file all’interno dell’IsolatedStorage di Windows Phone:

public class IsoStoreHelper
    {
        private static IsolatedStorageFile _isoStore;
        public static IsolatedStorageFile IsoStore
        {
            get { return _isoStore ?? (_isoStore = IsolatedStorageFile.GetUserStoreForApplication()); }
        }

        public static void SaveList<T>(string folderName, string dataName, ObservableCollection<T> dataList) where T : class
        {
            if (!IsoStore.DirectoryExists(folderName))
            {
                IsoStore.CreateDirectory(folderName);
            }

            string fileStreamName = string.Format("{0}\\{1}.dat", folderName, dataName);

            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileStreamName, FileMode.Create, IsoStore))
            {
                DataContractSerializer dcs = new DataContractSerializer(typeof(ObservableCollection<T>));
                dcs.WriteObject(stream, dataList);
            }
        }

        public static ObservableCollection<T> LoadList<T>(string folderName, string dataName) where T : class
        {
            ObservableCollection<T> retval = new ObservableCollection<T>();

            string fileStreamName = string.Format("{0}\\{1}.dat", folderName, dataName);

            using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileStreamName, FileMode.OpenOrCreate, IsoStore))
            {
                if (stream.Length > 0)
                {
                    DataContractSerializer dcs = new DataContractSerializer(typeof(ObservableCollection<T>));
                    retval = dcs.ReadObject(stream) as ObservableCollection<T>;
                }
            }

            return retval;
        }

Bisogna ricordarsi di aggiungere una reference a System.Runtime.Serialization.

Per utilizzare questa classe, ecco un esempio:

      ObservableCollection<Prova> lista = new ObservableCollection<Prova>();
      ObservableCollection<Prova> listaTest = new ObservableCollection<Prova>();

      lista.Add(new Prova(){ nome = "Sergio" });
      lista.Add(new Prova(){ nome = "Fabio" });
      lista.Add(new Prova(){ nome = "Erika" });

      IsoStoreHelper.SaveList<Prova>("prova", "prova", lista);
      listaTest = IsoStoreHelper.LoadList<Prova>("prova", "prova");

Happy Coding!

Categorie:C#, Windows Phone

MessageBox in Windows 8… Dove sono finite?

giugno 8, 2012 45 commenti

Ciao!

Oggi vorrei parlarvi delle famigerate MessageBox! Chi non si è spaventato nel non trovarle alzi la mano 🙂 Per fortuna non sono sparite, ma sono ben nascoste… E han cambiato nome! Ora è necessario ridefinire il tipo del metodo chiamante come async e inserire questo codice:

private async void Messaggino()
{
         MessageDialog msgBox = new MessageDialog("Ciao", " Messaggio di prova 🙂 "); 
         await msgBox.ShowAsync();
}
Categorie:C#, Windows 8

Storage in Windows 8

giugno 8, 2012 4 commenti

Oggi volevo usare lo storage di Win8 per una mia app, e mi sono chiesto se ci fosse il famoso IsolatedStorage già visto in WP… Ottima notizia: non c’è! C’è, però, una cosa migliore: Windows.Storage 🙂

Ecco un pezzo del mio codice:

        private void SetRecord(string key, string value)
        {
            if (Windows.Storage.ApplicationData.Current.LocalSettings.Values.ContainsKey(key))
            {
                if (Windows.Storage.ApplicationData.Current.LocalSettings.Values[key].ToString() != null)
                {
                    Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] = value;
                }
            }
            else
            {
                Windows.Storage.ApplicationData.Current.LocalSettings.CreateContainer(key, ApplicationDataCreateDisposition.Always);

                if (Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] == null)
                {
                    Windows.Storage.ApplicationData.Current.LocalSettings.Values[key] = value;
                }
            }
        }
Categorie:C#, Windows 8