Silverlight
La beta di Silverlight 5 ha introdotto una nuova interfaccia ICustomTypeProvider che permette di effettuare il binding tra elementi della UI ed oggetti la cui struttura non è nota a compile-time. Nello specifico, l’esigenza che questa interfaccia soddisfa è evidente quando si lavora con dati provenienti da fonti eterogenee (database, istanze XML, oggetti JSON, dati binari, csv etc.) che si desiderano presentare senza ricompilare ogni volta che viene aggiunto/rimosso un attributo, una colonna o un campo dalla sorgente dati. In questi contesti si può valutare di rendere flessibile il meccanismo di binding permettendo di aggiungere/rimuovere proprietà a runtime lasciando al...
La beta di Silverlight 5 ha introdotto una nuova interfaccia ICustomTypeProvider che permette di effettuare il binding tra elementi della UI ed oggetti la cui struttura non è nota a compile-time. Nello specifico, l’esigenza che questa interfaccia soddisfa è evidente quando si lavora con dati provenienti da fonti eterogenee (database, istanze XML, oggetti JSON, dati binari, csv etc.) che si desiderano presentare senza ricompilare ogni volta che viene aggiunto/rimosso un attributo, una colonna o un campo dalla sorgente dati. In questi contesti si può valutare di rendere flessibile il meccanismo di binding permettendo di aggiungere/rimuovere proprietà a runtime lasciando al...
nRoute è uno dei framework a supporto di applicazioni Silverlight sviluppate secondo il pattern M-V-VM. In merito, segnalo questo interessante articolo in cui si parla dell' introduzione di Reverse Commands.
Da un punto di vista pratico viene introdotta una nuova interfaccia IReverseCommand che estende la solita ICommand. Tale specializzazione permette di definire un trigger "di ritorno" dal View-Model verso la View una volta che un command è stato eseguito. L'aspetto interessante si trova quindi nel fatto che il target dell' IReverseCommand è la View e non il ViewModel.
Secondo i principi del pattern M-V-VM in Silverlight, esistono due meccanismi primari di comunicazione tra View e ViewModel:
Cambiamenti di stato relativi a databinding tra...
Con il potenziamento delle funzionalità out-of-browser, Silverlight 3+ è ormai una tecnologia matura per supportare scenari off-line. Nell’ Isolated Storage client-side, infatti, oggi possiamo gestire ad esempio un vero e proprio database engine. Ultimamente la mia attenzione è rivolta in particolare a due interessanti progetti (in beta): Silverlight Database siaqodb (object database per .NET, Mono and Silverlight) Technorati Tag: Silverlight,Isolated Storage
Più volte nello sviluppo Silverlight/WPF mi sono imbattuto nella necessità di utilizzare i file di risorsa (.resx) e devo dire che le prime volte mi sono trovato un po’ in difficoltà dal momento che non riuscivo a capire per quale arcano i miei binding dichiarativi nel codice XAML verso le mie risorse non funzionassero affatto. Andiamo per ordine: supponendo di definire un file di risorsa in questo modo ... ... in fase di design Visual Studio notifica uno “strano” errore, indipendentemente dal fatto che...
Una caratteristica di un controllo visuale che spesso e volentieri risulta gradevole è la possibilità di mostrare/nascondere il contenuto del controllo stesso tramite un effetto FadeIn/FadeOut. In genere, questo effetto è realizzato tramite una semplice animazione che lavora sull’Opacity del controllo (portandola da 1 a 0 e viceversa) e che magari imposta a Visible/Collapsed la proprietà Visibility subito dopo l’animazione in modo da riempire/liberare istantaneamente un’area specifica dello schermo. In molti casi risulta dunque utile legare l’ effetto FadeIn/FadeOut proprio alla proprietà Visibility del controllo, in modo da ottenere automaticamente le animazioni desiderate al momento della valorizzazione della proprietà (che...
La comunicazione tra Javascript and Silverlight è una tecnica che spesso rende molto semplice e potente l’introduzione di miglioramenti grafici nonché funzionali in applicazioni web preesistenti. In questo post viene mostrato nello specifico come integrare un password checker realizzato in Silverlight all’interno di un form ASP.NET di partenza, sfruttando javascript come “collante”.
Supponiamo by design che il password checker stabilisca 6 livelli di complessità raggruppabili in tre categorie: “Weak”,”Normal” e “Strong”:
1. Page.xaml
Partiamo dalla definizione del password checker in Silverlight. Gli elementi della UI di tale controllo, come mostrato nella figura sopra riportata, sono costituiti da 6 Rectangle...
Allo stato attuale, Silverlight 2 non possiede un modello di programmazione built-in per gestire il concetto di MasterPage così come avviene in ASP.NET a partire dalla versione 2.0. Ad ogni modo, per ovviare a tale mancanza, l'implementazione di una semplice soluzione custom che simula l'interazione tra una pagina "Master" e più pagine "Content" in Silverlight 2 non è poi così difficile.
L'obiettivo è fondamentalmente quello di definire un PlaceHolder all'interno di una pagina Master (che funge da RootVisual) in cui caricare e visualizzare varie pagine di contenuto. Per ottenere questo risultato vengono dunque definiti due UserControl: MasterPage e ContentPage.
- MasterPage
Supponiamo di definire la master page come un semplice UserControl, avente ad esempio il seguente classico layout:
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
...
Premessa: l'altro ieri ho partecipato all' 8° Workshop DotNetMarche dedicato a Silverlight. Un Alessandro in grande forma ha tenuto banco per più di 3 ore illustrando una gran quantità di contenuti interessantissimi: dalla presentazione di soluzioni/problematiche architetturali che interessano le RIAs alla realizzazione di controlli custom (finestre di navigazione e menu per Silverlight) , dalla creazione di un' infrastruttura multitargeting per il porting in WPF all' IoC. Insomma, un evento per veri buongustai!!! ( ...considerando soprattutto la seguente cena in compagnia di Alessandro, Gian Maria, Stefano, Andrea, Stefano, Alfredo e la buonissima bistecca alla fiorentina :D . )
Tornando all'oggetto...
Da un punto di vista dell'usabilità, è estremamente importante strutturare un' applicazione che gestisce molti contenuti in modo tale che l'utente possa navigare facilmente ed intuitivamente tra le varie pagine. Da un punto di vista dello sviluppo, invece, implementare un'infrastruttura di navigazione flessibile e testabile non è la cosa più semplice del mondo, ma può caratterizzare un aspetto critico. Purtroppo, a differenza del suo fratellone WPF, Silverlight 2 non include alcun supporto alla navigazione tra pagine! Questo significa che a meno di applicazioni piccole, ci troveremmo veramente nei pasticci se implementassimo la navigazione basandoci...
Mi è capitato di aver bisogno di un timer per gestire il FadeIn/FadeOut di una Toolbar di un VideoPlayer custom. In pratica, la Toolbar deve scomparire automaticamente con un effetto "fadeout" (storyboard) quando il mouse si trova in aree diverse dell'UI per un certo periodo di tempo. Inizialmente pensavo che si potesse implementare un workaround andando ad agire invasivamente nel behaviour della storyboard di fadeOut (come in questo esempio), poi documentandomi un po' mi sono reso conto che la soluzione più consigliabile è in generale quella di utilizzare la classe DispatcherTimer (System.Windows.Threading). Nel mio caso è bastato quindi implementare un...
Stavo provando ad utilizzare il controllo Slider di Silverlight 2 in un mio progetto quando mi accorgo dell'assenza della proprietà IsMoveToPointEnabled che invece è presente nell'alter ego in WPF. Ma nooooooo!!!! Fortunatamente c'è già chi ha elegantemente risolto il problema. Technorati Tag: Silverlight
Segnalo questo ottimo articolo su SilverlightShow in cui si spiega in maniera puntuale l'utilizzo del controllo GridSplitter in Silverlight 2.
Technorati Tag: Silverlight
Su Windows Live gallery è disponibile questo plug-in per WLW: Insert a Silverlight Streaming application. Appena installato troviamo un nuovo MenuItem su WLW. Ora abbiamo la possibilità di accedere direttamente al nostro Silverlight Streaming Account in cui abbiamo effettuato l'upload delle nostre streaming applications. Infatti una form ci fa inserire le nostre credenziali (ID + Key) ed accedere alla lista delle nostre Streaming Apps. Il plugin effettua l'embedding del player tramite l'inserimento nel codice HTML di un iframe avente come src la seguente pagina:http://silverlight.services.live.com/invoke/<AccountID>/<AppName>/iframe.html Technorati tags: Silverlight , WindowsLiveWriter
Li trovate qui. Alcuni sono veramente forti!!! Ah, si possono anche aggiungere i propri ;)
Per 'Isolated storage' in Silverlight si intende un meccanismo di memorizzazione lato client (non molto trasparente nel comportamento in verità), basato sul più generale Isolated Storage del Framework .NET. Realizzato tramite una semantica cookie-like per applicazioni con trust parziale,espone delle API che permettono di accedere ad un FileSystem virtuale ed ai relativi Stream di lettura/scrittura su file. Da un punto di vist pratico, ci sono diverse limitazioni a cui dobbiamo fare attenzione quando utilizziamo il sistema di "Isolated Storage" in Silverlight dal momento che esso è stato concepito per rendere più sicuro possibile l'accesso alle risorse lato client: Ad ogni applicazione Silverlight...
Sono disponibili nuovi esempi per la versione 1.1 di Silverlight. Ce ne sono di interessanti ;)... Technorati tags: Silverlight
Silverlight è ormai diventata l'implementazione "cross-platform" e "cross-browser" ufficialmente supportata del framework .NET. In particolare, una delle più importanti novità della release 1.1 Alpha è il supporto alla comunicazione XML su HTTP, che di fatto apre la strada allo sviluppo di scenari AJAX-like.Infatti, un' applicazione Silverlight-enabled può ora comunicare con un Web Service (in maniera sincrona o asincrona) tramite le due classi System.Net.BrowserHttpWebRequest (novità) e HttpWebResponse. Oltre al semplice interscambio di messaggi POX via Http, è possibile anche (e fortunatamente ;)) generare classi proxy, sebbene esse siano esclusivamente adibite alla comunicazione con ASP.NET AJAX Web Services basati su JSON. Nel seguente codice, è mostrato un banale esempio di richiesta/ricezione di messaggi POX via HTTP: // Invocazione...