Era tanto tempo che ci pensavo e finalmente posso annunciare che è aperto al pubblico . Chi mi segue saprà che questo è il nome che ho dato alla categoria del mio weblog che contiene tutti i miei post su Silverlight. Molti però avranno osservato che sempre più spesso mi trovo a scrivere i miei articoli in inglese. Ecco perchè ho deciso di donare a questa categoria la dignità di un weblog separato nel quale da oggi inizierò a dirottare i post su Silverlight in questa lingua.

Naturalmente il mio weblog non ne sarà sminuito. Tutto ciò che riguarda ASP.NET, LINQ e probabilmente anche i post in italiano su Silverlight continueranno a uscire su http://blog.boschin.it tuttavia credo sia meglio per tutti che vi sia una netta separazione tra i contenuti italiani e inglesi.

Chi lo desidera può già sottoscrivere il nuovo feed: http://feeds2.feedburner.com/SilverlightPlayground

Su Silverlight Playground ho già provveduto a copiare alcuni articoli che sono usciti in precedenza su queste pagine, perciò chi li ha già letti per il momento si accontenti. Già nella giornata di domani usciranno una serie di articoli nuovi che sono certo susciteranno molto interesse.

Ora mi rilasso, e attendo l' di domani...


image Approfitto del fatto che finalmente le foto che ha scattato lo scorso 27 febbraio, per ringraziare tutti i presenti al meeting "Silverlight 2.0: Networking Explained", per la calorosa accoglienza e la numerosa partecipazione.

La serata è andata davvero bene dal mio punto di vista; Mi sono sentito decisamente sciolto e nonostante sulle prime mi fossi preoccupato di aver scelto un argomento eccessivamente tecnico il pubblico ha dimostrato di apprezzare lo scendere in particolari così profondi e dettagliati su un argomento. Ho l'impressione che la scelta di argomenti di questo tipo possa essere in realtà vincente perchè consentono alle persone di portarsi a casa un bagaglio che da la possibilità di valutare una tecnologia per quello che realmente sa dare.  Credo che per il prossimo semestre proverò nuovamente a proporre qualcosa del genere.

Entro breve (dove breve significa "non prima di due settimane") vorrei proporvi degli articoli sul blog che riprendono gli esempi che ho preparato per il meeting, cercando di dettagliarli il più possibile e magari includendo uno screencast che ne dimostri il funzionamento. Il mio preferito è sicuramente l'esempio del Socket, dove ho creato un piccolo Task Manager online che mostra il carico di lavoro sul server, ma non è da trascurare nemmeno l'esempio di PollingDuplex.

Vi consiglio quindi di continuare a seguirmi. I prossimi giorni potrebbero essere molto densi... ;)


appz Domani sera sarò nuovamente impegnato in un meeting di XeDotNet dove sarò protagonista di una sessione sul mio beneamato Silverlight. Durante i 90 minuti della sessione parlerò diffusamente delle tecniche di accesso alla rete che il plugin mette a disposizione.

Il fulcro della serata sarà una piccola applicazione, sviluppata appositamente per domani sera, che dimostra come usare il Polling Duplex per aggionare un ipotetico pannello di orari di autobus. Questa tecnica è davvero interessante e apre la strada ad una tipologia di applicazioni molto efficace e di semplice sviluppo.

Un altro esempio divertente sarà quello si un mini task manager in grado di mostrare in tempo reale l'uso del processore sulla macchina server. Grazie all'uso di un socket i dati raccolti che fluiscono in vero realtime andranno ad aggiornare un pannello con un grafico e due barre indicatrici rispettivamente di processore e memoria RAM. Nella figura a fianco ho postato due screenshot del risultato...

Subito dopo il meeting mettero a disposizione il codice delle applicazioni. Ora ho finito di prepararmi e me ne vado a dormire che domani ho bisogno di tutta la concentrazione necessaria per dare il massimo.

tags: - categories: XAML

Diversamente da quello che ci si aspetta, la localizzazione di uno UserControl (e quindi della stessa pagina) in Silverlight non segue strettamente la cultura che è stata impostata nel browser. In effetti se provate a effettuare il binding di un TextBlock su di una proprietà di tipo DataTime vi renderete conto immediatamente di uno strano comportamento, soprattutto se la lingua del browser è impostata su una cultura diversa da en-US:

   1: <TextBlock Text="{Binding Today}" />
   2:  
   3: ... si ottiene ...
   4:  
   5: 2/23/2009 8:20:53 PM

La data espressa in questo esempio è palesemente in formato anglosassone. Il motivo di questo comportamento è dovuto ad un valore di default che viene assegnato all'attributo xml:lang (corrispondente alla proprietà Language di FrameworkElement). Se infatti provate a scrivere un IValueConverter custom e a mettere un breakpoint nel metodo Convert() vi renderete rapidamente conto che il valore che arriva al metodo come CultureInfo è "en-US", indipendentemente dalla cultura che valorizza la proprietà CultureInfo.CurrentCulture.

La documentazione in proposito è piuttosto chiara:

The Language property will default to "en-US" if not otherwise set either through the property itself or through processing the xml:lang attribute.

Correggere questo comportamento è piuttosto semplice. E' sufficiente valorizzare la proprietà Language dello UserControl cui fa riferimento la pagina nel costruttore del controllo in questo modo:

   1: this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.Name);

In WPF c'è più o meno il medesimo problema che ha una soluzione un po' più elegante, dato che è possibile effettuare l'override dei metadati di una DependencyProperty. Con Silverlight 2.0 invece occorre settare esplicitamente tale valore in ogni UserControl.