Silverlight

Post related to Silverlight technology
Pairing View and ViewModel using Silverlight5 Custom Markup Extension

I’m a longtime supporter of Laurent Bugnion’s MVVM Light Toolkit and I love using it together with my favorite IOC Container NInject, one of the most “boring” area is creating the class that exposes ViewModel instances in a design time way: the famous ViewModelLocator class. Now that Silverlight5 has custom markup extensions I thought: what about using it to simplify View vs ViewModel lookup? Here’s my attempt, let’s start with a simple ViewModel (nothing really new here, just to give you a complete scenario) public class...

posted @ venerdì 6 maggio 2011 09:56 | Feedback (0)

Paging and Sorting using WCF RIA Services SP1

Paging and sorting are, de-facto, standard required implementations in any line of business (LOB) application and we, as Silverlight developers, all know how “boring” (I won’t categorize the feature as ‘complicated’) is the implementation, in special case if we’re dealing with a WCF Service and request its introduced after service design is completed. Wouldn’t it be good to finally forget about paging and sorting and use a common reusable implementation? well’ you’ll be happy to know that thank to new classes added to RIA Service SP1 this is finally possible. Let’s introduce the triad of classes used...

posted @ venerdì 28 gennaio 2011 10:01 | Feedback (2)

Beware of .cache files on IsolatedStorage

Today I lost some time trying to figure out why my Windows Phone 7 application settings got lost as soon as the application was restarted. After several tests have concluded that the offending code was following one, which, at startup, deletes some “*.cache” files used by the application to store some temporary information. private void ClearCache(){ string[] cacheFiles = this.store.GetFileNames("*.cache"); foreach (string cacheFile in cacheFiles) { this.Delete(cacheFile); }} Everything looks ok, except that the application settings are stored in a file called “__ApplicationSettings.cache” and so they were...

posted @ venerdì 15 ottobre 2010 09:41 | Feedback (1)

Accedere alla porta seriale da Silverlight 4.0

Non capita spesso, ma nel caso dobbiate accedere alla porta seriale della macchina dove sta girando un applicazione Silverlight 4.0 full trust, ecco un interessante libreria: http://interopcom.codeplex.com/ Technorati Tags: Silverlight 4.0,COM Port

posted @ venerdì 17 settembre 2010 16:02 | Feedback (0)

Hosting Silverlight Cross Domain Applications

Pur non essendo un caso frequente, può capitare di dover ospitare un applicazione Silverlight proveniente da un dominio diverso dalla pagina host. Un esempio può essere: Pagina html ospitata nel domino foo.com la quale ha al suo interno qualcosa del genere: <div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> <param name="source" value="http://www.anothersite.com/myapp.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" /> ...

posted @ giovedì 29 luglio 2010 20:19 | Feedback (0)

SILF: Silverlight Install and Logging Framework

Se è vero che la prima impressione è quella che conta, perchè questo non vale per le applicazioni Silverlight? Alla data di oggi l’adozione mondiale di Silverlight è attorno al 60%, questo significa che il 40% degli utenti che finiscono sulla nostra pagina quello che si ritrovano è un desolante: oppure che per un utente non esperto potrebbe significare tutto e niente. Non sarebbe meglio fornire un esperienza più “amichevole” e magari riuscire anche a capire, tra gli utenti che non hanno Silverlight, quanti hanno deciso di installare il plug-in e quanti...

posted @ mercoledì 7 luglio 2010 22:56 | Feedback (2)

RIA Services vNext Feedback

Così com’è successo per Silverlight e WPF il team dei WCF RIA Services sta raccogliendo feedback per capire quali sono le le features da implementare nella prossima versione. Volete dire la vostra? allora partecipate a questa survey: http://dotnet.uservoice.com/forums/57026-wcf-ria-services   Technorati Tags: WCF RIA Services

posted @ sabato 15 maggio 2010 08:23 | Feedback (0)

Using resource dictionaries in WPF,Silverlight and Windows Phone 7

Una delle prime regole quando si lavora con WPF/SL/WP7 è organizzare le risorse in modo tale che sia immediato capire dove si trovano gli stili,templates e brushes. Forti di questa convizione, con Blend la cosa è spaventosamente semplice supponiamo di voler definire il colore di sfondo di un Border: Trasciniamo il Border nell’artboard e, col border selezionato, usiamo il menu Object->Edit Style->Create Empty Rispettando l’esigenza di organizzazione delle risorse, indichiamo a Blend di memorizzare lo style in un nuovo ResourceDictionary Styles.xaml: Fatto questo, all’interno della definizione dello Style cambiamo il colore...

posted @ domenica 9 maggio 2010 16:42 | Feedback (0)

Debugging Blend design time behavior

Chi mi conosce sa come come per me la Blendability sia una requisito essenziale nello sviluppo di un applicazione WPF/Silverlight, non tutti la pensano così ma come sappiamo il mondo è bello perchè è vario. Oggi ho passato gran parte della mattinata a rifattorizzare del codice affinchè la design experience fosse la migliore possibile, ma malgrado tutti i tentativi in una particolare situazione la blendability non voleva saperne di funzionare senza apparente motivo. Chi di voi ha affrontato problemi di questo tipo sa quanto sia difficile intervenire in quanto non si ha il controllo...

posted @ sabato 8 maggio 2010 23:07 | Feedback (0)

Silverlight: future release survey

Partecipate attivamente al processo di design delle features di Silverlight 5.0 compilando questa survey: http://www.surveymonkey.com/s/WXPFCS5 Technorati Tags: Silverlight

posted @ lunedì 3 maggio 2010 22:55 | Feedback (0)

Using Fiddler to fool ClientAccessPolicy.xml

Oggi ho avuto la necessità di consumare dei servizi da un applicazione Silverlight, questi non stanno sullo stesso sito di origine dell’applicazione e sono protetti da un file ClientAccessPolicy.xml che da accesso ai soli siti autorizzati. Per una lunga serie di motivi, disabilitare temporaneamente il filtro in clientaccesspolicy.xml non è possibile, e quindi, come debuggo il codice se ogni chiamata ritorna una SecurityException? La risposta sta in Fiddler che, tra la miriade di funzionalità ha anche quella di ridirigere le chiamate dirette a una uri verso un altra, è quindi bastato aggiungere al progetto web...

posted @ giovedì 15 aprile 2010 17:50 | Feedback (0)

Not using Expression Blend? you’re out of business

Visto che ultimamente parecchi miei posts sono dedicati a Blend e avendo “twettato” “Not using Expression Blend? you’re out of business”, un paio di persone mi hanno chiesto: “Ma sei diventato un designer?”, la risposta è ovviamente “No”, essere un designer richiede estro e creatività, doti che personalmente ritengo innate e che purtroppo so di non possedere. Il motivo del mio tweet è semplicemente dovuto al fatto che, anche alla luce di ciò che la versione 4.0 permette di fare, ritengo semplicemente che non usare Blend per sviluppare applicazioni WPF/Silverlight e Window Phone 7 sia semplicemente...

posted @ domenica 21 marzo 2010 19:47 | Feedback (30)

Blend 4’s new Model-View-ViewModel support

Sono da sempre un sostenitore di Blend e continuo a ritenerlo uno strumento indispensabile per chi sviluppa applicazioni WPF/Silverlight (ora dovrei forse anche aggiungere Windows Phone 7…) ovviamente ci sono delle funzionalità che dal basso della mia esperienza ho sempre ritenuto degli ottimi “tentativi” ma nulla di più: il caso più evidente sono i Design time data, ovvero la possibilità di definire dei dati disponibili a design time per facilitare il disegno della user Interface Il motivo percui non ho mai preso in considerazione questa possibilità e facile da capire: Se i dati a runtime provengono...

posted @ lunedì 15 marzo 2010 20:13 | Feedback (1)

The power of Behaviors in Model-View-ViewModel

Un applicazione WPF/Silverlight basata su Model-View-ViewModel è il risultato di un insieme di dettagli che fanno la differenza, ad esempio una delle cose che sto iniziando ad apprezzare e grazie al quale è possibile fare delle cose veramente carine con poco sforzo è il VisualStateManager (che in WPF 4.0 diventa parte integrante della piattaforma) Prendiamo un caso molto semplice: Cambiare il colore di un rettangolo (ma la cosa potrebbe essere complessa a piacere) alla pressione di un tasto. Usando Blend, definiamo due stati Normal e Fail e in ognuno di essi cambiamo il...

posted @ lunedì 8 marzo 2010 23:42 | Feedback (0)

MediaElement and Visual Tree

Sto lavorando su un applicazione Silverlight che, tra le varie funzionalità, deve eseguire il play di streams in formato .wma e per questo requisito la scelta cade automaticamente sulla classe MediaElement. Convinto della banalità della cosa ho scritto qualcosa tipo: MediaElement me = new MediaElement(); me.Source = new Uri("http://thesite.com/stream.wma", UriKind.Absolute); me.Play(); per scoprire che non funziona, ho quindi rimediato usando: WebClient wc = new WebClient(); wc.OpenReadCompleted += (s, arg) => { ...

posted @ domenica 7 marzo 2010 09:01 | Feedback (0)

[Blend] Extract Template from a Style

Quando si usa la funzionalità Edit Template->Edit a Copy di Blend Blend in realtà crea uno style che applica il template appena estratto. Personalmente mi piace organizzare le risorse all’interno di resource dictionaries (styles.xaml, templates.xaml…) e, sebbene Blend permetta di specificare dove posizionare lo style il risultato è che style e template sono tutt’uno e spesso finisco per spostare il template nel relativo resource dictionary e linkarlo nello style via {StaticResource} manualmente. Oggi, Laurent, mi ha indicato come fare il tutto direttamente da Blend: Mentre si è in modalità di editing...

posted @ venerdì 5 febbraio 2010 00:30 | Feedback (1)

WCF RIA Services=RAD 4 RIA

Ho appena terminato slides e demo per il “Community Tour” di martedì prossimo, l’argomento è tra i miei preferiti: WCF RIA Services non solo perchè li uso quotidianamente ma perchè è ormai una tecnologia della quale non riuscirei più a farne a meno sviluppando in Silverlight. Se sviluppate applicazioni Silverlight (o pensate di iniziare a svilupparle) e ancora non li state usando, venite alla sessione, vi renderete subito conto di quello che vi state perdendo… CU There! Technorati Tags: WCF RIA Services,Community Tour,Workshop

posted @ mercoledì 27 gennaio 2010 23:44 | Feedback (0)

EntitiesInError in WCF RIA Services

Gestire situazioni in cui si hanno problemi di concorrenza tra utenti con i WCF RIA Services è veramente molto semplice, supponiamo di voler sapere se durante un operazione di update qualcuno ha modificato prima di noi gli stessi records. Il codice da scrivere è il seguente: private void OnUpdate(object sender, RoutedEventArgs e) { this.customersContext.SubmitChanges(lop => { if(lop.HasError) ...

posted @ sabato 9 gennaio 2010 17:25 | Feedback (3)

Silverlight 4.0 :LayoutStates

Un altra interessante novità di Silverlight 4.0 è il fatto che il default template di ListBox/ComboBoxItem include tre nuovi stati: BeforeLoaded,Loaded e Unloaded. Agendo su questi stati è possibile modificare lo stato dell’item quando questo viene aggiunto e/o rimosso dalla lista, con Blend4 gestire questi stati è semplicissimo: Aggiungiamo una listbox (o combobox) ad una pagina ed editiamone il relativo ItemContainerStyle: A questo punto andiamo ad agire sugli stati indicati in precedenza: in questo caso agiremo semplicemente sulla proprietà Opacity impostandola a zero negli stati BeforeLoaded e Unloaded:...

posted @ giovedì 31 dicembre 2009 10:20 | Feedback (1)

MEF + Model-View-ViewModel

Ho parlato di MEF (Managed Extensibility Framework) parecchio tempo fa, ora che il framework è ben definito è evidente che se dovete sviluppare un applicazione ‘dinamica’ (o a plug-in se preferite) MEF è sicuramente la tecnologia da utilizzare. Ovviamente se l’applicazione è WPF o Silverlight l’accoppiare MEF e Model-View-ViewModel è d’obbligo, ecco quindi un semplice esempio di M-V-VM basato sul principio di composizione di MEF. Data Provider public interface IProvider { string GetName(); } ...

posted @ mercoledì 30 dicembre 2009 12:42 | Feedback (5)

Silverlight 4.0: INavigationContentLoader

Silverlight 3.0 ha introdotto l’oggetto Frame grazie al quale è possibile navigare le pagine che compongono l’intera applicazione, l’utilizzo di Frame è abbastanza semplice, supponendo infatti di avere la pagina principale della nostra applicazione (MainPage.xaml) definita in questo modo: <Grid x:Name="LayoutRoot"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="2*" /> ...

posted @ mercoledì 30 dicembre 2009 10:00 | Feedback (3)

VisualStateManager: Un esempio da non seguire

Scopo: Muovere un elemento X dalla posizione “A” alla “B” usando l’oggetto VisualStateManager di WPF e Silverlight. In tutti e tre i casi (WPF 3.5, WPF 4.0 e Silverlight X) lo XAML generato da Blend è esattamente lo stesso: 1: <Grid x:Name="LayoutRoot"> 2: <VisualStateManager.VisualStateGroups> 3: <VisualStateGroup x:Name="States"> 4: <VisualState x:Name="Normal"/> 5: ...

posted @ lunedì 21 dicembre 2009 22:59 | Feedback (0)

Using DTO’s with WCF RIA Services

Sviluppate applicazioni Silverlight e non usate i WCF RIA Services? beh, non sapete cosa vi state perdendo… Sebbene la stragrande maggioranza delle demo facciano direttamente uso delle entità generate dall’ORM di turno (Entity Framework/LinqToSql per la maggior parte dei casi) non è assolutamente detto che: Usare i WCF RIA Services significhi necessariamente usare Entity Framework o Linq To SQL (anche se questo indubbiamente aiuta) Usare i WCF RIA Services richieda la proiezione lato client delle entità generate dall’ORM per lo storage. Se, giustamente, vogliamo separare il dominio...

posted @ giovedì 26 novembre 2009 19:43 | Feedback (3)

WCF RIA Services for Visual Studio 2008 SP1

Sono stati rilasciati i WCF RIA Services compatibili con Visual Studio 2008 SP1: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce Technorati Tags: WCF RIA Services

posted @ venerdì 20 novembre 2009 18:20 | Feedback (0)

Silverlight 4: What’s new

Ho scritto un documento che descrive le principali novità di Silverlight4.0: lo trovate qui. (versione Italiana) I wrote a document that provides an overall view of Silverlight’s 4.0 main new features: get it here (English version) Technorati Tags: Silverlight 4.0

posted @ mercoledì 18 novembre 2009 20:57 | Feedback (4)

Debug your Silverlight Out-Of-Browser application

Ci sono dei casi in cui si deve debuggare un applicazione Silverlight mentre è in modalità Out-of-Browser, la prima cosa che viene in mente è attaccare il debugger al processo sllauncher.exe (l’host delle applicazioni OOB) ma in realtà esiste un modo più semplice: Installare l’applicazione Out-Of-Browser Andare nelle proprietà del progetto e nella tab Debug selezionare Installed Out-Of-Browser application Premere F5… Technorati Tags: Silverlight,Out-Of-Browser

posted @ giovedì 12 novembre 2009 23:10 | Feedback (0)

Piccolo quiz…

Prendiamo uno UserControl che contiene una semplice listbox: 1: <Grid> 2: <ListBox HorizontalAlignment="Stretch" 3: Name="listBox1" 4: ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl},Path=MyValues}" 5: ...

posted @ martedì 10 novembre 2009 23:26 | Feedback (1)

Data validation in WPF,Silverlight and .NET RIA Services

Col SP1 del framework 3.5 è stato introdotto il namespace System.ComponentModel.DataAnnotations il quale ha al suo interno degli interessanti attributi di validazione (dettagli qui) Ad esempio, volendo validare una proprietà del nostro ViewModel, quello che dobbiamo fare è semplicemente scrivere del codice come quello che segue dopo aver aggiunto un riferimento a System.ComponentModel.DataAnnotations: 1: public class MyViewModel:INotifyPropertyChanged 2: { 3: ...

posted @ sabato 7 novembre 2009 22:46 | Feedback (0)

Prism 2.1

A tutti gli estimatori di Prism segnalo il rilascio della versione 2.1, le principali novità sono: All Visual Studio projects (Composite Application Library, reference implementation, and Quickstarts) were migrated to use Silverlight 3. TabRegionControlAdapter was modified to support binding in the TabItem’s control header in Silverlight 3. CreateXap.bat file was modified to search for Silverlight 3 assemblies if the Silverlight 2 reference assemblies cannot be found. Implemented the WeakEvent Pattern for the DelegateCommand’s and CompositeComand’s (more on this below). Download: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40 Technorati Tags: Prism

posted @ lunedì 2 novembre 2009 23:32 | Feedback (0)

Un gradito omaggio…

Ricevere un regalo fa sempre piacere, ma quando a farti un regalo sono 4 amici e professionisti del settore la soddisfazione aumenta, ringrazio quindi ufficialmente Daniele,Cristian,Alessio e Marco per avermi omaggiato di una copia della loro ultima fatica: “Silverlight 3 Guida completa per sviluppatori e designers”. Ho dato una sfogliata veloce ieri sera e, con la giusta sintesi, mi pare che copra tutto quello che c’è da sapere per iniziare a sviluppare con Silverlight 3. Ottimo lavoro ragazzi!   Technorati Tags: Silverlight 3

posted @ mercoledì 28 ottobre 2009 08:21 | Feedback (0)

Silverlight toolkit: October 2009 release

Come se non ci fosse già abbastanza roba da installare, ecco il Silverlight3 Toolkit October 2009 installation: http://silverlight.codeplex.com/ Tra le principali novità: Il supporto a VS2010 (che include finalmente il designer per Silverlight ) Supporto da parte di alcuni controlli della MouseWheel La gestione integrata (ovviamente nel browser) del drag and drop, per quest’ultima feature consiglio questo post: http://themechanicalbride.blogspot.com/2009/08/new-with-silverlight-toolkit-drag-and.html Tutti i controlli sono ora Silverlight3 only Technorati Tags: Silverlight Toolkit

posted @ lunedì 19 ottobre 2009 22:54 | Feedback (1)

Visual Studio 2010 Beta2: How to improve WPF/Silverlight designer performances

Dopo avere installato Visual Studio 2010 Beta2 è possibile migliorare le performance del designer WPF/Silverlight modificando il registry in questo modo: 1. Close any open VS instances 2. Open RegEdit (as an administrator as needed) 3. Select the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0 key 4. Right click and add key, type ClrHost 5. In the newly created key, right click and add a DWORD32 with the name StartupFlags 6. Set its value to 5 ...

posted @ lunedì 19 ottobre 2009 22:43 | Feedback (0)

Generate a PDF or custom reports from Silverlight

La stampa è uno dei punti deboli di Silverlight (in pratica non esiste nulla), le uniche soluzioni che ho visto interagiscono col il browser con tutte le limitazioni e complicazioni del caso. SmartPrint for Silverlight sembra un prodotto interessante in grado di generare un PDF contente ciò che è visibile a video o parte di esso. Non è un generatore di reports, per quello il prodotto più interessante che ho avuto modo di provare è Report Sharp Shooter. Technorati Tags: Silverlight,Report generation,Printing

posted @ sabato 3 ottobre 2009 17:54 | Feedback (0)

XAML Templates

Spesso mi viene chiesto dove è possibile reperire dei temi/skin per WPF e Silverlight da applicare alle proprie applicazioni in modo da ottenere velocemente un look and feel più moderno e accattivante. Visto che puntualmente mi dimentico l’indirizzo del sito, me lo segno qui: http://www.xamltemplates.net/ Technorati Tags: XAML Templates

posted @ venerdì 2 ottobre 2009 08:17 | Feedback (0)

Customize Silverlight Calendar control

Questo post nasce da un effettiva richiesta in un newsgroup e, visto che può servire ad altri ecco un piccolo how-to su come personalizzare il controllo Calendar di Silverlight, in particolare la richiesta era quella di cambiare il colore dell’header e delle domeniche, in pratica passare dalla situazione A a quella B (vedi sotto) Una volta capito che il controllo non espone una proprietà che permette di cambiare il colore dell’header e sopratutto appurato che non esiste un contenitore che raggruppa l’intera parte header, cambiare il colore è banale, una volta scoperto che,...

posted @ domenica 20 settembre 2009 20:21 | Feedback (1)

WPF and Silverlight designer extensibility samples

Quando si realizzano dei controlli WPF e/o Silverlight, il loro comportamento a design time è tanto importante quanto quello a runtime, a questo link trovate tutte le informazioni per gestire al meglio l’integrazione dei vostri controlli all’interno di Visual Studio e Expression Blend. Technorati Tags: WPF,Silverlight,Design Mode

posted @ giovedì 17 settembre 2009 07:53 | Feedback (0)

Localization of Model View ViewModel based applications

In WPF la localizzazione è ‘ufficialmente’ compito di LocBaml, tool che personalmente preferisco evitare per una lunga serie di motivi, non ultima il fatto che la non è applicabile a Silverlight. Per localizzare le applicazioni basate sul pattern Model-View-ViewModel la soluzione che utilizzo è la seguente. Aggiungo al mio progetto i vari files .resX che contengono i vari testi localizzati: ...

posted @ mercoledì 9 settembre 2009 16:11 | Feedback (0)

How to detect design mode in WPF/Silverlight

Nella lista dei WPF Disciples si è discusso di come determinare in maniera corretta la modalità Design Mode, ovvero quando il codice sta girando nel contesto di un desginer. Le risposte sono: WPF 1: public static class Designer 2: { 3: private static readonly bool isDesignMode; 4:  5: public static bool IsDesignMode {get { return...

posted @ mercoledì 2 settembre 2009 22:14 | Feedback (0)

Exception propagation in Silverlight3 (revised)

Tempo fa avevo descritto come è possibile propagare le eccezioni da un servizio WCF verso un applicazione Silverlight3. Del procedimento, la parte più noiosa era sicuramente quella necessaria al cambio di HTTP Status Code da 500 a 200, la buona notizia è che grazie alla nuovo Client HTTP Stack presente in Silverlight3 tale cambio non è più necessario, basta infatti aggiungere questa riga allo startup dell’applicazione Silverlight: 1: bool registerResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); Per sostituire il browser networking stack usato by default col nuovo Client Networking...

posted @ martedì 18 agosto 2009 07:51 | Feedback (1)

Expression Blend Samples = M-V-VM PowerTools

L’altro giorno stavo chattando con Larent Bugnion riguardo nuove features da aggiungere nel suo progetto M-V-VM light toolkit ed entrambi eravamo concordi nella necessità di aggiungere un behavior che mappasse un generico evento verso un comando esposto dal ViewModel. Questa necessità è ancor più sentita in Silverlight dove il meccanismo di commanding, ICommand a parte, non è presente. Un esempio di possibile attached behavior è quello che segue: 1: public static class EventCommand 2: ...

posted @ venerdì 7 agosto 2009 18:10 | Feedback (0)

Fun with ItemsPanelTemplate…

Una semplice richiesta da parte di un cliente di Managed Designs relativamente ad una applicazione WPF che deve visualizzare degli elementi in posizioni ben precise ed eseguire delle operazioni in base agli items selezionati ha dato origine a questo post, il cui scopo è quello di mostrare come sia fondamentale cambiare il modo di pensare ad una interfaccia WPF/Silverlight rispetto alla vecchia tecnologia Windows Forms. Il cliente aveva sviluppato l’idea aggiungendo e posizionando dinamicamente gli elementi ad un Canvas per poi rendersi conto durante lo sviluppo che la soluzione utilizzata portava ad un vicolo cieco. La soluzione che abbiamo proposto...

posted @ venerdì 7 agosto 2009 16:55 | Feedback (0)

Design Time support in Model View ViewModel Architectures

In un architettura basata su Model-View-ViewModel (MVVM) spesso è necessario ‘iniettare’ nel ViewModel delle entities di supporto al ViewModel stesso, ad esempio, in un ottica ViewModel-First è consuetudine passare nel costruttore una generica IView in modo che il ViewModel possa poi comunicare facilmente con la view stessa. L’utilizzo di un interfaccia fa si che questo approccio non comprometta la testabilità del ViewModel in quanto l’interfaccia è facilmente ‘mockabile’ ma Il fatto di avere un ViewModel che non ha un costruttore pubblico senza parametri compromette un altro aspetto al quale è difficile rinunciare: Il supporto a design...

posted @ giovedì 6 agosto 2009 09:58 | Feedback (3)

Implementazione ‘furba’ di INotifyPropertyChanged

Che l’implementazione di INotifyPropertyChanged porti a scrivere del codice non propriamente ‘bello’ e funzionale è ormai scontato, personalmente non è mai stato un problema, bisogna però avere l’accortezza (e questo non sempre avviene) di rinominare il nome della funzione passato nell’evento quando si fa refactoring: soluzione decisamente molto “Code Smelling”. 1: public class MyClass:INotifyPropertyChanged 2: { 3: string userName; 4:  ...

posted @ lunedì 3 agosto 2009 08:25 | Feedback (5)

Silverlight3 GDR 1

A pochi giorni dal rilascio ufficiale ecco il primo, a dire il vero inaspettato, aggiornamento di Silverlight3 la cui versione passa quindi da 3.0.40624.0 a 3.0.40723.0 L’update è già disponibile via Windows Update oppure qui: http://www.microsoft.com/silverlight/get-started/install/ Non sono previsti aggiornamenti per i vari Tools/SDK etc, l’aggiornamento sembra riguardi: “Excessive media buffering in encoded media which had a lot of script commands in the headers” Technorati Tags: Silverlight3 GDR 1

posted @ venerdì 31 luglio 2009 07:49 | Feedback (0)

SimpleStyles for Silverlight

SimpleStyles sono una collezione di templates utili come punto di inizio per la personalizzazione di controlli pre-esistenti (button, listbox, treeview etc…) Hanno il vantaggio, rispetto al template predefinito, di essere più semplici e quindi rappresentano anche un ottimo strumento didattico per capire come funziona il Visual State Manager e qual’è il suo corretto utilizzo. Li trovate qui: http://blog.nerdplusart.com/archives/silverlightsimplestyles Technorati Tags: Silverlight,Simple Styles   -

posted @ sabato 18 luglio 2009 11:37 | Feedback (0)

SketchFloow book

A questo indirizzo è possibile trovare il primo capitolo (100 pagine) e relativi samples di un libro interament dedicato a SketchFlow, sicuramente da scaricare se siete interessati e non avete ci mai ‘giocato’ in precedenza. Technorati Tags: SketchFlow

posted @ lunedì 13 luglio 2009 22:24 | Feedback (0)

Binding Radio buttons to an Enum

Essendo una domanda ricorrente credo sia il caso di bloggarla: “Se il mio ViewModel espone una proprietà enumerativa, come posso bindarla ad un insieme di radio buttons ?”. La risposta sta nell’utilizzo di un converter. Partiamo dal ViewModel: 1: public enum Power {Low,Medium,High} 2:  3: public class TheViewModel 4: {...

posted @ venerdì 3 luglio 2009 13:14 | Feedback (2)

Silverlight3: DataForm control

Credo abbiate intuito che Microsoft sta spingendo molto sul presentare Silverlight3 come la piattaforma per lo sviluppo di RIA applications puntando molto sulle LOB (Line Of Business) Applications, i nuovi .NET RIA Services sono solo un esempio in questa direzione. Oltre alla mia feature preferita (ChildWindow) in Silverlight3 sono stati aggiunti una serie di controlli nati con lo scopo di alleggerire la parte più noiosa delle LOB, ovvero la presentazione dei dati e relativa interazione con l’utente, tra questi il controllo DataForm. Supponiamo di avere una classe Person con le...

posted @ venerdì 22 maggio 2009 18:13 | Feedback (1)

Silverlight3: Exception propagation

In Silverlight2, dopo avere creato il nostro bel servizio WCF che genera una serie di eccezioni (ovviamente di tipo FaultException/FaultException<T>) quando c’è qualcosa che non va, è triste scoprire che di queste eccezioni non ce ne facciamo nulla in quanto non verranno mai intercettate dalla nostra applicazione Silverlight per una lunga serie di motivi. Fortunatamente questa è acqua passata in quanto nella versione 3 le eccezioni vengono correttamente gestite dal plug-in a patto che venga iniettato del codice per aggirare il problema principale: Le eccezioni vengono ritornate con un HTTP Response Code=500 e quindi...

posted @ venerdì 22 maggio 2009 17:14 | Feedback (1)

Moonlight 2.0 Preview Released

Da oggi è possibile eseguire applicazioni Silverlight2.0 anche in ambiente Linux grazie alla preview della versione 2.0 di Moonlight. La compatibilità non è ancora al 100% ma sembra già messo molto bene e promette di anticipare alcune features presenti nella versione 3.0 di Silverlight. Tutti i dettagli su blog di Miguel: http://tirania.org/blog/archive/2009/May-04.html   Technorati Tags: Moonlight 2.0,Silverlight

posted @ martedì 5 maggio 2009 11:20 | Feedback (0)

Silverlight3: Increase reader quotas

Nel realizzare un servizio WCF può rendersi necessario incrementare la dimensione massima degli array che vengono scambiati da e verso il servizio, un esempio comune può essere quello di volere passare al servizio un array rappresentante un immagine da memorizzare sul server. Come ho già scritto in precedenza, con Silverlight3 il default binding non è piu basicHttpBinding ma un custom binding che usa BinaryMessageEncoding, per modificare la dimensione massima degli arrays  è quindi necessario aggiungere un elemento ReaderQuotas opportunamente configurato, un esempio di questa configurazione la trovate di seguito: ...

posted @ venerdì 24 aprile 2009 17:24 | Feedback (0)

Silverlight3: Consumare servizi WCF duplex

In Silverlight3 è stato semplificato il meccanismo di fruizione di servizi WCF che usano la modalità duplex, nella Beta1 c’è in realtà ancora parecchio lavoro da fare ma con la RTM il tutto si ridurrà nel aggiungere un riferimento al servizio WCF duplex e gestire l’evento generato quando il servizio ha delle informazioni da comunicare all’applicazione Silverlight. Per darvi un idea, ecco un esempio di servizio WCF che ‘pusha’ dei valori quando questi hanno un valore inferiore ad una soglia prefissata: L’interfaccia del servizio è: ...

posted @ mercoledì 22 aprile 2009 08:03 | Feedback (0)

Silverlight3: WCF Services e BinaryMessageEncoding

Con Silverlight3 arrivano una lunga serie di enhancements anche per la parte webservices, tra questi l’utilizzo del BinaryMessageEncoding in sostituzione del precedente TextMessageEncoding. La nuova modalità diventa il default quando aggiungete al vostro progetto un nuovo Silverlight enabled WCF service e ha lo scopo di di diminuire la dimensione del messaggio aumentando il quindi thoughtput del server. La nuova configurazione del file Web.Config diventa quindi: 1: <bindings> 2: <customBinding> ...

posted @ domenica 19 aprile 2009 18:28 | Feedback (1)

Silverlight3: IApplicationService

Come forse saprete se avete seguito qualche presentazione al recente Mix09, in SIlverlight3 è stata introdotta una nuova interfaccia IApplicationService che permette la creazione di servizi da far partire allo startup e da stoppare quando l’applicazione sta per terminare, ad esempio perchè l’utente sta navigando verso un altro sito. Per completezza segnalo anche l’interfaccia IApplicationLifeTimeAware che permette l’esecuzione di codice durante altri eventi relativi al ciclo di vita dell’applicazione come Starting,Started,Exiting,Exited… L’uso è molto semplice, c’è però un piccolo bug (ma va? ) percui è necessario associare un x:Name al servizio quando lo si definisce nel...

posted @ domenica 5 aprile 2009 11:07 | Feedback (0)

Silverlight3 Local Connections: Piccolo (ma importante) dettaglio…

Nel mio post sulle Local Connections di Silverlight3 concludevo scrivendo: “nella mia installazione, non sono supportate più istanze dello stesso receiver”. Dopo uno scambio di opinioni con qualche Insider e col team di Silverlight la risposta è stata: “Non è un bug: semplicemente non è possibile avere più istanze dello stesso receiver mentre sono supportate più istanze dello stesso sender.” La limitazione dipende dalla modalità di implementazione delle local connections (named pipes) però questo significa che se avete una pagina con due plug-in che comunicano tra loro via local connections e aprite due istanze...

posted @ sabato 4 aprile 2009 17:59 | Feedback (0)

Silverlight3: Child Windows

Non molto tempo fa avevo mostrato come realizzare un popup modale in Silverlight2, nulla di complicatissimo ma comunque un bel pò di lavoro per visualizzare quello che nei Winforms si fa con una riga di codice. Bene, dimenticatevi tutto perchè in Silverlight3  è tutto molto più semplice grazie alle ChildWindows. Aggiungete ad un progetto Silverlight3 un item Silverlight ChildWindow e disegnatene il contenuto, by default vengono automaticamente inseriti i pulsanti Ok e Cancel, ma potete gestirli come meglio credete. Create da codice un istanza di ChildWindow, invocate il metodo...

posted @ venerdì 3 aprile 2009 16:40 | Feedback (1)

Silverlight3 Local Connections

Questa è probabilmente la feature che più mi intriga di Silverlight3 quando funzionerà a dovere (more later…) In pratica: attraverso le local connections è possibile far comunicare tra loro applicazioni Silverlight senza passare dall’ HTML bridge ma attraverso un semplice meccanismo di publish-subscribe. L’applicazione che vedete nella foto contiene due plug-ins, scrivendo nella texbox in alto il testo viene replicato nella textbox inferiore. L’applicazione Sender non fa altro che creare un istanza di LocalMessageSender indicando il nome associato al LocalMessageReceiver che sarà in grado di ricevere i messaggi inviati sottoforma di stringa (nel mio...

posted @ venerdì 3 aprile 2009 14:17 | Feedback (1)

MeasureString in WPF e Silverlight

A volte può capitare di avere la necessità di dovere misurare le dimensioni di un testo e ritrovarsi orfani di Graphics.MeasureString/TextRenderer.MeasureText dei WinForms può portare a dei momenti di sconforto… L’equivalente WPF è: public Size Measure(string text, double fontSize, string typeFace) { FormattedText ft = new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, ...

posted @ venerdì 3 aprile 2009 09:37 | Feedback (0)

Silverlight3 - How to enable autoupdate of Out-Of-Browser Applications

Ho letto circa una tonnellata di blogs su quanto sono “fighe” (si può dire?) le Out-Of-Browser Applications di SIlverlight3, e c’è, come sempre, chi si chiede se queste possono sostituire un applicazione WPF. Sicuramente la direzione è quella (“ne rimarrà uno solo”<cit.>) ma i tempi non sono ancora maturi e non lo saranno nel breve, le implicazioni di security sono troppe e le attuali limitazioni fanno si che pensare di sostituire un applicazione full trusted con un applicazione OOB SL3 è semplicemente fuori luogo, semmai concordo che SL, sopratutto nella ultima versione, sta offuscando un area di WPF...

posted @ martedì 31 marzo 2009 00:23 | Feedback (0)

Shazzam: Pixel Shaders Utility

I pixel shaders non sono di per se una novità in quanto introdotti col SP1 di WPF, ma sono certo che acquisteranno la giusta notorietà con la loro introduzione in SIlverlight3. Se volete divertirvi a “PixelShaderare” vi segnalo Shazzam, un utility che permette di scrivere, compilare e testare i vostri pixel shaders. Per funzionare l’utility necessita del compilatore presente nel DirectX SDK che trovate qui e genera automaticamente tutto il codice necessario per utilizzare il custom shader nella vostra applicazione  SL3/WPF. L’unico inghippo che ho...

posted @ domenica 29 marzo 2009 12:10 | Feedback (4)

Silverlight3: Databinding bug

Sembra che Silverlight3 abbia qualche problema col databinding…, prendiamo una classe Person che implementa INotifyPropertyChanged e supponiamo di volerne editare le proprietà Name e Age. <StackPanel> <TextBox Text="{Binding Path=Name, Mode=TwoWay}" /> <TextBox Text="{Binding Path=Age, Mode=TwoWay}" /> <TextBlock Text="{Binding Name}" /> </StackPanel> nel costruttore del codebehind, come da...

posted @ sabato 28 marzo 2009 17:35 | Feedback (0)

Model-View-ViewModel for Silverlight

  Dopo l’articolo dedicato all’utilizzo di M-V-VM in WPF questo mese MSDN Magazine pubblica l’equivalente per Silverlight. http://msdn.microsoft.com/en-us/magazine/dd458800.aspx       Technorati Tags: Model-View-ViewModel,Silverlight

posted @ domenica 22 febbraio 2009 08:37 | Feedback (0)

Silverlight2.0 GDR1

Nuovo update per Silverlight2.0 (ormai gli acronimi si sprecano…) lo trovate qui: http://www.microsoft.com/silverlight/resources/install.aspx Update:  Se, come me, non riuscite ad installarla in quanto la vostra versione “developer” non è aggiornata, usate questo link: http://go2.microsoft.com/fwlink/?LinkID=119972 Technorati Tags: Silverlight2.0 GDR1

posted @ giovedì 19 febbraio 2009 11:22 | Feedback (0)

Silverlight Dialog-Window in a M-V-VM Style

Durante lo sviluppo di un applicazione Silverlight 2.0 è probabile che vi siate trovati di fronte alla necessità di visualizzare all’utente una dialog-window. Quello che in WPF si realizza con una semplice chiamata al metodo ShowDialog in Silverlight richiede un pò di lavoro in quanto è necessario visualizzare un popup posizionandolo sopra la finestra attuale. Visto che anche in Silverlight è applicabile il pattern Model-View-ViewModel, perchè non approfittarne? Definiamo il ViewModel che governerà la vita della nostra finestra, popup incluso: public class PopupViewModel : INotifyPropertyChanged { ...

posted @ venerdì 30 gennaio 2009 11:02 | Feedback (1)

Silverlight Splash Screen

Per dare quel tocco di ‘eleganza’ aggiuntiva all’applicazione Silverlight che ho realizzato per un cliente ho deciso di aggungere uno splash screen che mostrasse il downdload dell’applicazione in sostituizione delle sfere rotanti utilizzate by default e, dopo qualche prova sono rimasto abbastanza deluso dalle (ovvie) limitazioni che lo splash screen di Silverlight impone, in primis, non è possibile usare nessun controllo in quanto System.Windows.Controls.dll è nello xap che non è ancora stato scaricato. Morale: Mi sono guardato in giro e ho utilizzato in alternativa il progetto su Codeplex chiamato: Silverlight Loader A parte qualche...

posted @ domenica 11 gennaio 2009 18:59 | Feedback (0)

SIlverlight e la proprietà Name

Silverlight utilizza, come WPF, la proprietà Name per identificare un elemento definito nello XAML, peccato che questo lo faccia automaticamente indipendentemente dal tipo di oggetto utilizzato. Supponiamo di avere questa classe: public class Person { public string Name { get; set; } public int Age { get; set; } } e di volerla usare in uno Usercontrol Silverlight: <UserControl x:Class="Silverlight_ToDelete.Page" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Silverlight_Test" Width="400" Height="300"> <UserControl.Resources> <local:Person x:Key="person" Name="Bart" Age="13" /> </UserControl.Resources> ...

posted @ venerdì 24 ottobre 2008 23:28 | Feedback (0)

Silverlight Contrib: Suite di controlli per Silverlight 2.0

Dopo WPF Contrib, ecco l’equivalente per Silverlight ovvero: Silverlight Contrib, una gallery di controlli per Silverlight in licenza ms-pl. Per vedere i controlli all’opera cliccate qui. Technorati Tags: Silverlight,Silverlight Contrib

posted @ martedì 21 ottobre 2008 07:52 | Feedback (0)

Silverlight Spy

Se vi interessa conoscere tutti i dettagli di pagine contenenti codice Silverlight allora scaricatevi Silverlight Spy grazie al quale potrete analizzarne il logical tree, le risorse, lo XAML e modificare le proprietà dei vari visuals. Esempio: Partendo da questo XAML: <UserControl x:Class="SilverlightApplication5.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <Button Content="Ok" Margin="40" /> </Grid> </UserControl> Silverlight Spy ricostruisce: ...

posted @ giovedì 8 maggio 2008 00:04 | Feedback (0)

Microsoft Health Common User Interface

"The Microsoft Health Common User Interface (MSCUI) Patient Journey Demonstrator is a vehicle for Microsoft thought leadership in state-of-the-art User Experience for Healthcare applications. It provides exemplar implementations of Microsoft Common User Interface guidance on a Microsoft platform." Volete un esempio pratico di applicazione Silverlight 2.0 e contemporaneamente un anticipo di come saranno (o almeno mi auguro siano) le applicazioni web di domani? allora cliccate qui.   Technorati Tags: SIlverlight 2.0,Microsoft Healt Common user Interface

posted @ mercoledì 7 maggio 2008 23:23 | Feedback (0)

Implicit style in Silverlight 2.0

Mentre in WPF per definire uno stile implicito è sufficiente non utilizzare x:Key nella definizione dello style: <Style TargetType="{x:Type Button}"> <!--No key defined!--> <Setter Property="Background" Value="Blue" /> <Setter Property="Foreground" Value="Yellow" /> <Setter Property="FontSize" Value="22" /> <Setter Property="FontWeight" Value="Bold" /> ...

posted @ giovedì 10 aprile 2008 11:02 | Feedback (1)

Silverlight style browser

Attraverso Josh Smith vi segnalo questa piccola, ma utilissima utility, che consente di sfogliare gli stili dei controlli presenti in Silverlight 2.0. Vista l'architettura degli stili in Silverlight 2.0  (diversa rispetto a WPF) e la mancanza della feature "Create a Style Copy" in Blend 2.5 credo sia un ottimo tool per capire meglio come funzionano le cose "under the hood" Technorati Tags: Silverlight 2.0,Style browser

posted @ mercoledì 26 marzo 2008 00:00 | Feedback (0)

Silverlight: Occupare tutta la client-area del browser

Quando si crea un nuovo progetto Silverlight 2.0 in Visual Studio 2008 viene creato uno Usercontrol con la dimensione 400 x 300. <UserControl x:Class="TestSL.Page" xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> col risultato che il contenuto SilverLight non occupa tutta la client area del browser. Le possibili soluzioni sono: Eliminare la definizione di Width e Height col risultato che il designer di Visual Studio 2008 va in crisi. Sostituire Width e Height con MinWidth e MinHeight col problema evidente quando la dimensione...

posted @ martedì 18 marzo 2008 00:15 | Feedback (0)

Application.GetResourceStream in Silverlight 2.0

Partendo da questo post di Jeff Prosise ho perso un pò di tempo per capire perchè non funzionasse e alla fine l'unica soluzione che ho trovato è iniettare una nuova immagine nel visualtree (ma non escludo problemi alla mia macchina). Mentre facevo qualche test ho notato un piccolo bug nella Beta1 relativo a Application.GetManifestStream(); Questo codice funziona correttamente in un applicazione WPF Uri uri = new Uri("giulia3.jpg", UriKind.Relative); StreamResourceInfo sri= Application.GetResourceStream(uri); mentre in un applicazione Silverlight 2.0 il metodo GetResourceStream ritorna null, al momento l'unica soluzione è quella di usare il...

posted @ domenica 16 marzo 2008 12:45 | Feedback (0)

WPF vs Silverlight 2.0: Attenzione ai routed events...

Spulciando la documentazione di Silverlight 2.0 ho notato una diversa gestione dei routed events rispetto a WPF che in alcuni casi può modificare il comportamento finale di un applicazione. Partiamo da questo XAML scritto per WPF: <Window x:Class="WPF_RoutedEvents.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF routed events" Height="288" Width="473"> <Grid MouseLeftButtonDown="Grid_MouseDown"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" MouseLeftButtonDown="StackPanel_MouseDown"> <Image HorizontalAlignment="Center" Source="BMP.png" Height="75" /> <Image HorizontalAlignment="Center" Source="JPG.png" Height="75"...

posted @ lunedì 10 marzo 2008 20:39 | Feedback (0)

Silverlight 2.0 on Webhost4Life

Per quelli di voi che hanno Webhost4Life come servizio di hosting e vogliono pubblicare la propria applicazione Silverlight 2.0, le operazioni per configurare il server sono: Attivare, ovviamente, il supporto a .NET per la directory che ospita il progetto (Io ho impostato il supporto a 3.0/3.5) Aggiungere al proprio sito il supporto all'estensione MIME xap nel pannello di controllo usando: MIME Type: application/x-silverlight-app Estensione: .xap Enjoy Silverlight 2.0 programming! Technorati Tags: Silverlight 2.0,Webhost4Life

posted @ lunedì 10 marzo 2008 08:53 | Feedback (1)