Hello Silverlight 2.0, again!
di Marco Leoncini, Alessio Leoncini, in Silverlight 2.0, 3 giugno 2008
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
XAML
Disegnare di un'applicazione Silverlight 2.0 non si discosta poi molto dalla precedente versione, il layout è naturalmente sempre creato utilizzando XAML, un linguaggio di markup derivato da xml già utilizzato con successo sia da WPF che WWF.
Tra le novità spicca senza ombra di dubbio la presenza delle Markup Expression, già utilizzate con successo in WPF per superare la verbosità e i limiti della attribute, property element e content element syntax.
Le Markup Expression sono una particolare sintassi che è possibile utilizzare per impostare le proprietà, sono delimitate dalle parentesi graffe, in modo da indicare al parser, delegato di trasformare il markup in istanze d'oggetti, che il loro contenuto deve essere trattato in modo particolare, questa possibilità sarà utilissima nell'impostare stili, utilizzare risorse e creare le espressioni di binding.
Parlando di risorse c'è da sottolineare che adesso non saranno un mero contenitore di animazioni, ma potranno contenere oggetti complessi come ad esempio gradienti, ma anche oggetti del CLR creati da noi, infatti ricordiamo che mediante XAML creiamo istanze di oggetti e impostiamo proprietà.
Managed Code
Il poco più di quattro MB la nuova versione di SilverLight 2.0 introduce sottoinsieme del .NET Framework il quale include il supporto per i generics, Linq e Linq to Xml, Isolate Storage, networking, collections e un ricco insieme di API che consente l'iterazione e l'integrazione tra il DOM HTML/Javascript e il codice .NET.
Al fine di fare chiarezza, va ricordato che per eseguire nel proprio browser preferito un'applicazione Silverlight non è assolutamente necessario che sul client sia installata una qualsiasi versione del .NET Framework.
La nuova architettura influenza in modo importante il deploy di un'applicazione, adesso il Plug-in scarica dal sito di origine un file con estensione XAP (si legge zap), un file zip che contiene gli assembly dell'applicazione, l'entrypoint per l'esecuzione dell'applicazione e tutti i metadati necessari.
Layout
La disposizione e organizzazione degli oggetti in una scena non ha mai presentato un problema in Silverlight, ma solo perche non vi era scelta su come farlo, l'unico approccio era utilizzare il posizionamento assoluto del Canvas.
Se il posizionamento assoluto è adeguato in più di una occasione, può rappresentare un ostacolo alla realizzazione di layout fluidi, ovvero ridimensionabili dall'utente.
Creare un layout fluido non è impossibile con la versione 1.0 ma per farlo è necessario una buona dose di javascript, per limitare la proliferazione di codice ripetitivo in tutti i nostri progetti, la versione 2.0 dispone di due nuovi panel, il Grid che potremmo assimilare alla classica tabella che anni di programmazione web ci ha abituato a utilizzare, e lo StackPanel che impila orizzontalmente o verticalmente gli elementi che contiene.
Controlli
Se le capacità multimediali di Silverlight 1.0 non sono da mettere in dubbio, vista la capacità di gestire agevolmente video, immagini bitmap e grafica vettoriale, il discorso si fa invece più complesso per quanto riguarda la creazione delle interfacce utente in modo semplice e rapido, poiché è del tutto assente una libreria di controlli.
Col passare del tempo questa mancanza è stata colmata dal fiorire di progetti paralleli e indipendenti dallo sviluppo ufficiale, alcuni ospitati su Codeplex.
La release 2.0 ha finalmente un set completo di controlli integrati, set talmente ricco da contenere addirittura controlli assenti in WPF, come ad esempio il Calendar o il Grid.
Come in WPF possiamo definire questi controlli lookless ovvero privi di look, quest'affermazione è naturalmente vera solo in parte, poiché i controlli hanno un aspetto predefinito, semplice e pulito, completamente modificabile tramite l'applicazione di Style e Template.
Data-Binding
Il supporto di Silverlight 2.0 ai principali linguaggi del .NET Framework ha aperto molti scenari di utilizzo anche dei principi di Data-Binding già noti nel mondo ASP.NET, Windows Form e WPF e finalmente implementati in questa versione del plugin.
Il concetto di Data-Binding si basa sulla creazione di una relazione tra la base dati e l'interfaccia utente, in modo da collegare i due strati applicativi senza realizzare un effettivo vincolo e lasciando la giusta agilità di sviluppo degli strati stessi.
In Silverlight i principi di Data-Binding sono stati sviluppati attraverso l'oggetto DataContext e la markup extension Binding da utilizzare all'interno di molte proprietà dei controlli:
<TextBlock x:Name="Title1" Text="{Binding Title}"></TextBlock> private void UserControl_Loaded(object sender, RoutedEventArgs e) { Article _article = new Article(); _article.Title = "Questo è il titolo dell'articolo"; Title1.DataContext = _article; }
In questo semplice esempio un'istanza dell'oggetto Article è associata alla TextBlock attraverso la proprietà DataContext, al momento dell'esecuzione del codice la proprietà specificata nella Markup Extension {Binding Title} valorizzerà la proprietà Text utilizzando il valore della proprietà Title dell'oggetto Article.
Tale processo è reso molto semplice dalla sua architettura ma è altrettanto utile e potente e può essere utilizzato in molteplici scenari non solo per le informazioni testuali ma anche per definire programmaticamente le caratteristiche visuali degli oggetti anche in funzione delle scelte dell'utente.
In linea generale gli oggetti di Data-Binding sono responsabili del disaccoppiamento tra lo strato business ed i controlli nell'interfaccia utente, attraverso tali oggetti è possibile regolare la modalità di distribuzione dei dati in tre modi:
- OneTime: i dati sono distribuiti dagli oggetti di business ai controlli utente una sola volta;
- OneWay: i dati sono distribuiti dagli oggetti di business ai controlli utente ogni volta che vengono modificati nel business layer;
- TwoWay: le modifiche ai dati sono distribuite da e verso gli oggetti di business ed i controlli utente ogni volta che in uno di essi avviene una modifica ai dati.
Per poter usufruire delle modalità OneWay e TwoWay è necessario che gli oggetti del business layer abbiano determinate caratteristiche definite nell'interfaccia INotifyPropertyChanged, implementando questa interfaccia la modifica dei valori delle proprietà degli oggetti attiva un processo di notifica gli controlli ad essi collegati della variazione del proprio stato, poiché in Silverlight non è necessario nessun ricaricamento di pagina per visualizzare le nuove informazioni, tale variazione è visibile in tempo reale:
Il Data-Binding aumenta le sue potenzialità insieme all'uso dei Converter, specifici oggetti attraverso cui definire le modalità di conversione o di elaborazione da utilizzare al momento dalla distribuzione dei dati verso i controlli utente.
Realizzare un oggetto Converter è molto semplice, è sufficiente implementare l'interfaccia IValueConverter definendo le modalità di trasformazioni dei dati dallo strato di business verso i controlli nel metodo Convert e viceversa con il metodo ConvertBack.
4 pagine in totale: <<Indietro 1 [2] 3 4 Avanti >>
Contenuti dell'articolo
Sullo stesso argomento
-
Applicazioni Silverlight con il cloud computing su Windows Azure
-
Aggiungere interattività al controllo Chart di Silverlight 3.0
-
Realizzare un sito completo in Silverlight: una galleria fotografica
-
Supporto audio e video in Silverlight 3.0
-
Effetti speciali sulle immagini in Silverlight 3.0
-
Anteprima di Expression Blend 3.0
-
Le novità di Silverlight 3.0 beta 1
-
Realizzare un menu riutilizzabile utilizzando DataTemplate e DataBinding
-
Un tocco di stile alle applicazioni Silverlight: style e template
-
Multithreading in Silverlight 2.0


















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.