<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Appunti di WPF</title>
        <link>http://blog.boschin.it/category/117.aspx</link>
        <description>In questa categorie posterò tutto ciò che uscirà dalla mia esplorazione di Widows Presentation Foundation</description>
        <language>it-IT</language>
        <copyright>Andrea Boschin</copyright>
        <managingEditor>codeblock@gmail.com</managingEditor>
        <generator>Subtext Version 1.9.2.19</generator>
        <item>
            <title>WPF Rocks... XeDotNet Rocks!</title>
            <link>http://blog.boschin.it/archive/2009/09/28/WPF-Rocks.-XeDotNet-Rocks.aspx</link>
            <description>&lt;p&gt;Giusto un appunto per ringraziare le quasi 70 persone che sono venute Venerdì sera al meeting di XeDotNet. E' pur vero che in questo periodo WPF tira, ma mai mi sarei aspettato di vedere persone arrivare fin da Frosinone e Napoli. Eroi a parte un grazie va a tutte le persone che ci hanno onorato con la loro presenza, che sono rimaste fino all'ultimo minuto sin oltre le 23:00 in trepido ascolto di Davide e Mauro, e che poi in gran numero sono venute al terzo tempo presso il Galloway di Mestre. &lt;/p&gt;  &lt;p&gt;E' stata una bella serata, spero che i preannunci di iscrizione numerosi che ci sono per i prossimi meeting si traducano in altrettante serate dense di tecnologia ma anche di condivisione.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ecb4ff3e-1b1f-4e0f-8806-725f82312bb8" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/XeDotNet" rel="tag"&gt;XeDotNet&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.boschin.it/aggbug/5240.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2009/09/28/WPF-Rocks.-XeDotNet-Rocks.aspx</guid>
            <pubDate>Mon, 28 Sep 2009 07:28:09 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/5240.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2009/09/28/WPF-Rocks.-XeDotNet-Rocks.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/5240.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/5240.aspx</trackback:ping>
        </item>
        <item>
            <title>Un meeting senza precedenti!</title>
            <link>http://blog.boschin.it/archive/2009/02/01/Un-meeting-senza-precedenti.aspx</link>
            <description>&lt;p&gt;Spendo due parole per ringraziare le persone che nella serata di Venerdì hanno letteralmente preso di assalto il nostro meeting su &lt;strong&gt;Windows Presentation Foundation&lt;/strong&gt;, costringendoci perfino a richiedere sedie aggiuntive all'hotel per ben due volte. Alla fine abbiamo totalizzato per la seconda volta nella storia del nostro ug una drop negativa (cioè abbiamo avuto più partecipanti che iscritti) fermandoci a 66 presenti. &lt;/p&gt;  &lt;p&gt;Certo l'argomento del meeting è tra i più sentiti in questo periodo, però mi piace pensare che le persone abbiano compreso l'importanza degli eventi che presentiamo in termini di occasioni di formazione personale e di incontro e condivisione. Ringrazio perciò tutti, e con particolare simpatia gli eroi che sono partiti da Trieste e da Adria, per raggiungere un meeting a 150 KM di distanza per poi rientrare nella notte.&lt;/p&gt;  &lt;p&gt;Un ringraziamento particolare va inoltre a Teorema che ha sponsorizzato l'intero semestre coprendo le spese vive dell'hotel fino a giugno. &lt;/p&gt;  &lt;p&gt;La nostra attività continua, spinti come siamo da questi successi e dal continuo incremento di soci che finanziano la nostra attività. Nonostante il periodo numerose persone hanno ritenuto importante sottoscrivere la nostra tessera per il 2009 versando la ragguardevole cifra di 50€ regalando a tutti la possibilità di finanziare 3 o 4 meeting.&lt;/p&gt;  &lt;p&gt;Vi aspetto tutti al prossimo appuntamento: &lt;a title="http://www.xedotnet.org/meet/silverlightnet.aspx" href="http://www.xedotnet.org/meet/silverlightnet.aspx"&gt;http://www.xedotnet.org/meet/silverlightnet.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:22b66811-05ff-41f1-8ed9-bf31c3cdd050" class="wlWriterEditableSmartContent"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/XeDotNet" rel="tag"&gt;XeDotNet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Community+Meeting" rel="tag"&gt;Community Meeting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WPF" rel="tag"&gt;WPF&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.boschin.it/aggbug/5152.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2009/02/01/Un-meeting-senza-precedenti.aspx</guid>
            <pubDate>Sun, 01 Feb 2009 15:36:06 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/5152.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2009/02/01/Un-meeting-senza-precedenti.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/5152.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/5152.aspx</trackback:ping>
        </item>
        <item>
            <title>Un concorso d'altri tempi?</title>
            <link>http://blog.boschin.it/archive/2008/12/17/Un-concorso-daltri-tempi.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blog.boschin.it/images/blog_boschin_it/WindowsLiveWriter/Unconcorsodaltritempi_85E7/MIX09_Color_RGB_tag_2.gif"&gt;&lt;img title="MIX09_Color_RGB_tag" style="display: inline; margin: 0px 10px 0px 0px" height="151" alt="MIX09_Color_RGB_tag" src="http://blog.boschin.it/images/blog_boschin_it/WindowsLiveWriter/Unconcorsodaltritempi_85E7/MIX09_Color_RGB_tag_thumb.gif" width="200" align="left" /&gt;&lt;/a&gt; Pensateci bene e rispondete a questo quesito: "cosa potete fare con 10K di codice in Silverlight o WPF?". Per quando la domanda può sembrare assurda, la risposta a questo quesito può essere davvero interessante e le conseguenze anche allettanti. &lt;/p&gt;  &lt;p&gt;Si tratta infatti di un nuovo concorso collegato al MIX 2009, tra i cui premi si trovano anche dei biglietti di ingresso alla prestigiosa manifestazione. Il primo premio addirittura vince 3 notti al prestigioso (quanto assurdo) Venetia di Las Vegas e una carta di credito con 1500$.&lt;/p&gt;  &lt;p&gt;Aldilà dei premi, sicuramente interessanti, devo dire che mi piace l'idea che sta dietro al concorso, un'idea con un sapore d'altri tempi, in cui davvero sviluppare con i Byte contati era cosa di tutti i giorni. &lt;/p&gt;  &lt;p&gt;Ma attenzione che 10K sono di "codice" e non di "compilato". :) Una sfida davvero estrema.&lt;/p&gt;  &lt;p&gt;Link: &lt;a title="http://2009.visitmix.com/MIXtify/TenKGallery.aspx" href="http://2009.visitmix.com/MIXtify/TenKGallery.aspx"&gt;INSPIRE THE WORLD WITH JUST 10K&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.boschin.it/aggbug/5131.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2008/12/17/Un-concorso-daltri-tempi.aspx</guid>
            <pubDate>Wed, 17 Dec 2008 08:32:14 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/5131.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2008/12/17/Un-concorso-daltri-tempi.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/5131.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/5131.aspx</trackback:ping>
        </item>
        <item>
            <title>Un po' di link alla rinfusa #3</title>
            <link>http://blog.boschin.it/archive/2007/09/24/Un-po-di-link-alla-rinfusa-3.aspx</link>
            <description>&lt;p&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://fortes.com/2007/09/17/introducing-sistr/" href="http://fortes.com/2007/09/17/introducing-sistr/" target="_blank" rel="tag"&gt;Introducing Sistr&lt;/a&gt; : Una libreria interessante per usare facilmente i downloadable fonts di Silverlight al posto del "banale" testo HTML&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ASP.NET&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/21/tip-trick-automating-dev-qa-staging-and-production-web-config-settings-with-vs-2005.aspx" target="_blank" rel="tag"&gt;Tip/Trick: Automating Dev, QA, Staging, and Production Web.Config Settings with VS 2005&lt;/a&gt; : La risposta ad una domanda ricorrente da parte di Scott Guthrie... "Come posso gestire le configurazioni di sviluppo e produzione nello stesso progetto di Visual Studio 2005?"&lt;/p&gt;  &lt;p&gt;&lt;a href="http://jdconley.com/blog/archive/2007/09/19/asp.net-centric-extensions.aspx"&gt;ASP.NET Centric Extensions&lt;/a&gt; : Una serie di Extension Methods pensati per lavorare meglio con ASP.NET. Da provare!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Presentation Foundation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://learnwpf.com/Posts/Post.aspx?postId=963aaf80-9712-4832-8c2f-e55339ec99d5"&gt;Free Vector Images for your WPF Projects&lt;/a&gt; : Un paio di utili link a risorse vettoriali per chi lavora con Windows Presentation Foundation&lt;/p&gt;&lt;img src="http://blog.boschin.it/aggbug/4841.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/09/24/Un-po-di-link-alla-rinfusa-3.aspx</guid>
            <pubDate>Mon, 24 Sep 2007 08:57:20 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4841.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/09/24/Un-po-di-link-alla-rinfusa-3.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4841.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4841.aspx</trackback:ping>
        </item>
        <item>
            <title>Appunti di WPF: Un po' di link alla rinfusa #2</title>
            <link>http://blog.boschin.it/archive/2007/06/19/Appunti-di-WPF-Un-po-di-link-alla-rinfusa-2.aspx</link>
            <description>&lt;p&gt;E' un po' di tempo che non pubblico molto su WPF, a causa di un lavoro che sto portando avanti che per ora mi assorbe fino all'ultimo minuto. Per oggi pubblico una serie di link che ho trovato nel web... &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;h4&gt;&lt;/h4&gt; &lt;p&gt;&lt;a title="Case Sensitivity of Xaml" href="http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!2055.entry" rel="tag"&gt;Case Sensitivity of Xaml&lt;/a&gt;: Robert Relyea spiega per quale motivo XAML è case-sensitive&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;h4&gt;&lt;/h4&gt; &lt;p&gt;&lt;a title="Silveright Breaking Changes between Mix and Version 1.0" href="http://blogs.msdn.com/jstegman/archive/2007/06/06/more-v-1-0-changes.aspx" rel="tag"&gt;Silveright Breaking Changes between Mix and Version 1.0&lt;/a&gt;: Un utile elenco delle braking changes tra la versione del Mix e la prossima release.&lt;/p&gt; &lt;h4&gt;&lt;/h4&gt; &lt;p&gt;&lt;a title="WPFPerf now available outside of the WPF SDK" href="http://blogs.msdn.com/henryh/archive/2007/06/05/wpfperf-now-available-outside-of-the-wpf-sdk.aspx" target="_blank" rel="tag"&gt;WPFPerf now available outside of the WPF SDK&lt;/a&gt;: E' stato pubblicato in versione stand-alone WPFPerf, il tool per le performance in WPF. Qualcosa anche &lt;a title="WpfPerf tools now available as a msi" href="http://blogs.msdn.com/llobo/archive/2007/06/12/wpfperf-tools-now-available-as-a-msi.aspx" rel="tag"&gt;qui&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.windowsclient.net" target="_blank" rel="tag"&gt;www.windowsclient.net&lt;/a&gt;: un nuovo sito sulle tecnologie WPF con anche una bella &lt;a title="WPF Showcase" href="http://windowsclient.net/community/showcase.aspx" target="_blank" rel="tag"&gt;gallery&lt;/a&gt; di applicazioni.&lt;/p&gt; &lt;p&gt;&lt;a title="Silverlight 1.1 Developer Reference" href="http://download.microsoft.com/download/f/2/e/f2ecc2ad-c498-4538-8a2c-15eb157c00a7/SL_Map_FinalNET.png" target="_blank" rel="tag"&gt;Silverlight 1.1 Developer Reference&lt;/a&gt;: Un'immagine PNG che riassume le feature di Silverlight.&lt;/p&gt; &lt;h4&gt; &lt;/h4&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:929580d7-8738-47d1-8dd9-5684623e426a" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Windows%20Presentation%20Foundation" rel="tag"&gt;Windows Presentation Foundation&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Silveright" rel="tag"&gt;Silveright&lt;/a&gt;, &lt;a href="http://technorati.com/tags/XAML" rel="tag"&gt;XAML&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blog.boschin.it/aggbug/4808.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/06/19/Appunti-di-WPF-Un-po-di-link-alla-rinfusa-2.aspx</guid>
            <pubDate>Tue, 19 Jun 2007 05:07:31 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4808.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/06/19/Appunti-di-WPF-Un-po-di-link-alla-rinfusa-2.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4808.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4808.aspx</trackback:ping>
        </item>
        <item>
            <title>Appunti di WPF: WPF Coding Guidelines</title>
            <link>http://blog.boschin.it/archive/2007/05/05/Appunti-di-WPF-WPF-Coding-Guidelines.aspx</link>
            <description>Paul Stovell ha pubblicato sul suo weblog una serie di linee guida per la stesura di codice XAML. Ad una prima analisi ci sono un po' di cose che non mi piacciono, ma comunque si tratta di un buon punto di partenza&lt;p /&gt;Link: &lt;a href="http://www.paulstovell.net/blog/index.php/xaml-and-wpf-coding-guidelines/"&gt;XAML and WPF coding guidelines&lt;/a&gt;&lt;img src="http://blog.boschin.it/aggbug/4781.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/05/05/Appunti-di-WPF-WPF-Coding-Guidelines.aspx</guid>
            <pubDate>Sat, 05 May 2007 09:53:55 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4781.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/05/05/Appunti-di-WPF-WPF-Coding-Guidelines.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4781.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4781.aspx</trackback:ping>
        </item>
        <item>
            <title>Appunti di WPF: ComponentOne public Beta</title>
            <link>http://blog.boschin.it/archive/2007/04/21/Appunti-di-WPF-ComponentOne-public-Beta.aspx</link>
            <description>&lt;p&gt;ComponentOne ha da qualche settimana iniziato una fase di beta test su prodotti dedicati a windows Presentation Foundation. La beta è pubblica ed è possibile iscriversi ad essa dal seguente indirizzo:&lt;/p&gt; &lt;p&gt;Link: &lt;a title="ComponentOne public Beta" href="http://www.componentone.co.uk/products.aspx?TabTypeID=1&amp;amp;ItemType=1&amp;amp;PanelIndex=1&amp;amp;ItemID=55639&amp;amp;SubCategoryTypeID=0&amp;amp;TabMapID=338&amp;amp;TabID=463" target="_blank" rel="tag"&gt;ComponentOne public Beta&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.boschin.it/aggbug/4774.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/04/21/Appunti-di-WPF-ComponentOne-public-Beta.aspx</guid>
            <pubDate>Sat, 21 Apr 2007 13:15:37 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4774.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/04/21/Appunti-di-WPF-ComponentOne-public-Beta.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4774.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4774.aspx</trackback:ping>
        </item>
        <item>
            <title>ASP.NET 2.0: DataBinding alla WPF</title>
            <link>http://blog.boschin.it/archive/2007/04/17/ASP.NET-2.0-DataBinding-alla-WPF.aspx</link>
            <description>&lt;p&gt;Da programmatore &lt;strong&gt;ASP.NET&lt;/strong&gt; quale sono c'è una cosa che invidio a &lt;strong&gt;Windows Presentation Foundation&lt;/strong&gt;. Non si tratta certo di animazioni, &lt;strong&gt;3D&lt;/strong&gt; e quant'altro che sono lontane anni luce da quel poco che si può fare con ASP.NET e con le recenti librerie &lt;strong&gt;AJAX&lt;/strong&gt; e quindi non vale nemmeno la pena di invidiarle. Piuttosto se guardiamo al &lt;strong&gt;DataBinding&lt;/strong&gt;, laddove ci sono delle profonde somiglianze, vi è anche una marcata differenza per quanto riguarda l'uso che se ne può fare in &lt;strong&gt;WPF&lt;/strong&gt; quando ad esempio si collegano più controlli tra di loro. La prima volta che ho visto uno dei tanti esempi di DataBinding usato per questo scopo, sono rimasto letteralmente affascinato pensando a quanto codice mi avrebbe risparmiato il poter usare una sintassi simile in ASP.NET. Nulla di trascendentale, magari un checkbox che abilita o disabilita un pannello, un porzione di pagina che cambia colore in accordo con il valore di una &lt;strong&gt;DropDowList&lt;/strong&gt; e così via, tutte cose che grazie al &lt;strong&gt;BindingEngine&lt;/strong&gt; di WPF sono di una banalità impressionante ma che richiedono molto codice ridondante in ASP.NET.&lt;/p&gt; &lt;p&gt;Beh, la bella notizia è che con un po' di astuzia e con una buona conoscenza del funzionamento del &lt;strong&gt;modello di compilazione di ASP.NET &lt;/strong&gt;(detto con tutta la modestia possibile, sia chiaro) la cosa si può fare eccome, e le differenze con WPF sono davvero minime, dettate soprattutto dal flusso di eventi che porta al rendering della pagina più che da altre sottigliezze. Ma prima di entrare nel merito di questa &lt;em&gt;&lt;strong&gt;proof-of-concept &lt;/strong&gt;&lt;/em&gt;che ho realizzato nelle serate della recente vacanza in Svizzera e che potete scaricare in coda a questo post, vale la pena di approfondire meglio con un piccolo esempio il funzionamento di WPF.&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Binding, ElementName &amp;amp; Path&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;In WPF per realizzare il DataBinding si fa uso di quella che comunemente viene definita una Markup Extension. Le Merkup Extension che ora non è il caso di approfondire sono delle estensioni che permettono di semplificare la sintassi di XAML per introdurre referenze ed estensioni che arricchiscono il suo significato. "Binding" è la markup extension che si incarica di collegare i dati agli elementi compositivi dell'interfaccia. La cosa curiosa è che mediante Binding è possibile specificare come sorgente dati un elemento dell'interfaccia stessa. &lt;/p&gt; &lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:d03d5649-b12f-49c4-bf1c-2b9728e9a271" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Margin&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="{Binding ElementName=sldDistance, Path=Value}"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Border&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Con una sintassi come quella specificata nel riquadro è possibile ad esempio specificare uno slider come sorgente dati di un Border. Il risultato sarà che spostando lo slider varia il margine del bordo. ElementName infatti specifica il legame con un ipotetico controllo Slider che porta questo nome mentre path referenzia la sua proprietà Value.&lt;/p&gt;
&lt;p&gt;Penso sia evidente a tutti la potenza di una sintassi del genere che nel caso di WPF consente di applicare delle logiche anche molto complesse grazie anche all'uso di Converter che nella fase di binding sono in grado di applicare delle conversioni ai dati che transitano in una direzione e nell'altra. Per un esempio completo di quanto descritto vi invito ad approfondire un &lt;a title="Animazioni e DataBinding" href="http://blog.boschin.it/archive/2007/03/31/XAML-Playground-Animazioni-e-DataBinding.aspx" target="_blank" rel="tag"&gt;post che ho scritto&lt;/a&gt; tempo fa.&lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Do it in ASP.NET&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;E' giunto il momento di mettere assieme i tasselli della soluzione che ho architettato per mimare in ASP.NET questo stesso comportamento. Il primo di essi si chiama ExpressionBuilder. Il più usato e famoso degli ExpressionBuilder è quello che in ASP.NET consente di specificare le risorse localizzate in una pagina. Si tratta semplicemente di un codeblock il cui prefisso è il simbolo del dollaro ($) che si comporta in modo molto particolare. Esso infatti viene valutato al momento della compilazione della pagina e da adito ad una piccola porzione di codice che assegna una attributo di un server control. Questo pezzetto di codice, generato per mezzo di CodeDOM viene inserito nella pagina compilata dal runtime ed è in grado di valorizzare la proprietà dui è associato applicando delle logiche particolari. Per una spiegazine estensiva vi invito a leggere un &lt;a title="Resources e ExpressionBuilders" href="http://blog.boschin.it/archive/2005/12/15/3782.aspx" target="_blank" rel="tag"&gt;a ltro mio post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L'idea che mi è venuta è quella di sfruttare un ExpressionBuilder per simulare la markup extension di WPF. Una cosa che occorre tenere presente è che la stringa che funge da parametro di un ExpressionBuilder viene passata per intero al metodo responsabile di generare il codice perciò è molto semplice introdurre una sintassi simile, se non identica a quella delle markup extension.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:e9884ec9-26ac-4618-9233-15f3313111a1" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;BackColor="&lt;/span&gt;&lt;span style="background-color: #FFFF00; color: #000000;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;$ Binding: ElementName&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;ddlColor, Path&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;=&lt;/span&gt;&lt;span style="background-color: #F5F5F5; color: #000000;"&gt;SelectedValue &lt;/span&gt;&lt;span style="background-color: #FFFF00; color: #000000;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
]]&gt;&lt;/style&gt;

&lt;p&gt;L'idea era buona, ma il problema è che il codice generato dalla ExpressionBuilder deve condurre all'assegnazione della proprietà cui è associata. Per questo mi ci è voluto un po' per arrivare ad un metodo alternativo, ma poi, meditando sull'uso degli Anonymous Methods ho trovato la giusta soluzione che ora provo ad illustrare. &lt;/p&gt;
&lt;p&gt;Il primo passo è stato creare un metodo statico, nella classe che rappresenta il Builder, il quale si occupi di raccogliere le informazioni dei controlli specificati nel Binding e le utilizzi nel metodo anonimo associato all'evento load della pagina. Ecco il metodo in questione:&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:3dfd58d3-2392-4fbd-b90c-8dc648dc4a37" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; T MakeBinding&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;T&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(
    Page page,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; boundControlId,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; boundPropertyName,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; targetControlId,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; targetPropertyName,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; converter,
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; converterParameter)
{
    page.Load &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;delegate&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, EventArgs e)
    {
        Control bound &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; page.Form.FindControl(boundControlId);
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (bound &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        Control target &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; page.Form.FindControl(targetControlId);
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (target &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

        Type boundType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; bound.GetType();
        PropertyInfo boundProperty &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; boundType.GetProperty(boundPropertyName);
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (boundProperty &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

        Type targetType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; target.GetType();
        PropertyInfo targetProperty &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; targetType.GetProperty(targetPropertyName);
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (targetProperty &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt;;

        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; targetValue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; targetProperty.GetValue(target, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
        IValueConverter converterInstance &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; CreateConverter(converter);
        boundProperty.SetValue(bound, 
            converterInstance.Convert(
                targetValue, 
                boundProperty.PropertyType, 
                converterParameter, 
                CultureInfo.CurrentUICulture), &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    };

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;(T);
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode-wrapper, .csharpcode-wrapper pre {
  background-color: #f4f4f4;
  border: solid 1px gray;
  cursor: text;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  margin: 20px 0px 10px 0px;
  max-height: 200px;
  overflow: auto;
  padding: 4px 4px 4px 4px;
  width: 97.5%;
}
.csharpcode-wrapper pre {
  border-style: none;
  margin: 0px 0px 0px 0px;
  overflow: visible;
  padding: 0px 0px 0px 0px;
}
.csharpcode, .csharpcode pre, .csharpcode .alt {
  background-color: #f4f4f4;
  border-style: none;
  color: black;
  font-family: consolas, 'Courier New', courier, monospace;
  font-size: 8pt;
  line-height: 12pt;
  overflow: visible;
  padding: 0px 0px 0px 0px;
  width: 100%;
}
.csharpcode pre {
  margin: 0em;
}
.csharpcode .alt {
  background-color: white;
}
.csharpcode .asp {
  background-color: #ffff00;
}
.csharpcode .attr {
  color: #ff0000;
}
.csharpcode .html {
  color: #800000;
}
.csharpcode .kwrd {
  color: #0000ff;
}
.csharpcode .lnum {
  color: #606060;
}
.csharpcode .op {
  color: #0000c0;
}
.csharpcode .preproc {
  color: #cc6633;
}
.csharpcode .rem {
  color: #008000;
}
.csharpcode .str {
  color: #006080;
}
]]&gt;&lt;/style&gt;

&lt;p&gt;Il metodo è un Generico perchè deve restituire un tipo conforme con la proprietà cui è associato il Binding. Esso poi riceve in ingresso i parametri che vengono estratti dalla stringa dell'ExpressionBuilder. In prima istanza non fa altro che agganciare un anonymous method all'evento load della pagina. Al momento in cui l'evento viene sollevato i parametri vengono usati per  trovare i controlli referenziati nella pagina e copiare i valori opportunamente trasformati dal convertitore prescelto oppure da quello di Default. Il convertitore altro non è che una classe che implementa l'interfaccia IValueConverter, la stessa che fa capo ai convertitori di WPF. Infine il metodo ritorna il valore di default per il tipo generico.&lt;/p&gt;
&lt;p&gt;L'expressionBuilder non fa altro che forgiare una chiamata al metodo statico MakeBinding&amp;lt;T&amp;gt;() con gli opportuni parametri:&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:855d9e7d-2fc2-4c6b-bffb-a8df2446e7cc" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; CodeExpression GetCodeExpression(
    BoundPropertyEntry entry, 
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; parsedData, 
    ExpressionBuilderContext context)
{
    Dictionary&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; values &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Parse(entry.Expression);

    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CodeSnippetExpression(
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(
            &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Elite.Web.UIDataBinding.BindingExpressionBuilder.MakeBinding&amp;lt;{0}&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;
                &lt;/span&gt;&lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;(this, ""{1}"", ""{2}"", ""{3}"", ""{4}"", ""{5}"", ""{6}"")&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
            entry.PropertyInfo.PropertyType.FullName,
            entry.ControlID,
            entry.PropertyInfo.Name,
            values[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ElementName&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;],
            values[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Path&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;],
            values.ContainsKey(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Converter&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
                values[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Converter&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] : &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
            values.ContainsKey(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ConverterParameter&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
                values[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ConverterParameter&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;] : &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;));
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si potrebbe fare meglio, usando bene le classi e i metodi di CodeDOM, ma per questo esempio è sufficiente. Tutto sommato il mio obbiettivo è di provare che il meccanismo funziona a dovere. Scaricando il codice troverete un piccolo esempio che associa ad AJAX l'utilizzo dell'ExpressionBuilder. La cosa ce vi invito a notare è che per realizzarlo non è stato necessario scrivere alcun codice nel codebehind della pagina perchè tutte i comportamenti sono conferiti mediante l'Expression Builder. Chi intendesse utilizzarlo tenga presenta che si tratta di poco più che un test, e che ha alcune limitazioni rispetto a WPF, dovute più che altro alla mancata implementazione:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La proprietà Path non consente di specificare un vero e proprio Path come in WPF ma solo il Control ID. &lt;br /&gt;
&lt;/li&gt;&lt;li&gt;I controlli vengono cercati solo al primo livello della gerarchia&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Specificare un converter è un po' difficile perchè richiede di immettere il namespace e la classe. Sarebbe meglio trovare un metodo per abbreviare la sintassi che altrimenti rischia di essere un po' troppo logorroico.-&lt;br /&gt;
&lt;/li&gt;&lt;li&gt;Le proprietà composte di ASP.NET non sono supportate (es. Font-Size)&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Tutte queste limitazioni sono facilmente superabili e probabilmente un po' alla volta cercherò di pubblicare nuove versioni se il Binder incontrerà il successo che ha avuto ASP.NET. Per il momento vi invito a provare l'esempio di cui potete vedere uno spezzone in questo riquadro:&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:a52584fa-edce-4377-9760-9ed1b81ece03" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="width:100%;;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;div &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;class&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="panel"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:Panel &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="pnlFont"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="server"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; CssClass&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="scroll-panel"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Height&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="100px"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:Image &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;id&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="imgSpiderman"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="server"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; ImageUrl&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="images/spiderman.jpg"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt;
            Width&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="&amp;lt;%$ Binding: ElementName=ddlSize, 
                                Path=SelectedValue, 
                                Converter=Elite.Web.UIDataBinding.UnitConverter %&amp;gt;"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; 
            Height&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="&amp;lt;%$ Binding: ElementName=ddlSize, 
                                 Path=SelectedValue, 
                                 Converter=Elite.Web.UIDataBinding.UnitConverter %&amp;gt;"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:Panel&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;p &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;class&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="control-row"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;label&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Size:&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;label&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:DropDownList &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="ddlSize"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="server"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; AutoPostBack&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ListItem &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="25%"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="25"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ListItem &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="50%"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="50"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ListItem &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="100%"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="100"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Selected&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="True"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ListItem &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="200%"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="200"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:ListItem &lt;/span&gt;&lt;span style="color: #FF0000;"&gt;Text&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="400%"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; Value&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;="400"&lt;/span&gt;&lt;span style="color: #FF0000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;asp:DropDownList&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;p&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;div&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Download: &lt;a title="Download sorgente" href="http://blog.boschin.it/download/Elite.Web.UIDataBinding.zip" target="_blank" rel="nofollow"&gt;Elite.Web.UIDataBinding.zip&lt;/a&gt; (23,4 Kb)&lt;/p&gt;
&lt;p&gt;Video: &lt;a title="Video demo" href="http://blog.boschin.it/download/binding_expressionbuilder.zip" target="_blank" rel="nofollow"&gt;Demo&lt;/a&gt; (72 KB)&lt;/p&gt;&lt;img src="http://blog.boschin.it/aggbug/4770.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/04/17/ASP.NET-2.0-DataBinding-alla-WPF.aspx</guid>
            <pubDate>Mon, 16 Apr 2007 23:44:56 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4770.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/04/17/ASP.NET-2.0-DataBinding-alla-WPF.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4770.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4770.aspx</trackback:ping>
        </item>
        <item>
            <title>Appunti di WPF: Expression distribuite con MSDN</title>
            <link>http://blog.boschin.it/archive/2007/04/04/Appunti-di-WPF-Expression-distribuite-con-MSDN.aspx</link>
            <description>Probabilmente la notizia è già girata ieri, ma la ribadisco perché serva da informazione di completamento per chi mi ha seguito al &lt;strong&gt;meeting&lt;/strong&gt; di un mese fa. In buona sostanza è stato annunciato che l'uscita dalla beta degli strumenti della linea "&lt;strong&gt;expression&lt;/strong&gt;" li vedrà disponibili al pubblico all'interno di &lt;strong&gt;MSDN Premium&lt;/strong&gt;.&lt;br /&gt;
La notizia non è per nulla scontata dato che precedenti rumors davano questi prodotti per completamente esclusi da &lt;strong&gt;MSDN&lt;/strong&gt;.&lt;img src="http://blog.boschin.it/aggbug/4767.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/04/04/Appunti-di-WPF-Expression-distribuite-con-MSDN.aspx</guid>
            <pubDate>Wed, 04 Apr 2007 01:06:10 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4767.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/04/04/Appunti-di-WPF-Expression-distribuite-con-MSDN.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4767.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4767.aspx</trackback:ping>
        </item>
        <item>
            <title>Appunti di WPF: Un po di link utili</title>
            <link>http://blog.boschin.it/archive/2007/03/19/4752.aspx</link>
            <description>&lt;p&gt;&lt;a title="E vs DHTML vs Flash vs WPF performance test" href="http://nerddawg.blogspot.com/2007/02/wpfe-vs-dhtml-vs-flash-vs-wpf.html"&gt;WPF/E vs DHTML vs Flash vs WPF performance test&lt;/a&gt;: Un test che mette a contronto le performance di DHTML, Flash, WPF e WPF/e con un benchmark. Il tentativo è interessante, ma secondo me ci sono alcuni dettagli che non lo rendono del tutto attendibile.  &lt;/p&gt; &lt;p&gt;&lt;a title="Xaml Editor List" href="http://rrelyea.spaces.live.com/Blog/cns!167AD7A5AB58D5FE!1695.entry"&gt;Xaml Editor List&lt;/a&gt;: Una serie di link agli editor free per WPF e WPF/e&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/mharsh/archive/2007/02/01/wpf-e-pad-and-others-updated-for-the-feb-ctp.aspx"&gt;WPF/E Pad and Others Updated for the Feb CTP&lt;/a&gt;: Alcuni tool per WPF/e&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/llobo/archive/2007/03/05/listening-to-dependencyproperty-changes.aspx"&gt;Listening to DependencyProperty changes&lt;/a&gt;: Un esempio di uso delle Dependency Property che spiega il meccanismo dell'override.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ekampf.com/home/blogs/developerzen/archive/2007/02/12/fun-controls-bag-9-new-wpf-controls-on-codeplex.aspx"&gt;Fun Controls Bag - 9 new WPF Controls on CodePlex&lt;/a&gt; Una collezione di 9 controlli per WPF scaricabili da Codeplex&lt;/p&gt;&lt;img src="http://blog.boschin.it/aggbug/4752.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Andrea Boschin</dc:creator>
            <guid>http://blog.boschin.it/archive/2007/03/19/4752.aspx</guid>
            <pubDate>Mon, 19 Mar 2007 08:43:34 GMT</pubDate>
            <wfw:comment>http://blog.boschin.it/comments/4752.aspx</wfw:comment>
            <comments>http://blog.boschin.it/archive/2007/03/19/4752.aspx#feedback</comments>
            <wfw:commentRss>http://blog.boschin.it/comments/commentRss/4752.aspx</wfw:commentRss>
            <trackback:ping>http://blog.boschin.it/services/trackbacks/4752.aspx</trackback:ping>
        </item>
    </channel>
</rss>