Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

settembre 2016 Blog Posts

I resource dictionary in Xamarin.Forms

La versione 2.3.0.49 di Xamarin.Forms ha introdotto il supporto ai resource dictionary, che ci consentono di separare e riutilizzare risorse di tipo XAML come gli stili. Non vi aspettate quanto potete avere con WPF o UWP... ma almeno è già qualcosa. Per creare un resource dictionary devo: 1. Aggiungere una nuova ContentPage XAML al progetto 2. Cambiare l'elemento radice da ContentPage a ResourceDictionary. 3. Nel code-behind, togliere l'ereditarietà da ContentPage. 4. Mettere le risorse di mio interesse all'interno del dizionario così ottenuto. In altre parole, nello XAML una cosa di questo tipo: <?xml version="1.0" encoding="utf-8" ?> <ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"                      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"                      x:Class="DelSole.XamUtilities.Styles.SharedResources">   <!-- Sample resource -->   <Style x:Key="baseStyle" TargetType="Label">     <Setter Property="FontSize" Value="Small" />     <Setter Property="FontAttributes" Value="Italic" />   </Style> </ResourceDictionary> Mentre in C#, questo: public partial class SharedResources {     public SharedResources()     {         InitializeComponent();     } } Utilizzare un resource dictionary richiede poi, nella pagina in...

posted @ lunedì 26 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

XamUtilities, una nuova libreria open source per Xamarin.Forms

Se avete seguito i miei ultimi post, avete visto come abbia voluto condividere alcune problematiche incontrate nello sviluppo di app con Xamarin.Forms attraverso controlli, behavior, converter. Ho quindi pensato di raccogliere il tutto in una nuova libreria che ho chiamato XamUtilities, il cui codice sorgente è disponibile su GitHub. La libreria contiene i behavior descritti nei post sulla validazione lato client, i controlli per il binding di enumerazioni e di date nullable, i converter utilizzati per il funzionamento di questi ultimi. Inoltre, è anche inclusa una piccola app di esempio che mostra come usare il tutto. Nota: è richiesto Xamarin.Forms 2.3.0.49 o...

posted @ domenica 25 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms e la validazione dell'input lato client - parte 2

Nella prima parte abbiamo implementato dei behavior da utilizzare per validare l'input dell'utente, ma quella è l'infrastruttura che ancora non abbiamo visto in azione, perché da collegare alla UI e quindi allo XAML. L'obiettivo è mostrare anche una Label di colore rosso, oltre alla logica applicata dal behavior sulle Entry. Per farlo devo convertire lo stato del behavior in un oggetto bool per capire se lo stato del controllo è valido oppure no e, conseguentemente, mostrare o nascondere la label. Mi serve quindi un converter, tipo di oggetto caro a chi conosce XAML e che si implementa sempre attraverso l'interfaccia IValueConverter,...

posted @ giovedì 22 settembre 2016 20:07 | Feedback (0) | Filed Under [ Xamarin ]

Fai le tue domande a Scott Guthrie!

Come ormai sapete bene, il 7 ottobre Scott Guthrie parteciperà come ospite d'onore ai Community Days/Future Decoded e sarà speaker nella keynote dell'evento, e per l'occasione Microsoft Italia ha lanciato una bella iniziativa che vi consentirà di fare le vostre domande a Scott Guthrie tramite l'hashtag #CallScott su Twitter. Quindi, twittate, fate le domande e includete ovviamente l'hashtag... Alessandro

posted @ giovedì 22 settembre 2016 18:22 | Feedback (0) | Filed Under [ Community and friends ]

Xamarin.Forms e la validazione dell'input lato client - prima parte

Premessa Ho avuto la necessità di implementare la validazione dell'input dell'utente in un'app scritta con Xamarin.Forms. Per esempio, dire all'utente che un campo non può essere vuoto o più lungo di un certo numero di caratteri. L'obiettivo è quindi mostrare un messaggio all'utente per dire che qualcosa non va, all'interno della UI. In questa prima parte vi parlo dell'implementazione della validazione tramite behavior, nella seconda parte di come associarla alla UI e allo XAML. Problema... Ho molti difetti ma a cercare su Internet o sui libri me la cavo abbastanza bene e, a meno di sviste, la situazione di Xamarin.Forms (ieri e) oggi...

posted @ martedì 20 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms, il TimePicker e la selezione dell'ora

In Xamarin.Forms esiste il controllo TimePicker che serve a selezionare un'ora, di tipo TimeSpan. In alcuni casi potreste avere la necessità di intercettare un evento scatenato allo scegliere dell'ora sul controllo. Vi aspettereste di trovare un SelectedTime, al pari del SelectedDate che esiste sul DatePicker ma.. Sopresa: non c'è   A tutto c'è però soluzione, si può gestire l'evento PropertyChanged. Sebbene meno rimediato rispetto a qualcosa che inizi con Selected, va bene lo stesso. L'evento sul TimePicker si gestisce così: private void OnTimePropertyChanged(object sender, PropertyChangedEventArgs e) {     if(e.PropertyName==TimePicker.TimeProperty.PropertyName)     {         // Dove sender è l'istanza del TimePicker     } } Ovviamente cambierete il nome del gestore come meglio credete e lo assegnerete nello XAML sulla dichiarazione del controllo. Alessandro

posted @ lunedì 19 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Generatore di badge per GitHub (e altro)

Se sfogliate spesso GitHub alla ricerca di progetti open source, avrete notato che spesso ci sono dei piccoli badge che mostrano lo stato del progetto, come lo stato di una release, lo stato delle build, la disponibilità su NuGet, ecc. ecc. Tra i vari servizi che consentono di creare questi badge, ce n'è uno che si chiama Shields.io e che, a sua volta, ha origine da un progetto open source. C'è un elenco dimostrativo e in fondo alla pagina i campi per generare il proprio. Se ne conoscete altri, ditelo... io intanto sto usando questo Alessandro

posted @ lunedì 19 settembre 2016 10:54 | Feedback (0) | Filed Under [ Varie ]

Desktop Bridge: portare le proprie applicazioni Win32 sullo Store di Windows 10

Forse ne avete sentito parlare ed ormai ci siamo. Project Centennial, ovvero Desktop Bridge e Desktop App Converter, con l'Anniversary Update di Windows 10 consentono di convertire un installer .exe o .msi in un'applicazione Universal Windows Platform, da poter poi "impacchettare" e distribuire sotto forma di file .appx che possa andare sullo Store di Windows 10. Pensate: le vostre applicazioni WPF o Win32 nello Store, eccezionale! Chiaramente, ci sono dei requisiti minimi che un'applicazione deve poter rispettare, e questo onestamente ci sta. L'elenco dei requisiti che la vostra applicazione deve soddisfare sono elencati in questa pagina. La cosa bella è che un'applicazione...

posted @ domenica 18 settembre 2016 22:00 | Feedback (0) | Filed Under [ Windows Presentation Foundation Visual Studio 2015 Windows 10 ]

Future Decoded, Community Days 2016 e sessione su Visual Studio Code

Ormai lo sapete tutti, ne abbiamo parlato su Twitter, avete ricevuto newsletter, condiviso su Facebook e gli amici delle altre Community hanno fatto lo stesso perché l'occasione è ghiottissima Quest'anno Microsoft ripropone l'evento Future Decoded, a Milano, il 6 e 7 ottobre. Senza nulla togliere a nessuno, la chicca ovviamente è la presenza di Scott Guthrie come speaker in keynote del secondo giorno. L'abbinamento perfetto è la concomitanza con i Community Days, il più bello e importante evento community che si ripete ogni anno e che dovreste frequentare solo per l'aria che si respira! Se poi nel passare di la voleste...

posted @ venerdì 16 settembre 2016 20:54 | Feedback (0) | Filed Under [ Community and friends ]

Sarò speaker a {Codemotion} Milano

Forse conoscete CodeMotion, un'importante conferenza che si tiene in tutto il mondo e che in Italia normalmente fa due tappe, Milano e Roma. Per la prima volta avrò il piacere e l'onore di essere speaker in questa conferenza, nell'edizione milanese che si svolge dal 23 al 26 novembre 2016. Più precisamente il 25 novembre terrò una sessione su Roslyn e i compilatori open source C# e VB. So già in partenza che sarà una bella esperienza perché l'ambiente e l'audience generale non sono gli stessi degli eventi cui normalmente partecipo, quindi avrò modo di confrontarmi con persone che non necessariamente si occupano...

posted @ venerdì 16 settembre 2016 20:44 | Feedback (0) | Filed Under [ Community and friends .NET Compiler Platform (Roslyn) ]

Xamarin.Forms, il controllo Editor e iOS

Xamarin.Forms mette a disposizione due controlli per la scrittura di testo: Entry ed Editor. Entry è paragonabile alla classica TextBox di altre piattaforme, Editor consente la scrittura multilinea. Tra i due, Entry è quello (leggermente) più personalizzabile. In realtà soffre di varie mancanze, tra cui ad esempio non è disponibile una modalità read-only, ma parliamo dell'Editor che, a sua volta, soffre di mancanza di personalizzazione. Come sapete, i controlli di Xamarin.Forms dietro le scene vanno a richiamare i corrispondenti controlli nativi, ciò significa che ne assumono anche l'aspetto relativo alla piattaforma. Su iOS, il controllo Editor non ha bordo e non c'è...

posted @ giovedì 15 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms: binding di Enum

Altro problema di Xamarin.Forms è che il controllo Picker si può popolare con una serie di elementi, ma il data-binding non è supportato se vogliamo che l'elenco di elementi provenga da un'enumerazione. Girando su Internet alla ricerca di soluzioni, ne ho trovate diverse anche nei forum di Xamarin ma alla fine ho optato per quella mostrata in questo sito, Intellitect. Viene spiegato come creare un picker che supporti enumerazioni, che sia "bindable", e che supporti anche enumerazioni per le quali vi sia una descrizione per ciascuna voce nell'enum. Per questo vi rimando al codice mostrato nel post per implementare il picker custom,...

posted @ mercoledì 14 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms: binding di Nullable

Il controllo DatePicker di Xamarin.Forms funziona bene ma non supporta il data-binding a oggetti di tipo Nullable<DateTime>. Ovviamente la problematica è cara a molte persone In questo thread nei forum di Xamarin ci sono diverse soluzioni, a fattor comune tutte aggiungono una bindable property chiamata NullableDate a un controllo che eredita da DatePicker e alla quale poi si fa binding e che conterrà l'effettivo valore della proprietà Date esistente. Tra le varie soluzioni proposte nel thread, io mi sono trovato bene con quella che vi riporto: public class CustomDatePicker : DatePicker {     private string _format = null;     public static readonly BindableProperty NullableDateProperty = BindableProperty.Create<CustomDatePicker, DateTime?>(p => p.NullableDate, null);     public DateTime? NullableDate     {         get { return (DateTime?)GetValue(NullableDateProperty); }         set { SetValue(NullableDateProperty, value); UpdateDate(); }     }     public static readonly BindableProperty DateFormatProperty = BindableProperty.Create<CustomDatePicker, string>(p => p.DateFormat,             defaultValue: default(string),             defaultBindingMode: BindingMode.OneWay,             propertyChanging: (bindable, oldValue, newValue) =>             {                 var ctrl = (CustomDatePicker)bindable;                 ctrl.DateFormat = newValue;             });     public string DateFormat     {         get { return (string)GetValue(DateFormatProperty); }         set { SetValue(DateFormatProperty, value); }     }     private void UpdateDate()     {         if (NullableDate.HasValue)         {             Format = DateFormat;             Date = NullableDate.Value;         }         else         {             _format = Format;             Format = "...";         }     }     protected override void OnBindingContextChanged()     {         base.OnBindingContextChanged();         UpdateDate();     }     protected override void OnPropertyChanged(string propertyName = null)     {         base.OnPropertyChanged(propertyName);         if (propertyName == "Date")             NullableDate = Date;     } } Non dovrete far altro che aggiungere il solito namespace XML per...

posted @ martedì 13 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms: pinch-to-zoom di immagini

In Xamarin.Forms il controllo Image per la visualizzazione di immagini non supporta il pinch-to-zoom, ma questo è abbastanza normale. La documentazione spiega come raggiungere l'obiettivo in modo abbastanza semplice, ovvero aggiungendo una gesture recognizer al controllo Image e poi puntando a un gestore che esegua il resize matematico dell'immagine. Se però doveste visualizzare un'immagine che riempia la pagina, dovete agire a livello di contenitore. Il codice che vi riporto l'ho trovato nei forum di Xamarin, non è mio, purtroppo non trovo più il link originale ma non sarà difficile cercare. Innanzitutto si crea un contenitore di livello più alto per supportare questa gestualità: public class PinchToZoomContainer : ContentView {     double currentScale = 1;     double startScale = 1;     double xOffset = 0;     double yOffset = 0; ...

posted @ lunedì 12 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Xamarin.Forms Starter Kit, un altro progetto open source per iniziare con Xamarin.Forms

Ultimamente sto avendo molto a che fare con Xamarin.Forms per vari motivi, sia lavorativi che editoriali e ho trovato spesso parecchie difficoltà nel fare cose che altrove, come in WPF o UWP, sono estremamente semplici ma che qui, per gioventù della piattaforma, diventano a volte eccessivamente complicate. Questo per dire che seguiranno post in cui condividerò varie esperienze, intanto vi segnalo che ho pubblicato un progetto open source chiamato Xamarin.Forms Starter Kit, il cui codice è su GitHub a questo indirizzo. L'app in se è abbastanza semplice, un newsreader per Channel 9, ma contiene un sacco di cose utili come: ...

posted @ domenica 11 settembre 2016 22:00 | Feedback (0) | Filed Under [ Xamarin ]

Code Snippet Studio si aggiorna e.. se ne parla :-)

Molti di voi conoscono Code Snippet Studio, un tool open source che ho pubblicato diverso tempo fa e che consente non solo di editare code snippet per l'IntelliSense di Visual Studio ma anche di creare dei pacchetti .Vsix per distribuirli facilmente, oltre ad altri strumenti di utilità. Code Snippet Studio è sulla Visual Studio Gallery ed è scritto in VB. Ne esiste anche una versione stand-alone, ma da un po' non la manutengo perché la risposta forte c'è stata solo sull'estensione. Questo per dirvi due cose. La prima è che ho aggiornato alla versione 1.3.7 che contiene una serie di bug fix. La...

posted @ sabato 10 settembre 2016 09:52 | Feedback (0) | Filed Under [ Visual Studio 2015 ]

CrossAnalyzers, un mio nuovo progetto open source con Roslyn per C# e Visual Basic

Ho recentemente pubblicato un nuovo progetto chiamato DelSole.CrossAnalyzers, una collezione di analyzer e refactoring per C# e Visual Basic che vi consentiranno di automatizzare l'implementazione di speciali regole di coding. Innanzitutto, dove. Il codice sorgente è su GitHub: https://github.com/AlessandroDelSole/DelSole.CrossAnalyzers Ovviamente, siete liberi di dare il vostro contributo che sarà anzi ben gradito Nella medesima pagina troverete anche altri link per scaricare i pacchetti. Ci sono due pacchetti NuGet che contengono i soli analyzer, poi ci sono due estensioni per Visual Studio che potete scaricare dalla Gallery e che contengono anche i refactoring. Prima dell'elenco, un piccolo assaggio: Analyzer: Assegnazione di List<T> invece di ObservableCollection<T>...

posted @ sabato 10 settembre 2016 09:42 | Feedback (0) | Filed Under [ .NET Compiler Platform (Roslyn) ]

Powered by:
Powered By Subtext Powered By ASP.NET