<?xml version="1.0" encoding="iso-8859-15"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xml:lang="it-it"><title>blogs.ASPItalia.com</title><id>http://blogs.aspitalia.com/nostromo/</id><link href="http://blogs.aspitalia.com/nostromo/" rel="self" type="application/rss+xml" /><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/" /><generator uri="http://feed.aspitalia.com/" version="1.0">feed.ASPItalia.com 'Caesar Reborn' 2009.6.29</generator><author><name>blogs.ASPItalia.com</name><uri>http://blogs.aspitalia.com/nostromo/</uri></author><updated>2009-05-19T09:50:00+00:00</updated><icon>http://gui.ASPItalia.com/images/aspitalia/syndication.gif</icon><entry><title>.NET Framework 4.0 beta 1: WPF 4.0</title><id>http://blogs.aspitalia.com/nostromo/post2497/.NET-Framework-4.0-Beta-1-WPF-4.0.aspx</id><updated>2009-05-19T09:50:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2497' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Con il rilascio del VS 2010 e del .NET Framework 4.0, Microsoft non apporta modifiche rivoluzionarie a WPF 4.0 ma ne consolida, amplia e migliora quelle che sono le peculiari caratteristiche.&lt;/p&gt;&lt;p&gt;WPF 4.0 supporta pienamente Windows 7, di conseguenza potremo dotare le nostre applicazioni del Multi-Touch, ovvero la possibilit&#224; di interagire con pi&#249; dita con l'interfaccia utente della nostra applicazione.&lt;/p&gt;&lt;p&gt;Per supportare in modo adeguato il&amp;#xa0; Multi-Touch&amp;#xa0; sono stati apportati dei cambiamenti all'elemento base di tutti gli oggetti della nostra interfaccia, ad esempio il tipo UIElement&amp;#xa0; riconosce gesti come il double-tap o&amp;#xa0; il rollver.&lt;/p&gt;&lt;p&gt;Ma Windows 7 non &#232; solo Multi-Touch, non pu&#242; non saltare all'occhio la nuova Taskbar, la quale se vogliamone ne rivoluziona l'utilizzo in ambiente Windows.&lt;/p&gt;&lt;p&gt;WPF 4.0 supporta pienamente la nuova TaskBar introducendo il supporto alle Jumplists, Progress bars, Thumbnails e Icon Overlay.&lt;/p&gt;&lt;p&gt;In generale l'integrazione di WPF con Windows e con le applicazioni che lo hanno reso celebre &#232; notevolmente migliorata, ad esempio per creare UI coerenti &#232; stato introdotto il supporto alle Ribbon, quella particolare interfaccia resa celebre da Office 2007.&lt;/p&gt;&lt;p&gt;WPF 4.0 supporta Ribbontabs, Ribbongroups e&amp;#xa0; Keytips il tutto condito dal supporto a Design time.&lt;/p&gt;&lt;p&gt;Nel campo grafico &#232; stata introdotta la possibilit&#224; di gestire in modo fine e granulare il caching degli elementi renderizzati, cos&#236; da migliorare le performace generali, miglioramenti anche nel rendering del testo, adesso molto pi&#249; nitido e definito.&lt;/p&gt;&lt;p&gt;In WPF 4.0 viene introdotto un concetto derivato da Silverlight 2.0, il Visual State Manager, ovvero la possibilit&#224; di associare ad un particolare stato logico di un controllo uno stato visivo, bench&#233; in WPF mediante i trigger sia possibile fare questo e molto altro, spesso l'implementazione pu&#242; risultare difficoltosa, complessa e difficilemente gestibile mediante tool.&lt;/p&gt;&lt;p&gt;Sul fronte Tool, una delle caratteristiche pi&#249; desiderate in assoluto &#232; l'introduzione nel VS 2010 dell'Intellisense per le Markup exstension, &#232; stato inoltre migliorato il DataBinding e in generale &#232; possibile editare pi&#249; propriet&#224; attraverso l'IDE, senza la necessit&#224; di editare manualemente lo XAML.&lt;/p&gt;&lt;p&gt;Maggiori informazioni e le informazioni per il download sono disponibili nel nostro mini-sito dedicato al &lt;a href=&quot;http://netfx4.winfxitalia.com/&quot;&gt;.NET Framework 4.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_4.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 4.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Visual_Studio/&quot; rel=&quot;tag&quot;&gt;Visual Studio&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_7/&quot; rel=&quot;tag&quot;&gt;Windows 7&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Client/&quot; rel=&quot;tag&quot;&gt;Windows Client&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework/&quot; rel=&quot;tag&quot;&gt;.NET Framework&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="AVALON"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2497/.NET-Framework-4.0-Beta-1-WPF-4.0.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2497/.NET-Framework-4.0-Beta-1-WPF-4.0.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2497.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2497</trackback:ping></entry><entry><title>Nuovo tipo di contenuti su SilverlightItalia</title><id>http://blogs.aspitalia.com/nostromo/post2495/Tipo-Contenuti-SilverlightItalia.aspx</id><updated>2009-05-14T15:56:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2495' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Da &lt;a href=&quot;http://www.silverlightitalia.com/script/48/Blue-Style-Button.aspx&quot;&gt;oggi&lt;/a&gt; inauguriamo il lancio di un nuovo tipo di contenuti su SilverlightItalia.&lt;/p&gt;&lt;p&gt;Non troverete pi&#249; solo script o articoli, ma anche materiale grafico per realizzare le vostre applicazioni.&lt;/p&gt;&lt;p&gt;Certo uno Style per un bottone &#232; poca cosa, ma dovevamo iniziare pur da qualcosa.&lt;/p&gt;&lt;p&gt;Dateci il vosto parere, su cosa vorreste trovare: sfondi, immagini vettoriali, Style e Template.&lt;/p&gt;&lt;p&gt;La galleria &#232; destinata a crescere ed espandersi nel tempo, quindi seguiteci! e dateci i vostri suggerimenti&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight_-_animazioni/&quot; rel=&quot;tag&quot;&gt;Silverlight - animazioni&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Silverlight_2.0/&quot; rel=&quot;tag&quot;&gt;Silverlight 2.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="Silverlight"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2495/Tipo-Contenuti-SilverlightItalia.aspx"/><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2495/Tipo-Contenuti-SilverlightItalia.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2495.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2495</trackback:ping></entry><entry><title>rilasciato Windows 8</title><id>http://blogs.aspitalia.com/nostromo/post2478/Rilasciato-Windows.aspx</id><updated>2009-04-01T04:35:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2478' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/rilasciatowindows8_78ee/senza%20nome-1_2.jpg&quot;&gt;&lt;img title=&quot;senza nome-1&quot; border=&quot;0&quot; alt=&quot;senza nome-1&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/rilasciatowindows8_78ee/senza%20nome-1_thumb.jpg&quot; width=&quot;240&quot; height=&quot;49&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Con una mossa a sorpresa MS ha reso disponibile la RTA di Windows 8, build 1.4.2009.&lt;/p&gt; &lt;p&gt;Tra le caratteristiche:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Supporto alla possibilit&#224; di ricompilare il kernel nei giorni pari.&lt;/li&gt; &lt;li&gt;La mancanza di documentazione ufficiale e la diffusione di informazioni solo tramite blog.&lt;/li&gt; &lt;li&gt;Supporto al quad touch, cos&#236; da poter usare mani e piendi per interagire con l'UI.&lt;/li&gt; &lt;li&gt;Supporto per un solo processore ma con mille core.&lt;/li&gt; &lt;li&gt;Rimozione di IE, WMP, Messenger e dell'UI per andare in contro alle esigenze dell'UE.&lt;/li&gt; &lt;li&gt;Supporto ad essere caricato da penna USB, CD e Vinile.&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;attendiamo uleriori informazioni sulla lista completa&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="Live Life"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2478/Rilasciato-Windows.aspx"/><slash:comments>1</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2478/Rilasciato-Windows.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2478.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2478</trackback:ping></entry><entry><title>PRISM comunicazione tra moduli</title><id>http://blogs.aspitalia.com/nostromo/post2477/PRISM-Comunicazione-Moduli.aspx</id><updated>2009-03-31T05:54:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2477' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Ci rivediamo dopo tre post, nel corso dei quali abbiamo creato il primo &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2464/composite-application-guidance-prism-primi-passi.aspx&quot;&gt;modulo&lt;/a&gt;, messo a dieta e dotato di una &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2472/prism-region-view.aspx&quot;&gt;faccia&lt;/a&gt;, figo tutto bello.&lt;/p&gt; &lt;p&gt;Ma adesso? ok realizzare un modulo e la rispettiva UI non &#232; difficile, ma cosa accade se la nostra applicazione Silverlight &#232; leggermente pi&#249; complessa di una TexBlock che saluta il mondo?&lt;/p&gt; &lt;p&gt;Poniamo di avere due moduli la cui UI del primo contiene un Button mentre l'altra la nostra TexBlock,&amp;#160; quello che vogliamo fare &#232; visualizzare del testo alla pressione del bottone nel primo modulo.&lt;/p&gt; &lt;p&gt;I moduli sono indipendenti e non si &quot;conoscono&quot; per farli comunicare &#232; necessario trovare&amp;#160; una strada che non comporti l'accoppiamento, lo so che non fare accoppiare i moduli sembra perfido, ma &#232; necessario&lt;img alt=&quot;smile_teeth&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_teeth.gif&quot; /&gt;.&lt;/p&gt; &lt;p&gt;Scherzi apparte creiamo un nuovo modulo, ricordo che affinch&#233; questo possa essere caricato dinamicamente, dobbiamo realizzare una Silverlight Applicazion e non una class library.&lt;/p&gt; &lt;p&gt;Con molta fantasia chiamiamo il modulo MyModule2, l'implementazione &#232; semplice, ci limitiamo a registrare la View nella Region principale della shell.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mymodule2_2.jpg&quot;&gt;&lt;img title=&quot;mymodule2&quot; border=&quot;0&quot; alt=&quot;mymodule2&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mymodule2_thumb.jpg&quot; width=&quot;244&quot; height=&quot;165&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;La View consiste in un semplice bottone.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mymodule2view_2.jpg&quot;&gt;&lt;img title=&quot;mymodule2view&quot; border=&quot;0&quot; alt=&quot;mymodule2view&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mymodule2view_thumb.jpg&quot; width=&quot;244&quot; height=&quot;208&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Ok abbiamo i due moduli e adesso come li facciamo comunicare? in PRISM usiamo la classe EventAggregator e CompositePresentationEvent.&lt;/p&gt; &lt;p&gt;La classe EventAggregator &#232; un deposito, un raccoglitore di eventi, mentre la classe CompositePresentationEvent mette a disposizione un servizio per la pubblicazione e sottoscrizione degli eventi.&lt;/p&gt; &lt;p&gt;La classe CompositePresentationEvent &#232; un tipo generico e quindi lo dobbiamo tipizzare con un ulteriore oggetto che utilizzeremo per trasportare informazioni da un modulo all'altro. &lt;/p&gt; &lt;p&gt;La classe che eredita da CompositePresentationEvent deve essere conosciuta a tutti e due i moduli, quindi la definiamo in una nuova Class Library e aggiungiamo i riferimenti a tutti e due i moduli.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/commlib_2.jpg&quot;&gt;&lt;img title=&quot;commlib&quot; border=&quot;0&quot; alt=&quot;commlib&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/commlib_thumb.jpg&quot; width=&quot;119&quot; height=&quot;244&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;L'implementazione &#232; semplice, la classe CommonEvent eredita da CompositePresentationEvent e la specializza per utilizzare come &quot;mezzo di trasporto&quot; CommonMessage.&lt;/p&gt; &lt;p&gt;Il modello a eventi di Prism non utilizza il classico modello del .net Framework, quindi nessuna dipendenza con EventArgs.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/compevent_2.jpg&quot;&gt;&lt;img title=&quot;compevent&quot; border=&quot;0&quot; alt=&quot;compevent&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/compevent_thumb.jpg&quot; width=&quot;244&quot; height=&quot;74&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;A questo punto la nostra View deve &quot;pubblicare&quot; CommonEvent alla pressione del bottone.&lt;/p&gt; &lt;p&gt;Per far questo nel construttore della View aggiungiamo un parametro del tipo IEventAggregator, grazie a Unity e alla dependency injection container ne riceveremo in regalo un istanza pronta all'uso.&lt;/p&gt; &lt;p&gt;Dall'istanza del tipo IEventAggregator, utilizzando il metodo GetEvent, otteniamo una nuova istanza del tipo CommonEvent, da quest'ultima utilizzando il metodo Publish pubblichiamo l'evento nell'event handler associato alla pressione del bottone (brutto gioco di parole)&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mudule2view_2.jpg&quot;&gt;&lt;img title=&quot;mudule2view&quot; border=&quot;0&quot; alt=&quot;mudule2view&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/mudule2view_thumb.jpg&quot; width=&quot;244&quot; height=&quot;147&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Utilizziamo la stessa tecnica in MyModule1per ottenere un istanza del tipo IEventAggregatore e CommonEvent ma stavolta non dobbiamo pubblicare niente ma solamente ascoltare e attendere,lo facciamo mediante il metodo Subscribe.&lt;/p&gt; &lt;p&gt;_commonEvent.Subscribe((message) =&amp;gt; { TextBlock1.Text = message.Messege; }, ThreadOption.UIThread, true); &lt;/p&gt; &lt;p&gt;Il metodo accetta 3 parametri, un delegato, il thred su cui eseguirlo e se mantenere &quot;viva&quot; o meno l'istanza della classe che riceve la notifica dell'evento.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/module1view_2.jpg&quot;&gt;&lt;img title=&quot;module1view&quot; border=&quot;0&quot; alt=&quot;module1view&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/module1view_thumb.jpg&quot; width=&quot;244&quot; height=&quot;108&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;L'immagine seguente mostra l'UI dopo la pressione del bottone ospitato sulla View del Modulo 2.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/event_2.jpg&quot;&gt;&lt;img title=&quot;event&quot; border=&quot;0&quot; alt=&quot;event&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismcomunicazionetramoduli_cd2f/event_thumb.jpg&quot; width=&quot;232&quot; height=&quot;244&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;A presto.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="work in progress"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2477/PRISM-Comunicazione-Moduli.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2477/PRISM-Comunicazione-Moduli.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2477.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2477</trackback:ping></entry><entry><title>Prism Region e View</title><id>http://blogs.aspitalia.com/nostromo/post2472/Prism-Region-View.aspx</id><updated>2009-03-20T13:19:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2472' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Ci siamo lasciati dopo aver creato il primo &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2464/composite-application-guidance-prism-primi-passi.aspx&quot; target=&quot;_blank&quot;&gt;modulo&lt;/a&gt; e successivamente averne ottimizzato le &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2465/ottimizziamo-dimesioni-modulo-prism.aspx&quot; target=&quot;_blank&quot;&gt;dimensioni.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ma diciamocela tutta, a cosa serve avere un modulo senza interfaccia? bhe a quasi nulla.&lt;/p&gt;&lt;p&gt;Oggi vedremo come dotare il nostro modulo di un'interfaccia.&lt;/p&gt;&lt;p&gt;Chiamiamo View la nostra porzione di UI e Region la parte della Shell, l'interfaccia princiapale dell'applicazione, dove dovr&#224; essere visualizzata.&lt;/p&gt;&lt;p&gt;Il compito di gestire le View e registare le Region &#232; del RegionManager, che mette a disposizione delle attached property per lo scopo.&lt;/p&gt;&lt;p&gt;Quindi registrato il namespace che ospita il regionManager &#232; sufficente utilizzare l'attached property RegionManager.RegionName per indicare il nome e la posizione della Region. &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/1_2.jpg&quot;&gt;&lt;img title=&quot;1&quot; border=&quot;0&quot; alt=&quot;1&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/1_thumb.jpg&quot; width=&quot;244&quot; height=&quot;54&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Creata la Region possiamo passare alla View che non &#232; null'altro che un semplice UserControl Silverlight.&lt;/p&gt;&lt;p&gt;Ne creiamo una semplicissima con un TextBlock.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/3_2.jpg&quot;&gt;&lt;img title=&quot;3&quot; border=&quot;0&quot; alt=&quot;3&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/3_thumb.jpg&quot; width=&quot;244&quot; height=&quot;205&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&#232; giunto il momento di modificare il nostro modulo affinch&#232; registri la View nel RegionManager.&lt;/p&gt;&lt;p&gt;Ma come fa il nostro modulo ad ottenere un'istanza del RegionManager che si trova nella Shell?&lt;/p&gt;&lt;p&gt;Senza dilungarmi troppo utilizzando la &amp;quot;tecnica&amp;quot; della dependency injection container.&lt;/p&gt;&lt;p&gt;Come sfruttare questa &amp;quot;tecnica&amp;quot;? Semplicemento dotando il nostro modulo di un costruttore che accetti un oggetto del tipo IRegionManager, probabilmente affronteremo questo argomento in un altro post, ma per adesso accontentiamoci di sapere che, PRISM o meglio Unity, riesce a passare automaticamente l'oggetto IRegionManager al modulo nel momento in cui viene costruito.&lt;/p&gt;&lt;p&gt;Con l'istanza del RegionManager, nel metodo Initialize, che il modulo deve implementare in quanto defintio nell'interfaccia IModule, registriamo la nostra View.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/2_2.jpg&quot;&gt;&lt;img title=&quot;2&quot; border=&quot;0&quot; alt=&quot;2&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/2_thumb.jpg&quot; width=&quot;244&quot; height=&quot;136&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Il metodo RegisterViewWithRegion accetta due parametri, il primo il nome della regione dove verr&#224; picchiata la View, il secondo il tipo della View.&lt;/p&gt;&lt;p&gt;Non ci rimane che lanciare l'applicazione e ammirarne il risultato.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/4_2.jpg&quot;&gt;&lt;img title=&quot;4&quot; border=&quot;0&quot; alt=&quot;4&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/prismregioneview_1359a/4_thumb.jpg&quot; width=&quot;214&quot; height=&quot;244&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Alla prossima dove vedremo come far comunicare due moduli senza che questi siano a conoscenza della rispettiva esistenza.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="work in progress"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2472/Prism-Region-View.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2472/Prism-Region-View.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2472.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2472</trackback:ping></entry><entry><title>Composite Application Guidance (PRISM) primi passi</title><id>http://blogs.aspitalia.com/nostromo/post2464/Composite-Application-Guidance-PRISM-Primi-Passi.aspx</id><updated>2009-03-08T17:46:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2464' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Cos&#232; PRISM?, essenzialmente una collezione di patterns e architetture per le applicazioni client.&lt;/p&gt;&lt;p&gt;In particolare Silverlight e WPF.&lt;/p&gt;&lt;p&gt;l'obbiettivo di PRISM &#232; aiutarci a costruire applicazioni modulari, solide, testabili, estendibili, manutenibili e redditizie.no.ok, questo lo aggiunto io&lt;img alt=&quot;smile_tongue&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_tongue.gif&quot; complete=&quot;true&quot; /&gt;.&lt;/p&gt;&lt;p&gt;Oggi volevo provare a parlarvi dei Moduli, da un punto di vista pratico, senza tediarvi con concetti ne architetturali ne di patterns, tanto non ne sarei capace e di sicuro sarei impreciso.&lt;/p&gt;&lt;p&gt;Un modulo&amp;#xa0; &#232; un unit&#224; logica che compie delle operazioni e possiede un UI (vedremo prababilmente in seguito)&lt;/p&gt;&lt;p&gt;Per iniziare a muovere i primi passi &#232; necessario scaricare PRISM, come ormai impone la moda, il progetto &#232; ospitato su &lt;a href=&quot;http://compositewpf.codeplex.com/&quot; target=&quot;_blank&quot;&gt;Codeplex&lt;/a&gt; e la versione di febbraio 2009 &#232; scaricabile dal sito &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;displaylang=en&quot; target=&quot;_blank&quot;&gt;MS&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Terminato il dowload lanciamo l'eseguibile, il quale provveder&#224; ad scompattare n file.&lt;/p&gt;&lt;p&gt;Rintracciate la cartella, seguite l'istruzioni contenute nel file Readme.text e compilate&lt;img alt=&quot;smile_nerd&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_nerd.gif&quot; complete=&quot;true&quot; /&gt;.&lt;/p&gt;&lt;p&gt;Alla fine le dll di cui avremo bisogno sono:&lt;/p&gt;&lt;li&gt;Microsoft.Practices.Composite.dll &lt;/li&gt;&lt;li&gt;Microsoft.Practices.Composite.Presentation.dll &lt;/li&gt;&lt;li&gt;Microsoft.Practices.Composite.UnityExtensions.dll &lt;/li&gt;&lt;li&gt;Microsoft.Practices.ServiceLocation.dll &lt;/li&gt;&lt;li&gt;Microsoft.Practices.Unity.dll &lt;p&gt;E' il momento di iniziare, l'obiettivo &#232; quello di creare un modulo, che non sia incluso nello xap dell'applicazione, ma che sia scaricabile separatamente.&lt;/p&gt;&lt;p&gt;Per creare questo tipo di modulo &#232; necessario creare una nuova applicazione Silverlight.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/1_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;177&quot; title=&quot;1&quot; alt=&quot;1&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/1_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Chiamiamolo MyModule1&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/2_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;218&quot; title=&quot;2&quot; alt=&quot;2&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/2_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Dalla finestra &amp;quot;Add Silverlight Application&amp;quot; colleghiamo la nostra applicazione ad un sito esistente, ma deselezioniamo la voce relativa alla creazione della pagina di test.&lt;/p&gt;&lt;p&gt;Io avevo un sito web gi&#224; pronto chiamato SandBox.&lt;/p&gt;&lt;p&gt;Dall'applicazione appena creata rimuoviamo App.xaml e Page.xaml, e dalle propriet&#242; dell'applicazione impostiamo Startup Object su none.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/1_4.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;177&quot; title=&quot;1&quot; alt=&quot;1&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/1_thumb_1.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Aggiungiamo quindi una nuova classe che chiameremo MyModule1, la classe per diventare un modulo, deve implementare l'interfaccia IModule contenuta nel namespace Microsoft.Practices.Composite.Modularity.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/4_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;133&quot; title=&quot;4&quot; alt=&quot;4&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/4_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Per adesso il modulo non fa assolutamente niente.&lt;/p&gt;&lt;p&gt;Creiamo una nuova applicazione Silverlight, che si occuper&#224; di caricare i moduli.&lt;/p&gt;&lt;p&gt;Rinominiamo l'UserControl Page che il VS genera in automatico in Shell, in futuro sar&#224;&amp;#xa0; l'elemento principale della nostra UI.&lt;/p&gt;&lt;p&gt;Aggiungiamo una nuova classe e chiamiamola bootstrapper, la classe deve ereditare da UnityBootstrapper namespaces Microsoft.Practices.Composite.UnityExtensions.&lt;/p&gt;&lt;p&gt;Cosa &#232; un bootstapper? una semplice classe che si occupa di inizializzare le applicazioni realizzare con PRISM.&lt;/p&gt;&lt;p&gt;Eseguiamo quindi l'override del metodo CreateShell e GetModuleCatalog.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/5_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;128&quot; title=&quot;5&quot; alt=&quot;5&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/5_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;In questa fase mi voglio concentrare sul metodo GetModuleCatalog, &#232; in questo metodo che decidiamo quali moduli caricare, e come.&lt;/p&gt;&lt;p&gt;Nel nostro caso imposando InitializationMode a WhenAvailable indichiamo all'applicazioni di iniziare a scaricare il modulo non appena avviata.&lt;/p&gt;&lt;p&gt;Il Download avviene background, e il modulo &#232; reso disponobile non appena possibile.&lt;/p&gt;&lt;p&gt;Il metodo AddModule della classe ModuleCatalog disponde di diversi OverLoad, nel nostro caso abbiamo creato e inizializzato una nuova istanza della classe ModuleInfo, ma come vedremo in seguito &#232; possibile definire i moduli da caricare in un file XAML.&lt;/p&gt;&lt;p&gt;Non dimentichiamo per&#242; di istanziare il nostro Bootstrapper, cosa che faremo nel event handler Application_Startup.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/7_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;53&quot; title=&quot;7&quot; alt=&quot;7&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/7_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Se lanciamo la nostra applicazione adesso vedremo ben poco, non avendo un UI, ma &#232; sempre possibile controllare l'attivit&#224; di rete, quindi armati di Firefox coadivato da FireBug ispezioniamo il transito.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/6_2.jpg&quot;&gt;&lt;img width=&quot;244&quot; height=&quot;137&quot; title=&quot;6&quot; alt=&quot;6&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/compositeapplicationguidanceprismprimipa_14c6c/6_thumb.jpg&quot; border=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Come &#232; possibile vedere dall'immagine, per prima cosa viene scaricato lo xap dell'applicazione, solo dopo quello relativo al modulo.&lt;/p&gt;&lt;p&gt;Ma perche dividere un applicazione a moduli? tolti i punti citati all'inizio non &#232; meno importante la necessit&#224; di risparmiare banda, ovvero scaricare il modulo solo quando &#232; necessario.&lt;/p&gt;&lt;p&gt;Certo adesso lo scarichiamo subito dopo l'avvio dell'applicazione, ma come vedremo in seguito &#232; possibile scaricare un modulo solo quando necessario.&lt;/p&gt;&lt;p&gt;Intendiamoci, &#232; gi&#224; possibile fare questo con Silverlight, senza l'aggiunta di altre librerie, ma PRISM oltre a farci risparmiare tempo e codice &#232; sicuramente pi&#249; strutturato.&lt;/p&gt;&lt;p&gt;Per adesso &#232; tutto, a presto, dove probabilmente vedremo come dotare di un UI la nostra applicazione modulare.&lt;/p&gt;&lt;/li&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="work in progress"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2464/Composite-Application-Guidance-PRISM-Primi-Passi.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2464/Composite-Application-Guidance-PRISM-Primi-Passi.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2464.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2464</trackback:ping></entry><entry><title>Ottimizziamo le dimesioni del modulo (PRISM)</title><id>http://blogs.aspitalia.com/nostromo/post2465/Ottimizziamo-Dimesioni-Modulo-PRISM.aspx</id><updated>2009-03-08T17:37:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2465' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Sabato ho realizzato il primo modulo con PRISM, dando uno sguardo alle dimensioni del modulo:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/6_2.jpg&quot;&gt;&lt;img title=&quot;6&quot; border=&quot;0&quot; alt=&quot;6&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/6_thumb.jpg&quot; width=&quot;244&quot; height=&quot;137&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;si potrebbe obbiettare che sono ragguardevoli considerato che non fa assolutamente nulla.&lt;/p&gt;&lt;p&gt;Per snellire il modulo, &#232; sufficente dalla cartella Referenc fare click con il tasto destro del mouse sulle due dll di PRISM o pi&#249; in generale suo ogni dll, e imposare a false la propriet&#224; Copy Local.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/9_2.jpg&quot;&gt;&lt;img title=&quot;9&quot; border=&quot;0&quot; alt=&quot;9&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/9_thumb.jpg&quot; width=&quot;244&quot; height=&quot;149&quot; /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Confrontando le dimensioni del modulo queste scese da 156 KB a soli 3KB.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/8_2.jpg&quot;&gt;&lt;img title=&quot;8&quot; border=&quot;0&quot; alt=&quot;8&quot; src=&quot;http://blogs.aspitalia.com/img/nostromo/ottimizziamoledimesionidelmoduloprism_10028/8_thumb.jpg&quot; width=&quot;244&quot; height=&quot;55&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="work in progress"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2465/Ottimizziamo-Dimesioni-Modulo-PRISM.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2465/Ottimizziamo-Dimesioni-Modulo-PRISM.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2465.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2465</trackback:ping></entry><entry><title>Modificare il controllo TreeView</title><id>http://blogs.aspitalia.com/nostromo/post2439/Modificare-Controllo-TreeView.aspx</id><updated>2008-12-02T07:00:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2439' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Durante la gestazione dell'ultimo &lt;a href=&quot;http://www.silverlightitalia.com/articoli/silverlight/sito-silverlight-2.0-frontend-animazioni.aspx&quot;&gt;articolo&lt;/a&gt; tra la difficolt&#224; emerse, una inerente il nuovo controllo TreeView per SL mi ha particolarmente infastidito.&lt;/p&gt;&lt;p&gt;Cliccate nel TreeView ma in un area vuota, vedrete come per magia che il TreeView perde la selezione attuale in favore del primo elemento.&lt;/p&gt;&lt;p&gt;Onestamente un comportamento fastidioso quanto indesiderato.&lt;/p&gt;&lt;p&gt;Questo comportamento trova riscontro in un &lt;a href=&quot;http://www.codeplex.com/silverlight/workitem/view.aspx?workitemid=1081&quot;&gt;Bug&lt;/a&gt; segnalato nell'apposito spazio su Codeplex e sembra sia stato risolto.&lt;/p&gt;&lt;p&gt;in attesa che sia pubblicato il nuovo codice sorgente, ecco la mia soluzione per evitare quel comportamento.&lt;/p&gt;&lt;p&gt;per prima cosa apriamo il file TreeViewItem.cs navigamo al metodo OnGotFocus e sostituiamo tutto con :&lt;/p&gt;&lt;p&gt;&lt;code&gt;protected override void OnGotFocus(RoutedEventArgs e) { base.OnGotFocus(e); } &lt;/code&gt;&lt;/p&gt;&lt;p&gt;ed eseguiamo l'override del metodo OnMouseLeftButtonDown:&lt;/p&gt;&lt;p&gt;&lt;code&gt;protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) &lt;/code&gt;&lt;code&gt;{ &lt;br /&gt;Select(true); // Activate the selection &lt;br /&gt;IsSelectionActive = true; &lt;br /&gt;UpdateVisualState(true);&lt;br /&gt; } &lt;/code&gt;&lt;/p&gt;&lt;p&gt;personalmente non ho capito e non ho codiviso la scelta di impostare la selezione ogni volta che il TreeView o meglio un TreeViewItem riceve il focus.&lt;/p&gt;&lt;p&gt;sono curioso e attendo la soluzione che verr&#224; da CodePlex.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="asp.net"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2439/Modificare-Controllo-TreeView.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2439/Modificare-Controllo-TreeView.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2439.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2439</trackback:ping></entry><entry><title>Silverlight 3 parola di Scott</title><id>http://blogs.aspitalia.com/nostromo/post2432/Silverlight-Parola-Scott.aspx</id><updated>2008-11-18T13:39:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2432' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Sembra passato un p&#242; in sordina, ma qualche giorno f&#224;, Scott nel suo ultimo &lt;a href=&quot;http://weblogs.asp.net/scottgu/rss.aspx&quot; target=&quot;_blank&quot;&gt;post&lt;/a&gt;&amp;nbsp;ha parlato anche di Silverlight 3, certo non ha detto molto ma queste semplici parole:&amp;quot;major graphics improvements (including 3D support and GPU hardware acceleration)&amp;quot;&amp;nbsp;fanno venire letteralmente l'acquolina in bocca.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Silverlight/&quot; rel=&quot;tag&quot;&gt;Silverlight&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/XAML/&quot; rel=&quot;tag&quot;&gt;XAML&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="link utili"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2432/Silverlight-Parola-Scott.aspx"/><slash:comments>5</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2432/Silverlight-Parola-Scott.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2432.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2432</trackback:ping></entry><entry><title>Perfezioniamo il ProfileDataSorce</title><id>http://blogs.aspitalia.com/nostromo/post2405/Perfezioniamo-ProfileDataSorce.aspx</id><updated>2008-10-13T12:14:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2405' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;&lt;a onclick=&quot;function anonymous()
{
blankUrl(this.href); return false;
}&quot; href=&quot;http://blogs.aspitalia.com/nostromo/post2403/datasource-profile.aspx&quot;&gt;Venerd&#236;&lt;/a&gt; ho proposto una soluzione per non perdere determinati automatismi quando si lavora con il Profile e ad esempio controlli tipo FormView.&lt;/p&gt;&lt;p&gt;La soluzione &#232; realizzare un ProfileDataSorce, per chi ha dato un occhiata al codice, si sar&#224; reso contro che tutto il meccaniscmo funziona finche le propriet&#224; del Profile rimangano stringhe.&lt;/p&gt;&lt;p&gt;Abbastanza limitativa come limitazione&lt;img alt=&quot;smile_teeth&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_teeth.gif&quot; /&gt;&lt;/p&gt;&lt;p&gt;Al fini di poter utilizzare tutti i tipi primitivi &#232; sufficente creare un metodo che si occupa di recuperare il converter adatto.&lt;/p&gt;&lt;code&gt;&lt;p&gt;private object ConvertType(Object value, Type type) &lt;br /&gt;{ &lt;br /&gt;&#160;&#160;&#160; if ((value != null) &amp;amp;&amp;amp; !type.IsInstanceOfType(value)) &lt;br /&gt;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string text = value as string; &lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (text != null) &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; TypeConverter converter = TypeDescriptor.GetConverter(type); &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (converter == null) &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return value; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return converter.ConvertFromInvariantString(text); &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (NotSupportedException) &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new InvalidOperationException(string.Format(&amp;quot;impossibile convertire nel tipo {0}, tipi non compatibili&amp;quot;, type.FullName)); &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (FormatException) &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new InvalidOperationException(string.Format(&amp;quot;impossibile convertire nel tipo {0}, formato non valido&amp;quot;,type.FullName)); &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return text; &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160; return value; &lt;br /&gt;}&lt;/p&gt;&lt;/code&gt;&lt;p&gt;e modificare ad esempio il metodo ExecuteUpdate cos&#236;:&lt;/p&gt;&lt;code&gt;&lt;p&gt;protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) &lt;br /&gt;{ &lt;br /&gt;&#160;&#160;&#160; foreach (DictionaryEntry item in values) &lt;br /&gt;&#160;&#160;&#160; { &lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = ConvertType(values[item.Key.ToString()], _profile[item.Key.ToString()].GetType()); &lt;br /&gt;&#160;&#160;&#160; } &lt;br /&gt;&#160;&#160;&#160; _profile.Save(); &lt;br /&gt;&#160;&#160;&#160; return 0; &lt;br /&gt;}&lt;/p&gt;&lt;/code&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="asp.net"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2405/Perfezioniamo-ProfileDataSorce.aspx"/><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2405/Perfezioniamo-ProfileDataSorce.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2405.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2405</trackback:ping></entry><entry><title>Un DataSource per il Profile</title><id>http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx</id><updated>2008-10-10T16:32:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2403' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;se come me diventare sempre pi&#224; prigri e anche un FindControl diventa faticoso, apprezzere sicuramente i vari xxxDataSource.&lt;/p&gt;&lt;p&gt;ma quando avete a che fare con il Profile? &lt;/p&gt;&lt;p&gt;bhe realizziamone uno ad hoc, cos&#236; non ci perdiamo nessun automatismo &lt;img alt=&quot;smile_teeth&quot; src=&quot;http://spaces.live.com/rte/emoticons/smile_teeth.gif&quot; /&gt;&lt;/p&gt;&lt;code&gt;&lt;p&gt;using System;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Collections.ObjectModel;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.Profile;&lt;br /&gt;using System.Collections;&lt;/p&gt;&lt;p&gt;namespace MyCustomControl&lt;br /&gt;{&lt;br /&gt;&#160;&#160;&#160; public class ProfileDataSourceControl : DataSourceControl&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override DataSourceView GetView(string viewName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new ProfileView(this, viewName);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160; public class ProfileView : DataSourceView&lt;br /&gt;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private ProfileBase _profile = null;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private HttpContext _context = null;&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; public ProfileView(IDataSource owner, string viewName): base(owner, viewName)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _context = HttpContext.Current;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (_context == null)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw new ApplicationException(&amp;quot;Impossibile ricavare il contesto della chiamata&amp;quot;);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile = _context.Profile;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override System.Collections.IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new Collection&lt;profilebase /&gt;() { _profile };&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteInsert(IDictionary values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile = ProfileBase.Create(_context.User.Identity.Name, _context.User.Identity.IsAuthenticated);&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = item.Value;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in values)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = values[item.Key.ToString()];&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (DictionaryEntry item in oldValues)&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile[item.Key.ToString()] = null;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; _profile.Save();&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return 0;&lt;br /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&lt;br /&gt;&#160;&#160;&#160; }&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/code&gt;il codice non &#232; completo, ad esempio non prendo mai in cosiderazione mai i vecchi valori e le chiavi, ma per farlo ci vuole davvero poco&lt;p /&gt;&lt;p&gt;nel lab trovare altri &lt;a onclick=&quot;function anonymous()
{
function anonymous()
{
function anonymous()
{
function anonymous()
{
blankUrl(this.href); return false;
}
}
}
}&quot; href=&quot;http://lab.aspitalia.com/50/ftpdatasource-datasource-ftp.aspx&quot;&gt;xxxDataSource&lt;/a&gt; creati da &lt;a onclick=&quot;function anonymous()
{
function anonymous()
{
function anonymous()
{
function anonymous()
{
blankUrl(this.href); return false;
}
}
}
}&quot; href=&quot;http://www.aspitalia.com/autori/cristian_civera.aspx&quot;&gt;Cristian&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="asp.net"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx"/><slash:comments>2</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2403/DataSource-Profile.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2403.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2403</trackback:ping></entry><entry><title>Un Anello per domarli, un Anello per trovarli, Un Anello per ghernirli e nel buio incatenarli,</title><id>http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx</id><updated>2008-09-03T23:24:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2381' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;&lt;img align=&quot;baseline&quot; src=&quot;http://byfiles.storage.live.com/y1pYs5ikKNrAg8aiPYYSPWYSjLjomDPOGeZ6-M2Tdlu6dhTQr2kVmtKTv0VMfykovf1&quot; border=&quot;0&quot; hspace=&quot;0&quot; complete=&quot;true&quot; /&gt;&lt;br /&gt;il giorno si sta sempre pi&#249; avvicinando...di che giorno si tratta? del giorno in cui ricevo l'anello... ma con meno poteri...l'anello del matrimonio.&lt;/p&gt;&lt;p&gt;Domenica 7 settembre alle 16:00:00&lt;/p&gt;&lt;p&gt;con tutta probabilit&#224; sar&#242; un&#160;p&#242; assente da giovedi sera, fino alla fine di settembre, a presto!&lt;/p&gt;&lt;p&gt;ciao marco&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="Live Life"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx"/><slash:comments>20</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2381/Anello-Domarli-Anello-Trovarli-Anello-Ghernirli-Buio.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2381.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2381</trackback:ping></entry><entry><title>Blend ostaggio di WPF</title><id>http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx</id><updated>2008-07-30T15:20:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2347' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Si Blend &#232; ostaggio di WPF, o meglio del modello a oggetti di WPF.&lt;/p&gt;&lt;p&gt;Quello che un tool dovrebbe fare &#232; nascondere la complessit&#224; di un sistema, o quanto meno renderne agevole l'utilizzo.&lt;/p&gt;&lt;p&gt;Prendiamo un esempio, una semplice animazione, il classico rettangolo che si sposta per lo schermo, in Blend selezionato un KeyFrame e vi trovate le propriet&#224; del KeyFrame: &lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/MS1.jpg&quot;&gt;&#160;fig1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Secondo me &#232; un errore, se selezione un KeyFrame mi aspetto di vedere i valori della propriet&#224; in quell'istante, per far questo, con precisione certosina (azzardatevi a disattivare lo snap sulla TimeLine) spostate la testina di riproduzione sul KeyFrame.&lt;/p&gt;&lt;p&gt;Quello che Blend dovrebbe fare&#160;&#160;&lt;a href=&quot;http://blogs.aspitalia.com/img/nostromo/NV1.jpg&quot;&gt;fig2&lt;/a&gt;&#160;&#232; visualizzare come detto, le propriet&#224; dell'oggetto in quel KeyFrame e permetterne la modifica, di conseguenza spostare le impostazione relative all'accelerazione sotto la TimeLine mostrando l'andamento completo tra i vari KeyFrame in modo da avere una visione completa.&lt;/p&gt;&lt;p&gt;Come accennai tempo &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx&quot;&gt;fa&lt;/a&gt;&#160;non mi va di criticare e basta, mi piace proporre, questo &#232; uno dei tanti (spero) post che far&#242; su Blend&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Expression_Blend/&quot; rel=&quot;tag&quot;&gt;Expression Blend&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Microsoft_Expression/&quot; rel=&quot;tag&quot;&gt;Microsoft Expression&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="work in progress"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx"/><slash:comments>5</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2347/Blend-Ostaggio-WPF.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2347.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2347</trackback:ping></entry><entry><title>Vacanze</title><id>http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx</id><updated>2008-07-30T14:16:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2348' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Pi&#249; o meno &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2102/Ore-Fine.aspx&quot;&gt;in questo periodo dell'anno&lt;/a&gt; mi preparavo per partire per il mare e chiudere l'anno.&lt;/p&gt;&lt;p&gt;Si per me l'anno non finisce a dicembre ma ad agosto, che ci volete fare sono strano (ho comprato un iPhone).&lt;br /&gt;Ma quest'anno niente, solo lavoro.&lt;/p&gt;&lt;p&gt;Tirando un bilancio dell'anno appena concluso :D , non posso fare a meno di notare luci e ombre, tra le luci l'esperienza di &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2316/Volta-Scorda-Mai.aspx&quot;&gt;speaker&lt;/a&gt;, veramente istruttiva, la conferma della nomina &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2201/Anno-MVP.aspx&quot;&gt;MVP&lt;/a&gt;&#160;e la visita a &lt;a href=&quot;http://blogs.aspitalia.com/nostromo/post2277/MVP-Summit-2008-Settimana.aspx&quot;&gt;Seattle&lt;/a&gt;, per ultima ma non per importanza l'esperienza di lavorare in MTV con &lt;a href=&quot;http://blogs.aspitalia.com/imperugo/&quot;&gt;Ugo&lt;/a&gt;, &lt;a href=&quot;http://blogs.aspitalia.com/daniele/&quot;&gt;Daniele&lt;/a&gt;, &lt;a href=&quot;http://blogs.aspitalia.com/SM15455/&quot;&gt;Stefano&lt;/a&gt; e &lt;a href=&quot;http://blogs.aspitalia.com/novecento/&quot;&gt;Alessio&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Ombre, le ombre sono tutte personali, onestamente sono poco soddisfatto delle &amp;quot;performance&amp;quot; di quest'anno sia sul lavoro sia come collaboratore del network.&lt;/p&gt;&lt;p&gt;Stanco e poco lucido mi distraggo facilmente, tutto questo ha fatto calare la qualit&#224; dei miei contributi sia sul forum sia&#160;&#160;nel lavoro.&lt;/p&gt;&lt;p&gt;Questa scarsa attenzione e fatica mi ha fatto pensare che forse il Developer non fosse il lavoro per me, e magari che le mia erano due braccia rubate all'agricoltura.&lt;/p&gt;&lt;p&gt;Non sono del tutto convito che il realt&#224; non sia cos&#236;, ma ho deciso di continuare, continuare a farvi compagnia che sia piacevole o meno :D&lt;/p&gt;&lt;p&gt;a quelli che possono, buone vacanze!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/Off_Topic/&quot; rel=&quot;tag&quot;&gt;Off Topic&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="Live Life"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2348/Vacanze.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2348.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2348</trackback:ping></entry><entry><title>TrueSpace 7 gratuito</title><id>http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx</id><updated>2008-07-24T08:59:00+00:00</updated><content type="text/html">&lt;img src='http://blogs.aspitalia.com/services/counter_rss.aspx?PostID=2343' border=&quot;0&quot; style=&quot;width:1px; height:1px;&quot; /&gt;&lt;p&gt;Tempo fa MS acquista Caligari, &#232; di ieri &lt;a href=&quot;http://blogs.msdn.com/virtualearth/archive/2008/07/23/announcing-truespace-for-virtual-earth-3d-development.aspx&quot;&gt;l'annuncio&lt;/a&gt;&#160;che TrueSpace diventa completamente gratuito e si integra con VE (Virtual Earth).&lt;/p&gt;&lt;p&gt;OK BELLO (scusate mi sto alterando)&lt;/p&gt;&lt;p&gt;qualcuno potrebbe rammentare a MS che WPF offre un supporto 3D,&#160;e che ancora oggi passati 2 anni dall'uscita non esiste un modellatore serio (non mi parlate di ZAM 3D per carit&#224;) che possa aiutare un grafico a creare qualcosa di pi&#249; complesso di un cubo.&lt;/p&gt;&lt;p&gt;detto questo correte a scaricarlo&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;a href=&quot;http://tags.aspitalia.com/.NET_Framework_3.0/&quot; rel=&quot;tag&quot;&gt;.NET Framework 3.0&lt;/a&gt;, &lt;a href=&quot;http://tags.aspitalia.com/Windows_Presentation_Foundation/&quot; rel=&quot;tag&quot;&gt;Windows Presentation Foundation&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;a href=&quot;http://www.aspitalia.com/&quot;&gt;(C) 2009 ASPItalia.com Network - All rights reserved&lt;/a&gt;&lt;/p&gt;</content><author><name>Marco Leoncini</name></author><category term="asp.net"/><link rel="alternate" type="text/html" href="http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx"/><slash:comments>0</slash:comments><wfw:comment>http://blogs.aspitalia.com/nostromo/post2343/TrueSpace-Gratuito.aspx#feedback</wfw:comment><wfw:commentRss>http://blogs.aspitalia.com/nostromo/CommentRSS2343.aspx</wfw:commentRss><trackback:ping>http://blogs.aspitalia.com/services/trackback.aspx?PostID=2343</trackback:ping></entry></feed>