Expression Blend 3Come credo, abbiate avuto modo di valutare, una delle importanti novità che caratterizza Expression Blend 3 Preview e Silverlight 3 Beta sono i "behavior": veri e propri "building block" di codiceutili a definire e associare in modo semplice e veloce l'interazione e le animazioni all'interno di un'applicazione Windows Presentation Foundation (WPF) e Silverlight. Attraverso l'uso dei behavior sarete in grado, senza l'esigenza di scrivere nemmeno una riga di codice, associare l'interazione e lanciare le animazioni che caratterizzeranno la vostra applicazione. In Expression Blend 3, saranno disponibili una serie di behavior che costituiscono l'asset di base - nell'"asset library" - per gestire le classiche "interazioni" (lanciare un'animazione, eseguire un video, aprire una pagina Web all'interno di un browser, etc), ma una delle potenzialità offerte dai behavior è quella di poterne facilmente costruire "custom" a seconda delle proprie esigenze di progetto. Per un overview su come un programmatore può facilmente costruire un vostro "behavior personalizzato" da riutilizzare, importandolo, all'interno di altri "n" progetti, vi rimando al post del mio "alter ego" Giuseppe Guerrasio - Architect Evangelist, dove descrive in dettaglio le dinamiche e le logiche per la definizione di un behavior dal punto di vista tecnico di sviluppo.

Dopo questa breve introduzione, vediamo ora da vicino, come è possibile utilizzarli all'interno di Blend 3.

Lo step iniziale della demo, sarà quello di downlodare la versione di Blend 3 RC, disponibile a questo link. Una volta installato, procediamo con la definizione di un nuovo progetto, in questo caso presupponiamo di voler realizzare un progetto Silverlight 3 (i behavior sono utilizzabili anche per lo sviluppo di applicazioni client WPF). La finalità di questo semplice esempio sarà quella di agganciare un behavior ad un bottone che mi permetta la gestione e l'apertura, al click sul bottone, di una pagina web in una nuova sessione del browser. Inseriamo quindi un semplice bottone e associamoli un semplice testo – banalmente "Click me" -  modificando le proprietà di content del bottone all'interno del pannello "Property".  Fatto ciò, avrete la vostra semplice applicazione con inserito il bottone, più o meno al centro dell'area di lavoro, ma attualmente al bottone non risulta associato nessun tipo di interazione. Qui entrano in gioco i behavior, all’interno della Gallery della Community di Expression, sono disponibili al downlod una raccolta di behavior di base che alcuni miei colleghi del team di Expression hanno messo a disposizione.
Silverlight 3 Button
La gallery della community, vuole essere uno dei punti di riferimento dove condividere e mettere a disposizione behavior, template, esempi di codice, etc in modo da mettere a disposizione il “know how” con tutti gli utenti che ruotano intorno al mondo Expression e Silverlight.
Una volta scaricato il file "zip" contenente i behavior - all'interno troverete una cartella "SilverlightPreviewBehaviors" contenente a sua volta un’altra cartella con i "file" di progetto e una cartella denominata "Assembly" contenente due "dll" - "Microsoft.Expression.Interactivity.dll" e "SLPreviewBehaviors.dll".

References
Importiamo quindi le ".dll" all'interno del nostro progetto Silverlight 3 appena creato. Molto semplicemente, andando all'interno della maschera "Projects" in Expression Blend e facendo tasto destro sulla cartella "References" potrete aggiungere le "dll" scaricate dalla Gallery. Le due "dll" contengono al proprio interno una serie di behavior, che verranno resi disponibili all'interno dell'asset library nell'apposita sezione dedicata ai "behavior".
In conclusione, procediamo quindi ad associare uno dei behaviors che abbiamo appena importato nel progetto, come “reference”, al bottone presente all'interno dell'applicazione. ll behavior da utilizzare per il nostro esempio è "HyperlinkAction", come potete intuire permette di associare e gestire l'apertura di un nuova pagina Web alla correlazione di una specifica azione su un controllo presente all'interno della nostra interfaccia. Più semplicemente rifacendoci al nostro esempio - "al click sul bottone" -> “apri una nuova pagina all'interno di una nuova sessione del browser”. Semplicemente facendo "drag & drop" del behavior "HyperlinkAction" dall’asset library direttamente sopra il "bottone" all’interno della nostra applicazione. Il gioco è fatto, un minimo di configurazione del behavior all’interno del pannello “property” per associarne il comportamento all’interazione dell’utente.
Ma vediamo velocemente cosa comporta l’operazione di configurazione. Le proprietà del behavior, esposte all’interno del pannello proprietà, permettono in prima istanza di associare un “trigger” a cui agganciare l’azione. Il trigger determina esattamente la “causa” che scatenerà l’azione associata al behavior. Nel nostro caso aprire una nuova finestra browser. Di default l’evento è attualmente associato all’evento “loaded”, in questo caso per un bottone potrebbe avere molto più senso associarlo al comportamento “click” sul bottone.
Behavior
Operando sul menù a tendina avrete modo di associarlo velocemente. Ultimo step, per il nostro esempio,definire l’url – l’indirizzo della pagina che si vuole far caricare nella nuova sessione del browser. Lanciamo quindi il “testing” dell’applicazione premendo “F5” da tastiera, verrà lanciata una finestra browser di test con all’interno il nostro bottone e al click sul bottone verrà lanciata una nuova sessione del browser con la pagina che è stata specificata nella configurazione del behavior.
Behavior Setting
Nelle precedenti versioni di Blend e Silverlight 2, per associare una semplice operazione di questo tipo, bisognava comunque scrivere un minimo di “code behind” al controllo e credo di non aver bisogno di conferme nell’ammettere che tali operazioni sono sempre state abbastanza “evitate” da persone, come me, che preferiscono occuparsi molto più del design e la progettazione dell’interfaccia grafica lasciando la parte di “code behind” ai nostri “alter ego” sviluppatori. Inoltre la loro modularità vi permetterà poi di riutilizzarli in altri progetti ottimizzando ulteriormente i tempi legati allo sviluppo di un progetto.