Technology Experience
.NET World

Spunti di Adaptive Code con UWP

Quando parliamo di Universal Windows Platform parliamo per diretta conseguenza di Windows 10, e quindi di tutti i possibili hardware capaci di far girare Windows 10, dallo smartphone a tutti gli altri possibili ed immaginabili dispositivi. E’ importante applicare quindi correttamente concetti come Adaptive UI (ovvero un’interfaccia utente capace di adattarsi e di scalare in base alla risoluzione ed allo schermo correnti), ma anche di Adaptive Code, ovvero di codice c# che capisca su quali famiglia di dispositivi ci troviamo e di adattarsi di conseguenza.

Per quale motivo? Ce ne sono tanti, a dir la verità.

Facciamo una cosa semplice. Supponiamo di creare ed istanziare una MessageDialog:

var dialog = new MessageDialog(
string.Format("Aprire il link {0} ?", url),
"Apertura sito Web");
dialog.Commands.Add(
new UICommand { Label = "&Sì", Id = 0 });
dialog.Commands.Add(
new UICommand { Label = "&No", Id = 1 });
dialog.DefaultCommandIndex = 0;
dialog.CancelCommandIndex = 1;
var res = await dialog.ShowAsync();
Notare che ho impostato le label come &Sì e &No, in modo tale che da tastiera sia possibile premere ALT+S e ALT+N per rispettivamente premere Sì oppure no. La tastiera però su smartphone non ce l’abbiamo, quindi questa è una feature che non è supportata. Purtroppo, con la build corrente di Windows 10 for Mobile quelle & commerciali compaiono comunque, con uno sgradevole effetto per l’utente finale. La soluzione è intercettare e capire su quale famiglia di device ci troviamo a run-time, ed adattarci in base allo scenario.
Possiamo capire su quale famiglia di dispositivi Windows 10 ci troviamo con questa linea di codice:
string family = Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily;

Il valore restituito è una semplice stringa. E quindi possiamo scrivere:

string family = Windows.System.Profile
.AnalyticsInfo.VersionInfo.DeviceFamily;
string yesLabel = "Sì";
string noLabel = "No";

if (family == "Windows.Desktop")
{
yesLabel = "&Sì";
noLabel = "&No";
}

Windows.Desktop è il valore che quella DeviceFamily assume quando il codice gira sotto l’ambiente desktop (quindi PC di varia natura). Il valore diventa Windows.Mobile se il codice sta girando sotto smartphone.

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.