AntonioPelleriti.it [aka z9]

I code, therefore I am

NAVIGATION - SEARCH

Articolo: sviluppare app di disegno su Windows 8.x

Su IoProgrammo numero 189 (Gennaio/Febbraio 2014), trovate il mio articolo sulla programmazione di una mini applicazionie di disegno utilizzando le funzionalità touch di Windows 8. 

Titolo di copertina:

Tocco da DESIGNER
Programma un'app di disegno che sfrutta le funzioni touch di sistema

 

 

 

L'operatore di Null Coalescing in C#

L'operatore ?? è detto operatore di null coalescing, ed è molto utile in una serie di situazioni permettendo di scrivere codice più elegante e ristretto in C#.

Quante volte vi è capitato di dover scrivere un blocco if per controllare se una variabile è null, ed agire di conseguenza scegliendo un valore di default da assegnare alla stessa variabile? Ecco un esempio:

string name;
if(str!=null)
{
 name=str;
}
else name="senza nome";

 

Probabilmente starete pensando: "beh c'è sempre l'operatore ternario!", ed in effetti un altro modo di scrivere lo stesso blocco di codice può essere il seguente:

string name= (str!=null) ? str: "senza titolo";

Ma l'operatore di null coalescing, introdotto già con le specifiche 2.0 ma spesso ignorato da chi si avvicina al mondo della programmazione in C#, consente di essere ancora più concisi.

Esso verifica se l'operando a sinistra è diverso da null, ed in tal caso restituisce il valore dell'operando sinistro stesso. In caso contrario invece restituisce l'operando destro:

string name= str ?? "senza titolo";

L'operatore funziona anche con tipi valore, per esempio nel caso seguente, se il valore della variabile nullableInt è null, viene assegnato alla variabile i il valore 1:

int? nullableInt=null;
int i= nullableInt ?? 1; // i vale 1

 

Se invece nullableInt possiede un valore, esso viene assegnato alla variabile:

int? nullableInt=123;
int i= nullableInt ?? 1;  // i vale ora 123

Build 2013, preview di Windows 8.1, Visual Studio 2013 e .NET Framework 4.5.1

Durante la prima giornata della conferenza Build 2013, grandi novità annunciate per noi sviluppatori .NET!

Oltre alla preannunciata preview di Windows 8.1 (http://windows.microsoft.com/it-it/windows-8/preview) è disponibile per il download anche la nuova versione 2013 Preview di Visual Studio, per iniziare da subito a provare le novità del nuovo sistema operativo.

http://www.microsoft.com/visualstudio/eng#2013-preview

Anche in versione express fra l'altro!

 

Per quanto riguarda invece il .NET Framework annunciata la versione 4.5.1 preview, le cui novità sono riassunte al link

http://blogs.msdn.com/b/dotnet/archive/2013/06/26/announcing-the-net-framework-4-5-1-preview.aspx

di cui, dal punto di vista della produttività dello sviluppatore, possiamo riassumere il contenuto con:

  • X64 edit and continue
  • Async-aware debugging
  • Managed return value inspection
  • ADO.NET idle connection resiliency
  • Improvements in Windows Store app development

Mi piace sottolineare le novità introdotte per lo sviluppo di interfacce grafiche XAML, con un sacco di miglioramenti che ci faranno risparmiare un sacco di tempo, per esempio che ne pensate di poter utilizzare l'intellisense nelle risorse (tipo {StaticResource ...}) o di poter andare alla definizione di un elemento XAML con un F12 (il classico Go to Definition). Qui un bel riassunto direttamente dalla conferenza http://www.irisclasson.com/2013/06/26/build-2013-what-is-new-in-xaml-highlights/

 

Articolo: Instagram su Windows Phone fatto in casa

Su IoProgrammo numero 186 (Luglio/Agosto 2013), trovate il mio articolo sulla programmazione di una mini applicazionie di fotoritocco, praticamente una sorta di clone della nota App Instagram per Windows Phone 8 e/o Windows 8. 

Titolo di copertina:

INSTAGRAM FATTO IN CASA!
Passo passo come sviluppare un'app per ritoccare in tempo reale le foto scattate con smartphone e tablet

 

ABC# - Guida alla programmazione in C#

Sono passati tantissimi anni dalla prima stesura di questo libro, se non erro era il 2005, eppure ancora in tanti mi scrivono per chiedermi una copia del pdf, che fra l'altro ormai si trova facilmente digitando su qualsiasi motore di ricerca il titolo oppure semplicemente ricercando Guida di programmazione in C#.

Per quelli che comunque non fossero riusciti a reperirlo ecco qui il link 

ABC# guida alla programmazione in csharp.pdf (1,48 mb)

 

Se vuoi offrirmi un caffè o una birra... grazie!

 

 

La versione del libro aggiornata alle specifiche di C# 5.0 C#  6.0 è diventata un libro vero e proprio!

Programmare con C# - Guida alla completa, edito nel 2014 da LSWR

Programmare con C# 6 - Guida alla completa, edito nel 2016 da LSWR

http://www.antoniopelleriti.it/page/libro-csharp

 

 

Listbox con scrolling orizzontale in Windows Phone/Windows 8

Per realizzare una ListBox con scrolling in orizzontale basta modificare tramite codice XAML l'ItemsPanelTemplate utilizzato dal controllo standard.

Il primo accorgimento è quindi quello di utilizzare uno StackPanel (o VirtualizingStackPanel se preferite) con Orientation Horizontal e quindi impostare le proprietà ScrollViewer.HorizontalScrollBarVisibility="Auto" e Scrollviewer.VerticalScrollBarVisibility="Disabled".

<ListBox ItemsSource="{Binding MieiDati}" 
     ScrollViewer.HorizontalScrollBarVisibility="Auto" 
      Scrollviewer.VerticalScrollBarVisibility="Disabled">
    <ListBox.ItemsPanel>
        <itemspanelTemplate>
            <StackPanel Orientation="Horizontal">
        </StackPanel ></itemspaneltemplate>
    </ListBox.ItemsPanel>
    <ListBox.ItemTemplate>
        <DataTemplate>            
            <TextBlock Style="{StaticResource PhoneTextExtraLargeStyle}" 
             Text="{Binding Name}">
        </TextBlock ></DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Applicare un tema personalizzato alle applicazioni Windows Phone 8

volete modificare i temi di default all'interno delle vostre app Windows Phone 8, cambiando colori, font, sfondi, e così via?

Credo che la libreria wp-thememanager di Jeff Wilcox faccia al caso vostro!

Alal fine è una singola classe ThemeManager quindi potete importarla nel vostro progetto (anche se esiste il pacchetto nuget), quindi copiate il file ThemeResources.xaml dalla directory di installazione dell'SDK, in genere c:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Design\ e aggiunte anche questo al vostro progetto.

Modificate il file ThemeResources impostando i vostri colori, ecc.

Ora potete aggiungere alla sezione Application.Resources in App.xaml il ResourceDictionary del vostro nuovo tema:

<Application.Resources>       
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                  <ResourceDictionary Source="Common/ThemeResources.xaml"/>
            </ResourceDictionary.MergedDictionaries>
...

per utilizzare il tema personalizzato, nel costruttore della classe App chiamate il metodo SetCustomTheme, indicando il ResourceDictionary da utilizzare, per esempio:

 

ThemeManager.SetCustomTheme(App.Current.Resources.MergedDictionaries[0], Theme.Light);

 La classe ThemeManager permette anche di impostare da codice il tema Dark o Light, o di invertire quello attuale.

Speaker ai Community Days 2013 di Catania

Con immenso piacere ho avuto l'opportunità di partecipare come speaker ai Community Days 2013 a Catania, il 20 e 21 maggio 2013, questo grazie agli amici del gruppo OrangeDotNet, di cui mi onoro fra l'altro di fare parte.

Se avete avuto modo di partecipare e di seguire la mia sessione, siete liberi di esprimere la vostra opinione!

Ecco qui intanto slide e demo della sessione su "Lavorare con tile, badge e notification nelle applicazioni Windows 8"

http://www.communitydays.it/events/communitydays2013-catania/win806/

VisualStateManager non funzionante in Blend o Visual Studio?

Qualche giorno fa mentre terminavo i dettagli di una Windows Store App, mi sono trovato a dover lavorare con le snapped view di una particolare pagina.

In genere Blend e Visual Studio offrono un eccellente supporto, mediante la tab Device, e possibile definire le diverse viste di una pagina per ogni orientamento e layout:

 

 

E' possibile quindi specificare il layout per ogni versione della pagina (Fullscreen, Snapped, ecc.) utilizzando il designer.

Il corrispondente codice XAML di gestione degli stati è simile al seguente:

 

<VisualStateManager.VisualStateGroups>
          <VisualStateGroup x:Name="ApplicationViewStates">
             <VisualState x:Name="FullScreenLandscapeOrWide"/>
             <VisualState x:Name="FilledOrNarrow" />
             <VisualState x:Name="FullScreenPortrait" />
             <VisualState x:Name="FullScreenPortrait_Detail" />
             <VisualState x:Name="Snapped" />
             <VisualState x:Name="Snapped_Detail" />
          </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

 

Tutto bellissimo, ma per una particolare pagina non riuscivo a selezionare alcun valore dall'elenco Visual States, mi dava solo l'opzione (Base).

Cercando un pò in giro, ho trovato qualche possibile problema, per esempio il codice XAML precedente, deve essere inserito all'interno dell'elemento principale che contiene il resto della pagina, per esempio all'interno della Grid. Verifico che sia così, e quindi passo a cercare altre problematiche.

La pagina deve poi derivare da LayoutAwarePAge, che contiene il codice necessario a gestire i cambiamenti di orientation e layout. Anche questo però era ok.

Allora provo a creare un nuovo progetto Grid Application da zero, per confrontare il codice autogenerato e per verificare che in generale il designer funzioni correttamente.

E qui trovo l'inghippo, mancave l'attributo x:Name nel tag VisualStateGroup, che deve essere impostato nel seguente modo.

<VisualStateGroup x:Name="ApplicationViewStates"> 

Articolo: La nuova frontiera del wireless, la tecnologia NFC

Su IoProgrammo numero 185 (Maggio/Giugno 2013), trovate il mio articolo sulla programmazione di dispositivi Windows Phone 8 w/o Windows 8 dotati di chip NFC per la comunicazione wireless.

Titolo di copertina:

LA NUOVA FRONTIERA DEL WIRELESS! 
Le API mobile e desktop di Microsoft per far comunicare due dispositivi fisicamente vicini utilizzando la tecnologia NFC