free hit counter
June, 2008 - Pietro Brambati Blog - Site Home - MSDN Blogs

Pietro Brambati Blog

Developer's stories

June, 2008

  • Pietro Brambati Blog

    Silverlight 2 beta2 : “Configuration Specific Folder”

    • 1 Comments

    Sapete a cosa serve questo checkbox ?

    image

    Lo trovate nel wizard di creazione di un nuovo progetto creato con la beta 2 di Silverlight.

    Leggete la risposta qui.

  • Pietro Brambati Blog

    Silverlight 2 beta 2 - Event Bubbling

    • 2 Comments

    Con la beta 2 di Silverlight 2 ci sono dei cambiamenti nel modo in cui viene gestito il bubbling degli eventi in Silverlight. Con questo termine ci si riferisce alla funzionalità per cui alcuni eventi, quelli definiti in UIElement, che vengono scatenati su un elemento presente nel layout dell’applicazione vengo “portati” su e possono essere gestiti anche dagli handler(se presenti) di quegli elementi che li contengono. Mi spiego con un esempio: se inserisco un rettangolo in una griglia e premo il pulsante sinistro sul rettangolo questo evento può essere gestito (se presente) da un handler definito sul rettangolo e da un handler nel contenitore del rettangolo stesso (quindi la griglia nel nostro esempio). Questi eventi che possono essere gestiti da questo meccanismo di “Event Bubling” vengono definiti come Routed Events.

    Se non vogliamo che l’evento venga gestito da altri handler più esterni, basta impostare la proprietà e.Handled = true come prima proprietà all’interno del handler dell’evento (“ e” è il parametro di tipo EventArgs specializzato che arriva nel metodo).

    Per chi conosce WPF: non esiste con la beta 2 di SL 2 la possibilità di registrarsi ad un evento di tipo “handledEventsToo”. Il comportamento della beta 2 è diverso rispetto a quello che succedeva con la beta 1.

    Mi potrei aspettare che la stessa cosa succeda anche se inserissi un bottone e volessi gestire l’evento MouseLeftButtonDown. Con la beta 1 questo era vero, ma non con la beta 2 in cui questo evento è intrinsecamente già gestito e quindi “non scatta” e non può essere gestito. Se volete dunque gestire l’evento di click nel caso di un bottone dovete utilizzare l’evento Click, che è anche la cosa più intuitiva da fare. Potete anche leggere questo post per un esempio più dettagliato.

    Link utili:

    Se volete qualche dettaglio in più sulla gestionde degli eventi in Silverlight potete leggere a questo link oppure consultare la documentazione MSDN su Events Overview in Silverlight 2.

  • Pietro Brambati Blog

    Silverlight 2 beta 2 – Controlli e Visual State Manager

    • 0 Comments

    In questo post cercherò di raccontarvi le novità della beta 2 relative ai controlli e al Visual State Manger (VSM).

    Controlli

    Molti dei controlli che nella beta 1 erano inclusi nell’ SDK, ora sono stati inseriti nel run-time, che è diventato di conseguenza leggermente più grosso circa 4,6MB, rispetto ai 4 precedenti, ma questo consente di creare delle applicazioni più piccole, perché molto è già incluso nel run-time. I controlli si trovano ora in System.Windows.dll, chi ha usato la beta1 noterà delle diversità nei reference alle dll incluse di default nel progetto. Alcuni controlli: DataGrid, Calendar , GridSplitter e TabPanel (novità della beta 2) sono ancora a parte, li trovate in Windows.Controls.Extended.dll. Trascinando i controlli dalla toolbox di Visual Studio, vengono aggiunti i reference corretti al progetto e definiti i namespace nello XAML, come si vede dalla figura seguente per “my1” e “my”, che vegono aggiunti quando faccio drag& Drop dei controlli.

    clip_image002

    I tooltip non possono più essere impostati direttamente, ma devono essere impostati tramite il ToolTipService

    image

    Miglioramenti ai controlli esitenti e futuri

    Calendar, DataGrid, TextBox hanno subito miglioramenti che trovate descritti nel post di scottGu. Il WaterMarkTextBox non è più presente per rendere il framework della UI di Silverlight sempre più vicino a quello di WPF. Nella versione definitiva di Silverlight 2 saranno presenti molti altri controlli.

    Visual State Manager (VSM)

    Una delle novità più importanti della beta 2 è quello che viene definito il Visual State Manager, grazie al quale è più semplice ridefinire il template di un controllo, cioè il suo layout. Il VSM può essere utilizzato sia con i controlli custom che gli User Control. In generale possiamo pensare ad un bottone; modificare il template vuol dire cambiarne completamente l’aspetto, ma fare in modo che si presenti a tutti gli effetti come un bottone, cioè risponda ad un evento di click da parte dell’utente. Possiamo pensare all’operazione di personalizzazione del template di un controllo come se stessimo lavorando su una macchina a stati finiti. Il nostro controllo, ad esempio un bottone, ha diversi stati associati, ad esempio lo stato “Pressed”, “Normal” etc. che possono essere modificati. Rispetto a questo modello possiamo pensare di avere delle transizioni da uno stato al successivo. Ora lo stato del controllo definisce il layout del controllo in un particolare momento, ad esempio quando premo il bottone, il layout del suo stato pressed e rosso e quando è nello stato Normal è invece verde. Un’ transizione è un’animazione che porta il nostro controllo dallo stato Pressed allo stato Normal. Nella documentazione trovate documentati i diversi stati che ogni controllo può avere.

    La modifica del template di un controllo è supportata da Expression Blend 2.5 June Preview che supporta appieno questo modello.

    Da Visual Studio 2008, dopo aver installato i Tools per sviluppare per Silverlight 2 beta 2, posso accedere alla classe VisualStateManager, questa classe contiene gli stati del template del nostro controllo e si occupa di gestire la transizione da uno all’altro in base a quello che avviene sul controllo stesso.

    Da codice .NET posso ad esempio invocare il metodo GoToState sulla classe VisualStateManager per passare ad nuovo stato

    Facciamo un semplice esempio e creiamo un progetto Silverlight 2 con Blend 2.5 ed inseriamo due bottoni che rappresentano il bottone di Login e Logout che potremmo avere nella nostra applicazione. Posso selezionare uno dei bottoni, ad esempio quello di login, tasto destro, selezionare Edit Control Parts (Template) e quindi nel menù successivo Edit a Copy, come in figura:

    clip_image004

    Questa operazione crea nelle risorse dell’applicazione la copia del template del nostro bottone. Possiamo renderci conto quindi degli stati e delle transizioni nella nuova finestra States, come in figura:

    clip_image006

    Nella finestra ho evidenziato gli stati Normal e Pressed ed inoltre un asterisco ci dice che provenendo da qualsiasi stato se vado nello stato Mouse Over, viene attivata un’animazione della durata di circa 0,2s. Posso aggiungere anche delle transizioni che portano verso un qualsiasi stato.

    Se volete vedere come è fatto lo XAML generato, noterete qualcosa del genere:

    clip_image008

    In cui dovreste riuscire a distinguere gli stati (VisualState) e le transizioni (VisualTransition).

    Ora apriamo lo stesso progetto con Visual Studio 2008 e aggiungiamo un handler per la gestione dell’evento di click del secondo bottone quello di Logout. Questo semplice esempio ci permette di capire come utilizzare da codice la classe VisualStateManager per cambiare lo stato di un controllo, in questo caso “pilotando”  da un secondo controllo.

    clip_image010

    In questo caso al metodo GoToState viene passato il controllo al quale applicheremo un cambio di stato, cioè il bottone login, lo stato di destinazione “Disabled” e true come parametro per dire di utilizzare una transizione tra i due stati.

    L’utilizzo del Visual State Manger consente di creare più facilmente template per i controlli, inoltre Expression Blend 2.5 ora supporta questo modello, consentendo di lavorare con un tool in modo visuale, risparmiandoci di scrivere il codice per definire il layout, che personalmente non trovo entusiasmante da scrivere. Il progetto ottenuto è apribile da Visual Studio 2008 dove posso usare da .NET le opportune classi per interagire con questo modello.

    Altri link utili per approfondimenti

    Qui,qui e qui

  • Pietro Brambati Blog

    Silverlight 2 beta 2 dopo il weekend

    • 0 Comments

    La beta 2 è stata rilasciata tra la notte di venerdì e sabato, direi quindi che i colleghi di corp hanno rispettato quando annunciato al TechEd la scorsa settimana. Se non avete ancora letto la notizia direi che potete leggere il post ufficiale di scottgu qui. Sabato mattina sono giusto riuscito a far partire il post sul blog MSDN italy con il video (5 minuti) che avevo registrato qualche giorno fa, prima di essere fagocitato dal weekend :-). Ora che siamo giunti a lunedì ho un po’ di tempo per raccontare a chi legge per la prima volta le novità di questo rilascio.

    La beta2 è la naturale evoluzione della beta 1 di Silverlight 2, con in più la licenza go-live, che vi permette di iniziare ad usare SL 2 per fini commerciali.

    Cosa serve per iniziare a sviluppare con la beta 2 di Silverlight 2?

    Il modo più rapido è andare sul sito silverlight.net/GetStarted dove trovate tutto: se non avete una versione di Visual Studio 2008 potete scaricare una trial, dalla Standard in su. La beta 2 di Silverlight 2 è compatibile con la beta 1 di .NET Framework 3.5, a differenza della beta1 di SL. Ora scaricate il file Silverlight-chainer dal sito Microsoft che , verificherà la corretta installazione delle fix per Visual Studio 2008 RTM, installerà il run-time di Silverlight, l’SDK che contiene documentazione ed esempi ed i Tools per Visual Studio 2008: il tutto in un colpo solo!

    Ora procedete con l’installazione di Expression Blend 2.5 June CTP: questo è un tool per designer, ma anche per developer, nel senso che vi dà la possibilità di non scrivere il codice un “po’ noioso” che di solito ai dev non piace scrivere: personalmente non mi piace e trovo quasi impossibile come definire il gradiente di colore di un bottone! Una delle novità più importanti di Expression Blend è il supporto per il Visual State Manager (VSM), un pattern per realizzare lo “skinning” dei controlli, di cui vi parlerò in un prossimo post.

    Installate ora Deep Zoom Composer: è il tool che serve per lavorare con l’omonima tecnologia, che consente di far navigare un utente su web in immagini ad altissima risoluzione, andando sempre più in profondità per scoprire particolari difficilmente visibili dall’immagine nella visione originale: pensate quanto può essere bello avere delle immagini di dipinti di un museo e poter “navigare” nell’immagine a livelli di zoom diversi.

    Silverlight 2 beta 2 e compatibilità

    La beta 2 è compatibile con Silverlight 1.0 (RTW) , la versione di Silverlight già rilasciata, mentre ci sono alcune modifiche da apportare per chi ha usato la beta 1, le modifiche alle API sono documentate qui: breaking changes between beta 1 and beta 2. Per chi ha progetti con la beta 1 penso troverà utile anche questo post.

    Come rendersi conto che la beta 2 è installata ?

    Beh, andate sul sito www.microsoft.com/silverlight che vi dirà che avete installato l’ultima versione di SL

    clip_image002

    Facendo tasto destro sull’applicazione SL notiamo quache nuovo tab, come vedete in figura:

    clip_image004

    Il DRM è una delle novità della beta 2 , tramite il supporto a Windows DRM e PlayReady DRM.

    Inoltre è presente un tab per la gestione dell’ “Application Storage”. SL 2 dà la possibilità di avere uno spazio isolato, detto Isolated Storage, cioè uno spazio virtuale su file system, legato al profilo dell’utente e alle applicazioni web. Le applicazioni web condividono tale spazio a livello di dominio web ( ad esempio più applicazioni web nello stesso dominio microsoft.com, condividono la stessa quota). La quota iniziale è di circa 1MB (nella beta 2), ma è possibile, utilizzando un’opportuna API, aumentare lo spazio a disposizione. Le applicazioni SL 2 non hanno accesso diretto all’ I/O su disco dell’utente, per ovvie ragioni di sicurezza, ma possono avere accesso a questo spazio “protetto”. Nel tab potete abilitare sul client l’Application Storage e gestirlo, cancellando l’eventuale sapzio già allocato.

    clip_image006

    Documentazione on-line/off-line e Quick Start

    E’ già raggiungibile a questo url la documentazione su MSDN.

    Potete anche scaricare il CHM, consultabile offline.

    Qui potete raggiungere il quick start sulla beta 2.

     

    Ai prossimi post per approfondimenti …

  • Pietro Brambati Blog

    IIS 7 URL Rewriter Tech Preview 1

    • 8 Comments

    Una domanda tipica che mi viene fatta quando parlo di IIS 7 è se esista qualche meccanismo di rewrite degli url già fatto.  Un meccanismo/engine di rewrite degli url può avere diverse funzionalità, come quella di mascherare l’url “vero”, che gestisce la nostra richiesta, di rendere più facile da ricordare un url, piuttosto che facilmente indicizzabile da un motore di ricerca.

    Bene, da poco è disponibile una Techical Preview per IIS 7 di un modulo di URL Rewrite.

    Queste le funzionalità:

    • Motore basato su regole: a fronte di una richiesta http è possibile definire una regola per il match dell’url e definire quindi un’azione (Rule Action) da intraprendere.
    • Supporto alla sintassi delle regular expression e wildcard per il riconoscimento dell’url (pattern matching)
    • Le regole possono essere definite a livello globale ( nel file applicationHost.Config) o a livello locale (usando il file web.config)
    • Accesso agli header http e alle server variable, che possono essere usate per le scelte da intraprendere
    • Rule Actions: un’azione può far intraprendere diverse strade: abort di una request, invio di un codice custom al client etc.
    • Rewrite Maps: possibilità di definire coppie nome-valore tra url ricevuto come richiesta http e url che effettivamente viene eseguito.
    • UI integrata nella nuova console di IIS 7.
    • Tool per importare regole di rewrite definite con mod_rewrite di Apache.

    Per provarlo:

    Installate il file msi da uno dei link riportati sotto ( per piattaforma x86 e x64):

    image

    Ora aprite la console di IIS 7 (io sto usando Vista SP1, ma potete usare anche Windows Server 2008) e troverete una nuova opzione

    image

    Premendo add Rule nella scherma successiva potete ora creare una nuova regola , con le modalità elencate sopra

    image 

    A questo link trovate un tutorial che vi guiderà passo-passo nella realizzazione di una semplice regola, ma dove comunque vengono messe in luce le funzionalità di questo modulo.

    Potete anche vedere come realizzare una permalink per WordPress su una macchina configurata con FastCGI e WordPress.

     

    Link utili:

    Annuncio BillS IIS blog

    Tutorial: Using Url Rewrite Module

    Url Rewrite Module Configuration

    Download x86 CTP per IIS 7.0: http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1691

    Download x64 CTP per IIS 7.0: http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1692

Page 1 of 1 (5 items)