<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/"><channel><title>I Blogs di WPF Tips &amp; Tricks</title><link>http://blogs.wpfitalia.it/MainFeed.aspx</link><description /><generator>Subtext Version 2.5.1.19</generator><item><title>INotifyPropertyChanged serve davvero? S&amp;igrave;! Ma le cose si fanno complicate&amp;hellip;</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/09/10/INotifyPropertyChanged-serve-davvero-Sigrave-Ma-le-cose-si-fanno-complicatehellip.aspx</link><pubDate>Sat, 10 Sep 2011 21:47:06 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/09/10/INotifyPropertyChanged-serve-davvero-Sigrave-Ma-le-cose-si-fanno-complicatehellip.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/90.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/90.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/09/10/INotifyPropertyChanged-serve-davvero-Sigrave-Ma-le-cose-si-fanno-complicatehellip.aspx#comment</comments><slash:comments>7</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/90.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">INotifyPropertyChanged serve davvero? S&amp;igrave;! Ma le cose si fanno complicate&amp;hellip;</source><description>&lt;p&gt;Leggendo per caso il blog di Gianni Giaccaglini (&lt;a title="http://blogs.wpfitalia.it/GianniGiaccaglini/archive/2011/09/08/Binding-ADO-tramite-classe-ad-hoc.aspx" href="http://blogs.wpfitalia.it/GianniGiaccaglini/archive/2011/09/08/Binding-ADO-tramite-classe-ad-hoc.aspx"&gt;http://blogs.wpfitalia.it/GianniGiaccaglini/archive/2011/09/08/Binding-ADO-tramite-classe-ad-hoc.aspx&lt;/a&gt;) riguardo il binding verso dataset, ho notato un capitolo, “INotifyPropertyChanged server davvero?” e mi sono ricordato di un problema simile (forse lo stesso) che mi è capitato tempo fa.     &lt;br /&gt;Iniziamo dal codice xaml e il datacontext:&lt;/p&gt;  &lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;StackPanel&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;PrimaProp&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;PrimaProp&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;SecondaProp&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;SecondaProp&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Cambia"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Button_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;StackPanel&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;MyDataContext&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; PrimaProp { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; SecondaProp { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;span style="color: " /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;Qualcuno noterà che MyDataContext (nel codebehind viene impostata un istanza come DataContext) &lt;strong&gt;non implementa INotifyPropertyChanged&lt;/strong&gt;.

  &lt;br /&gt;Modificando una textbox ci si aspetterebbe che le altre non cambino perchè non si notifica alla vista che la proprietà è stata cambiata… &lt;strong&gt;E invece tutto funziona&lt;/strong&gt;!

  &lt;br /&gt;Ai tempi pensai che l’engine di wpf fosse abbastanza intelligente da usare un oggetto binding uguale se viene scritto uguale in più parti… invece no &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/645beb044ab2_13A0B/wlEmoticon-smile_2.png" /&gt;. 

  &lt;br /&gt;Se proviamo infatti a impostare via codice il binding (es: textbox1.SetBinding(TextBox.TextProperty, new Binding(“PrimaProp”))), con nuove istanze di Binding su diversi oggetti, continua ancora a funzionare.&lt;/p&gt;

&lt;p&gt;Proviamo a cambiare la proprietà del datacontext da codice tramite il bottone con: 
  &lt;br /&gt;(this.DataContext as MyDataContext).SecondaProp=”modifica da codice”… &lt;strong&gt;NON FUNZIONA&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Non sapendo dove andare a parare, ho cercato con google, e infine ho trovato la soluzione indicata qui: &lt;a title="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9365bb6a-b411-4967-9a03-ae2a810fb215/" href="http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9365bb6a-b411-4967-9a03-ae2a810fb215/"&gt;http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9365bb6a-b411-4967-9a03-ae2a810fb215/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sunto della soluzione&lt;/strong&gt;: 

  &lt;br /&gt;- Se un oggetto CLR implementa INotifyPropertyChanged, è cura del developer lanciare l’evento NotifyPropertyChanged 

  &lt;br /&gt;- Se un oggetto CLR NON implementa INotifyPropertyChanged, il binding lavora sul TypeDescriptor dell’oggetto. Esso va a registrare alla modifica delle proprietà tramite PropertyDescriptor.AddValueChanged().&lt;/p&gt;

&lt;p&gt;Quindi: 
  &lt;br /&gt;1) come far andare il codice precedente riguardo il bottone: 

  &lt;br /&gt;”semplice” (?!?) basta recuperare la PropertyDescriptor dell’oggetto e impostare così la proprietà: 

  &lt;br /&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;var&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; propertyDescriptor = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;TypeDescriptor&lt;/font&gt;&lt;/span&gt;.GetProperties(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.DataContext).Find(&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"SecondaProp"&lt;/font&gt;&lt;/span&gt;, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;); 

      &lt;br /&gt;propertyDescriptor.SetValue(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.DataContext, &lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"ModificaDaCodice"&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;2) come far smettere di andare il precedente esempio: 
  &lt;br /&gt;Implementiamo l’interfaccia INotifyPropertyChanged e propaghiamo l’evento solo per PrimaProp. &lt;u&gt;Questa funziona, ma SecondaProp no&lt;/u&gt; &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/645beb044ab2_13A0B/wlEmoticon-smile_2.png" /&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance (mentre l’ho fatto ho sentito l’esigenza di un altro post)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se eseguo il codice nel thread UI, le performance sono molto simili. 
  &lt;br /&gt;Se eseguo il codice in un altro thread, l’utilizzo di INotifyPropertyChanged risulta più rapido rispetto a PropertyDescriptor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusioni&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Data la flessibilità e la maggior facilità implementativa, la mia preferenza ricade indubbiamente a INotifyPropertyChanged. Le performance inoltre sembrerebbero avvalorare tale scelta. Quindi Me.NofifyPropertyChanged(“you”);&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/90.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>Silverlight 5 RC</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/09/01/Silverlight-5-RC.aspx</link><pubDate>Thu, 01 Sep 2011 19:57:50 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/09/01/Silverlight-5-RC.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/88.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/88.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/09/01/Silverlight-5-RC.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/88.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Silverlight 5 RC</source><description>&lt;p&gt;Un po’ in sordina, è stata annunciata la &lt;strong&gt;Release Candidate&lt;/strong&gt; di &lt;a target="_blank" href="http://www.silverlight.net/"&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; 5&lt;/strong&gt; che potete scaricare da &lt;a title="Silverlight Download" target="_blank" href="http://www.silverlight.net/downloads"&gt;qui&lt;/a&gt;. &lt;br /&gt;
Questa versione è rivolta sostanzialmente agli sviluppatori e non supporta la licenza go-live, pertanto niente produzione per le nuove applicazioni.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://10rem.net/blog/2011/09/01/silverlight-5-rc-now-available"&gt;Silverlight 5 RC now available&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/88.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Binding del controllo Slider in Silverlight4</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/08/09/Binding-del-controllo-Slider-in-Silverlight4.aspx</link><pubDate>Mon, 08 Aug 2011 22:57:19 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/08/09/Binding-del-controllo-Slider-in-Silverlight4.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/87.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/87.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/08/09/Binding-del-controllo-Slider-in-Silverlight4.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/87.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">Binding del controllo Slider in Silverlight4</source><description>&lt;p&gt;Oggi mi sono imbattuto in questo fastidioso problema: avete mai usato uno slider? se sì, avete mai messo in Binding le dependency property Minimum e Maximum oltre che a Value? vi è andato al primo colpo? fortunati … &lt;/p&gt;  &lt;p&gt;Il problema principale è l’ordine con cui si imposta. In ordine si dovranno impostare i binding per:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Maximum&lt;/li&gt;    &lt;li&gt;Minimum&lt;/li&gt;    &lt;li&gt;Value&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Se così non fate, Silverlight si perde qualcosa per strada &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/9a1bd31f4549_B41/wlEmoticon-smile_2.png" /&gt;. Una corretta dichiarazione è quindi:&lt;/p&gt;  &lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Slider&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Maximum&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Max&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Minimum&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Min&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Value&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Value&lt;/span&gt;&lt;span style="color: "&gt;,&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Mode&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;TwoWay&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Se, come me, provate a impostare prima Minimum e poi Maximum, noterete che il valore di Maximum non viene impostato (anzi, se debuggate Maximum verrà impostato a zero).&lt;/p&gt;

&lt;p&gt;Spero non perdiate tutto il tempo che io ho perso per capire il problema.&lt;/p&gt;

&lt;p&gt;ps: in WPF4 è order independent.&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/87.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>Visual Studio LightSwitch 2011 RTM</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/07/27/Visual-Studio-LightSwitch-2011-RTM.aspx</link><pubDate>Wed, 27 Jul 2011 07:54:59 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/07/27/Visual-Studio-LightSwitch-2011-RTM.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/86.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/86.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/07/27/Visual-Studio-LightSwitch-2011-RTM.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/86.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Visual Studio LightSwitch 2011 RTM</source><description>&lt;p&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: IT; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Disponibile dal &lt;strong&gt;26 luglio 2011&lt;/strong&gt; la &lt;strong&gt;&lt;a title="Visual Studio LightSwitch is here!" target="_blank" href="http://blogs.msdn.com/b/lightswitch/archive/2011/07/26/visual-studio-lightswitch-rtm-is-here.aspx"&gt;RTM di Visual Studio LightSwitch 2011&lt;/a&gt;!&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;"&gt;Il download è disponibile per tutti gli &lt;a href="http://msdn.microsoft.com/subscriptions/downloads" target="_blank" title="MSDN Subscription"&gt;abbonati MSDN&lt;/a&gt; mentre per il pubblico sarà disponibile a partire da giovedì 28 luglio. Ricordiamo che Visual Studio LightSwitch sarà disponibile solo a pagamento ed è disponibile in alternativa una versione &lt;a href="http://go.microsoft.com/fwlink/?LinkId=215475" target="_blank" title="LightSwitch 2011 Trial Version"&gt;trial di 90 giorni&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;"&gt;Inoltre, Visual Studio LightSwitch 2011 è disponibile sin da subito anche in v&lt;strong&gt;ersione localizzata in italiano&lt;/strong&gt;!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;"&gt;Sul blog ufficiale del &lt;a href="http://blogs.msdn.com/b/lightswitch" target="_blank" title="LightSwitch Team Blog"&gt;team di LightSwitch&lt;/a&gt; trovate tutti i link alle risorse dedicate al prodotto per iniziare sin da subito a sviluppare le vostre applicazioni.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;"&gt;Infine, vi ricordo che &lt;span style="font-weight: bold;"&gt;oggi, a partire dalle 18:00&lt;/span&gt;, ci sarà l'evento online speciale dedicato al rilascio di LightSwitch. Se non lo avete ancora fatto, potete registrarvi all'indirizzo &lt;a href="http://www.lightswitch.it/EventoLancioMicrosoftLightSwitch2011.aspx"&gt;http://www.lightswitch.it/EventoLancioMicrosoftLightSwitch2011.aspx.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt;"&gt;Vi aspettiamo!&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/86.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Evento on line con LightSwitch Tips &amp;amp; Tricks</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/06/16/Evento-on-line-con-LightSwitch-Tips-amp-Tricks.aspx</link><pubDate>Thu, 16 Jun 2011 20:01:38 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/06/16/Evento-on-line-con-LightSwitch-Tips-amp-Tricks.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/84.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/84.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/06/16/Evento-on-line-con-LightSwitch-Tips-amp-Tricks.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/84.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Evento on line con LightSwitch Tips &amp;amp; Tricks</source><description>&lt;p&gt;Se siete interessati a Microsoft LightSwitch e volete saperne di più su come collegarsi a diverse fonti dati, potete seguire un webcast live sul sito &lt;a title="LightSwitch Tips &amp;amp; Tricks" href="http://www.lightswitch.it/" target="_blank"&gt;LightSwitch Tips &amp;amp; Tricks&lt;/a&gt;, &lt;strong&gt;lunedì 20 giugno 2011, dalle 21:00 alle 22:00&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a title="Utilizzare Visual Studio LightSwitch con fonti dati esistenti, tra SQL Server, Azure e SharePoint" href="http://www.lightswitch.it/VisualStudioLightSwitchconfontidatiesistenti.aspx" target="_blank"&gt;&lt;font size="3"&gt;Utilizzare Visual Studio LightSwitch con fonti dati esistenti, tra SQL Server, Azure e SharePoint&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;em&gt;con &lt;a href="http://community.visual-basic.it/Alessandro" target="_blank"&gt;Alessandro Del Sole&lt;/a&gt; (Microsoft MVP&lt;/em&gt;)&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“In questo Live Meeting verrà dimostrato come utilizzare database SQL Server esistenti in LightSwitch, incluso l'utilizzo di stored procedure, e come interagire con altre strutture come SharePoint 2010 e SQL Azure.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;La partecipazione è gratuita e dovete essere registrati sul sito, quindi se non lo avete ancora fatto… questa è l’occasione buona &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/460132d30e5f_132CE/wlEmoticon-smile.png" /&gt;    &lt;br /&gt;Nella pagina dell’evento troverete anche il link per accedere al meeting.&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/84.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Unselect DataGridRow in DataGrid</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/06/01/Unselect-DataGridRow-in-DataGrid.aspx</link><pubDate>Wed, 01 Jun 2011 13:47:54 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/06/01/Unselect-DataGridRow-in-DataGrid.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/83.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/83.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/06/01/Unselect-DataGridRow-in-DataGrid.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/83.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">Unselect DataGridRow in DataGrid</source><description>&lt;p&gt;Oggi si è presentato il seguente problema: &lt;br /&gt;
Ho usato una griglia per applicare una sorta di filtro su un altro controllo in base alle DataGridRow selezionate; il cliente ha voluto che, cliccando fuori dalle colonne di una DataGrid, tutte le righe selezionate si deselezionassero (eliminando in questo modo il filtro).&lt;/p&gt;
&lt;p&gt;L’unico modo navito per farlo è cliccare sulla DataGridRow selezionata tenendo premuto il tasto CTRL.&lt;/p&gt;
&lt;p&gt;Ho quindi creato il codice qui sotto. &lt;br /&gt;
In pratica cliccando al di fuori delle colonne (parte destra della Griglia) si clicca su un elemento figlio di una DataGridRow ma non su un elemento figlio di una DataGridCell (si può vedere facilmente con WPF Inspector oppure con Snoop). &lt;br /&gt;
Testo quindi questa condizione e deseleziono tutto se verificata:&lt;/p&gt;
&lt;pre style="FONT-FAMILY: Consolas; BACKGROUND: white; COLOR: black; FONT-SIZE: 13px"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DataGridBehaviors&lt;/span&gt;
    {
        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; GetUnselectOnClickOutside(&lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt; obj)
        {
            &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;)obj.GetValue(UnselectOnClickOutsideProperty);
        }
        
        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; SetUnselectOnClickOutside(&lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt; obj, &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; value)
        { 
            obj.SetValue(UnselectOnClickOutsideProperty, value); 
        }
        &lt;span style="COLOR: blue"&gt;public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;readonly&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DependencyProperty&lt;/span&gt; UnselectOnClickOutsideProperty = 
            &lt;span style="COLOR: #2b91af"&gt;DependencyProperty&lt;/span&gt;.RegisterAttached(&lt;span style="COLOR: #a31515"&gt;"UnselectOnClickOutside"&lt;/span&gt;, &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;), &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: #2b91af"&gt;DataGridBehaviors&lt;/span&gt;), 
            &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;UIPropertyMetadata&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;, UnselectOnClickOutsidePropertyChangedCallback));
        
        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; UnselectOnClickOutsidePropertyChangedCallback(&lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt; depObj, &lt;span style="COLOR: #2b91af"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt; eventArgs)
        {
            &lt;span style="COLOR: #2b91af"&gt;DataGrid&lt;/span&gt; grid = depObj &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DataGrid&lt;/span&gt;;
            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (depObj != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
            {
                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; ((&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;)eventArgs.OldValue == &lt;span style="COLOR: blue"&gt;false&lt;/span&gt; &amp;amp;&amp;amp; (&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;)eventArgs.NewValue == &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;)     
                    grid.MouseLeftButtonUp += AssociatedObjectUnselectOnClickOutside;
                &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; 
                    ((&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;)eventArgs.OldValue == &lt;span style="COLOR: blue"&gt;true&lt;/span&gt; &amp;amp;&amp;amp; (&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;)eventArgs.NewValue == &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;)      
                    grid.MouseLeftButtonUp -= AssociatedObjectUnselectOnClickOutside;
            }
        }
        
        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; AssociatedObjectUnselectOnClickOutside(&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; sender, &lt;span style="COLOR: #2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e) 
        {
            &lt;span style="COLOR: #2b91af"&gt;DataGrid&lt;/span&gt; datagrid = e.Source &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DataGrid&lt;/span&gt;;
            &lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt; originalControl = e.OriginalSource &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt;; 
            &lt;span style="COLOR: #2b91af"&gt;DataGridCell&lt;/span&gt; cell; &lt;span style="COLOR: #2b91af"&gt;DataGridRow&lt;/span&gt; row;
            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (TryFindParent&amp;lt;&lt;span style="COLOR: #2b91af"&gt;DataGridRow&lt;/span&gt;&amp;gt;(originalControl, &lt;span style="COLOR: blue"&gt;out&lt;/span&gt; row) &amp;amp;&amp;amp; !TryFindParent&amp;lt;&lt;span style="COLOR: #2b91af"&gt;DataGridCell&lt;/span&gt;&amp;gt;(originalControl, &lt;span style="COLOR: blue"&gt;out&lt;/span&gt; cell)) 
            { 
                datagrid.UnselectAll();
            }
        } 
        &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;static&lt;/span&gt; &lt;span style="COLOR: blue"&gt;bool&lt;/span&gt; TryFindParent&amp;lt;T&amp;gt;(&lt;span style="COLOR: #2b91af"&gt;DependencyObject&lt;/span&gt; child, &lt;span style="COLOR: blue"&gt;out&lt;/span&gt; T result) &lt;span style="COLOR: blue"&gt;where&lt;/span&gt; T : &lt;span style="COLOR: blue"&gt;class&lt;/span&gt; 
        {
            &lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.Requires(child != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, &lt;span style="COLOR: #a31515"&gt;"child could not be null"&lt;/span&gt;); 
            &lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.Ensures(&lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.Result&amp;lt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&amp;gt;() == &lt;span style="COLOR: blue"&gt;true&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.ValueAtReturn&amp;lt;T&amp;gt;(&lt;span style="COLOR: blue"&gt;out&lt;/span&gt; result) != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;
                &amp;amp;&amp;amp; result &lt;span style="COLOR: blue"&gt;is&lt;/span&gt; T, &lt;span style="COLOR: #a31515"&gt;"Result found rule violated"&lt;/span&gt;); 
            &lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.Ensures(&lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.Result&amp;lt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&amp;gt;() == &lt;span style="COLOR: blue"&gt;false&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="COLOR: #2b91af"&gt;Contract&lt;/span&gt;.ValueAtReturn&amp;lt;T&amp;gt;(&lt;span style="COLOR: blue"&gt;out&lt;/span&gt; result) == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;, 
                &lt;span style="COLOR: #a31515"&gt;"Result not found rule violated"&lt;/span&gt;); 
            &lt;span style="COLOR: blue"&gt;var&lt;/span&gt; parent = &lt;span style="COLOR: #2b91af"&gt;VisualTreeHelper&lt;/span&gt;.GetParent(child); 
            result = parent &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; T;
            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (result != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)  
                &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;true&lt;/span&gt;; 
            &lt;span style="COLOR: blue"&gt;else&lt;/span&gt;        
                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (parent != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
                    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; TryFindParent&amp;lt;T&amp;gt;(parent, &lt;span style="COLOR: blue"&gt;out&lt;/span&gt; result);
                &lt;span style="COLOR: blue"&gt;else&lt;/span&gt; 
                    &lt;span style="COLOR: blue"&gt;return&lt;/span&gt; &lt;span style="COLOR: blue"&gt;false&lt;/span&gt;;
        }
    }&lt;/pre&gt;
&lt;p&gt;Questo è un behavior applicabile ad ogni griglia tramite AttachedProperty:&lt;/p&gt;
&lt;p&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE: 9.8pt"&gt;&lt;span&gt;&lt;font color="#a31515"&gt;DataGrid&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="FONT-SIZE: 9.8pt"&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; local&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;DataGridBehaviors.UnselectOnClickOutside&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"True" /&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Et voilà! Les jeux sont faits&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/83.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>WMAppManifest</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/05/10/WMAppManifest.aspx</link><pubDate>Tue, 10 May 2011 20:08:14 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/05/10/WMAppManifest.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/80.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/80.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/05/10/WMAppManifest.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/80.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">WMAppManifest</source><description>&lt;p&gt;Come probabilmente saprete, WMAppManifest.xml è un file presente nei progetti per windows phone 7, Silverlight o XNA che siano.&lt;/p&gt;  &lt;p&gt;Questo file DEVE essere editato prima di pubblicare l’applicativo; una delle sezioni da editare è la parte delle “Capabilities”, ovvero quello che l’applicazione sfrutta del telefono (sensori, networking, telefono, location ecc…).   &lt;br /&gt;Quali elementi usa la nostra bellissima app? basta seguire questo:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://frisoderidder.wordpress.com/2011/02/08/using-phone-7-capability-detection-tool/" href="http://frisoderidder.wordpress.com/2011/02/08/using-phone-7-capability-detection-tool/"&gt;http://frisoderidder.wordpress.com/2011/02/08/using-phone-7-capability-detection-tool/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In pratica tra i componenti installati dall’sdk c’è anche un tool che, dato in pasto un xml di regole e la cartella di output, mostra quali elementi impostare.&lt;/p&gt;  &lt;p&gt;Quello che forse non tutti sanno è che c’è anche questa libreria gratuita &lt;a title="http://coding4fun.codeplex.com/" href="http://coding4fun.codeplex.com/"&gt;http://coding4fun.codeplex.com/&lt;/a&gt; con la quale è possibile leggere facilmente le informazioni presenti nel file in questione (creando così facilmente una pagina “About”).    &lt;br /&gt;Basta referenziare la dll e utilizzare la classe PhoneHelper per esempio, per recuperare la versione, nel seguente modo:&lt;/p&gt;  &lt;p&gt;PhoneHelper.GetAppAttribute("Version");&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/80.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>HierarchicalDataTemplate</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/04/23/HierarchicalDataTemplate.aspx</link><pubDate>Sat, 23 Apr 2011 14:58:37 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/04/23/HierarchicalDataTemplate.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/79.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/79.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/04/23/HierarchicalDataTemplate.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/79.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">HierarchicalDataTemplate</source><description>&lt;p&gt;Dato che sul forum ci sono state molte domande riguardo il binding di wpf con i TreeView, ecco una semplice guida step-by-step.&lt;/p&gt;  &lt;p&gt;Per prima cosa, se occorre eseguire un binding gerarchico, serve una sorgente dati gerarchica. Ora me ne vengono in mente due:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Xml: per sua natura l’xml ha una struttura gerarchica e ben si adatta al treeview&lt;/li&gt;    &lt;li&gt;Oggetti (leggasi &lt;a href="http://it.wikipedia.org/wiki/Composite"&gt;composite pattern&lt;/a&gt;): in pratica classi “Composite” che hanno una proprietà IEnumerable&amp;lt;Component&amp;gt; Children.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Per il poco che mi viene in mente, tutto può essere ricondotto al secondo caso (il primo incluso ma non ce ne è bisogno, si salti pure avanti).   &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;OGGETTI + COSTRUZIONE GERARCHIA DA FLATHIERARCHY&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;supponiamo di avere una lista di oggetti (&lt;em&gt;&lt;u&gt;che può essere benissimo una &lt;strong&gt;DataTable&lt;/strong&gt; o qualsiasi altra cosa&lt;/u&gt;&lt;/em&gt; &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/HierarchicalDataTemplate_DA24/wlEmoticon-smile_2.png" /&gt;):    &lt;br /&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt;        &lt;br /&gt;{        &lt;br /&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; Id { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }        &lt;br /&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt;? ParentId { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }        &lt;br /&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt; Text { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }        &lt;br /&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Andremo a creare la nostra struttura nel seguente modo (ho lasciato da parte un po’ di “eleganza” e “pulizia” per comprimere il codice):&lt;/p&gt;  &lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt; Node { &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt;; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;set&lt;/font&gt;&lt;/span&gt;; }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt;&amp;gt; _allNodes;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; Composite(&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt; node, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt;&amp;gt; allNodes) &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    {&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.Node = node;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;._allNodes = allNodes;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;&amp;gt; _children;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;&amp;gt; Children &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//nodi figlio del corrente nodo&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;    {&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;get&lt;/font&gt;&lt;/span&gt; {&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;            &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt;(_children == &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;                _children = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;.getChildren(Node.Id, _allNodes);&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;            &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; _children;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;        }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;static&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IEnumerable&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;&amp;gt; getChildren(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt;? parentId, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt;&amp;gt; allNodes)&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;    {&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/span&gt; node &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; allNodes &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//da tutti i nodi&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;                &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;where&lt;/font&gt;&lt;/span&gt; node.ParentId == parentId &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//prendo i nodi figli&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;                &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;select&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;(node, allNodes); &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//ritornando un Composite&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: " /&gt;    }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;è un po’ lunghetto ma abbastanza semplice. La parte principale è il metodo getChildren.
  &lt;br /&gt;Avendo una struttura del genere, potremmo benissimo fare:

  &lt;br /&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;treeView1.ItemsSource = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Composite&lt;/font&gt;&lt;/span&gt;.getChildren(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;List&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;FlatHierarchyNode&lt;/font&gt;&lt;/span&gt;&amp;gt;(… … …));

      &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt"&gt;Come eseguire il binding ora? Easy:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"treeView1"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Children&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBlock&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Node&lt;/span&gt;&lt;span style="color: "&gt;.&lt;/span&gt;&lt;span style="color: "&gt;Text&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;font face="Consolas"&gt;&lt;font style="font-size: 9.8pt" /&gt;&lt;/font&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;In pratica andiamo a sostinuire il template impostando un &lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;/span&gt;. Questo componente permette di ciclare sui figli &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Children&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;/font&gt;, riapplicando se stesso come datatemplate.

  &lt;br /&gt;Del nostro oggetto andremo a mostrare come testo &lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;Node&lt;/span&gt;&lt;span style="color: "&gt;.&lt;/span&gt;&lt;span style="color: "&gt;Text&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;".&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;strong&gt;XML&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Detto che anche con Xml possiamo usare il codice qui sopra, tutto potrebbe risultare ancora più semplice senza neanche una riga di codice (detto che personalmente odio i datasource livello xaml):&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Window.Resources&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;XmlDataProvider&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; x&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Key&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"provider"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Source&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"XMLFile1.xml"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; XPath&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Sezioni/*"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Window.Resources&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;Poi il TreeView è così definito:
  &lt;br /&gt;&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"treeView1"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Source&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;={&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;StaticResource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; ResourceKey&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;provider&lt;/span&gt;&lt;span style="color: "&gt;}}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;/font&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt; &amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; XPath&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=*}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBlock&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; XPath&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;@&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;Name&lt;/span&gt;&lt;span style="color: "&gt;}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;
  &lt;br /&gt;Supponendo di visualizzare tutti i nodi partendo da Sezioni/*, e mostrando, di tutti i nodi, l’attributo Name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cosa preferisco:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beh… dipende molto dalle situazioni, però… decisamente il primo &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/HierarchicalDataTemplate_DA24/wlEmoticon-smile_2.png" /&gt;

  &lt;br /&gt;Il secondo non mi piace proprio, semplicemente per il fatto che ho un XmlDataProvider lato UI che non mi piace. Si può recuperare da codebehind ma storcio il naso.

  &lt;br /&gt;Inoltre l’XML può essere caricato con un XDocument/XElement e ricondotto molto facilmente al primo caso.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Post Scriptum XML&lt;/strong&gt;:

  &lt;br /&gt;Una cosa che non ho detto… I LOVE CONVERTERS! In wpf esistono questi magnifici oggetti e sposerei chi li ha inventati!

  &lt;br /&gt;Per gli XML preferisco di gran lunga un approccio del genere:&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 9.8pt"&gt;XDocument&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; doc = &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XDocument&lt;/font&gt;&lt;/span&gt;.Load(&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"XMLFile1.xml"&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.treeView1.ItemsSource = doc.Elements();&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;poi dichiarare la treeview come segue:&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Height&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"227"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"treeView1"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Width&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"294"&lt;/span&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; ItemsSource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=.,&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Converter&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;={&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;StaticResource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; NodeToChildren&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;}}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;            &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBlock&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;="{&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Binding&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Path&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;=.,&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Converter&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;={&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;StaticResource&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; NodeToTextConverter&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;}}&lt;/span&gt;&lt;span style="color: "&gt;"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;        &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;HierarchicalDataTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;    &lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView.ItemTemplate&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TreeView&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;
  &lt;br /&gt;E creare i converters:&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;NodeToChildren&lt;/font&gt;&lt;/span&gt; : &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IValueConverter&lt;/font&gt;&lt;/span&gt;
{
    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; Convert(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; value, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Type&lt;/font&gt;&lt;/span&gt; targetType, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; parameter, System.Globalization.&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CultureInfo&lt;/font&gt;&lt;/span&gt; culture)
    {
        &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XElement&lt;/font&gt;&lt;/span&gt; element = value &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XElement&lt;/font&gt;&lt;/span&gt;;
        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (element != &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)
            &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; element.Elements();
        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;
    }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;class&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;NodeToTextConverter&lt;/font&gt;&lt;/span&gt; : &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;IValueConverter&lt;/font&gt;&lt;/span&gt;
{
    &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; Convert(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; value, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Type&lt;/font&gt;&lt;/span&gt; targetType, &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; parameter, System.Globalization.&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;CultureInfo&lt;/font&gt;&lt;/span&gt; culture)
    {
        &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XElement&lt;/font&gt;&lt;/span&gt; element = value &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;as&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;XElement&lt;/font&gt;&lt;/span&gt;;
        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (element != &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)
            &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; element.Attributes(&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"Name"&lt;/font&gt;&lt;/span&gt;).FirstOrDefault();
        &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;
    }&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Insomma… ad ognuno il suo!&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/79.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>NoDo su HTC e LG</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/04/06/NoDo-su-HTC-e-LG.aspx</link><pubDate>Wed, 06 Apr 2011 20:40:33 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/04/06/NoDo-su-HTC-e-LG.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/77.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/77.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/04/06/NoDo-su-HTC-e-LG.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/77.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">NoDo su HTC e LG</source><description>&lt;p&gt;Finalmente da oggi i possessori di un LG Optimus e HTC Windows Phone possono installare l’aggiornamento a &lt;strong&gt;NoDo&lt;/strong&gt; &lt;img src="http://www.ingresso-libero.it/blog/NoDo-su-HTC_13E30/wlEmoticon-smile.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="lightbox" href="http://www.ingresso-libero.it/blog/NoDo-su-HTC_13E30/htc_nodo.jpg"&gt;&lt;img height="635" border="0" width="624" src="http://www.ingresso-libero.it/blog/NoDo-su-HTC_13E30/htc_nodo_thumb.jpg" alt="htc_nodo" title="htc_nodo" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ora aggiorniamo il mio HTC Mozart &lt;img src="http://www.ingresso-libero.it/blog/NoDo-su-HTC_13E30/wlEmoticon-smile.png" alt="Smile" class="wlEmoticon wlEmoticon-smile" style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" /&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/77.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>WP7 &amp;amp; Silvelight CoerceValue in DepencencyProperty</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/04/03/WP7-amp-Silvelight-CoerceValue-in-DepencencyProperty.aspx</link><pubDate>Sun, 03 Apr 2011 19:33:09 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/04/03/WP7-amp-Silvelight-CoerceValue-in-DepencencyProperty.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/76.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/76.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/04/03/WP7-amp-Silvelight-CoerceValue-in-DepencencyProperty.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/76.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">WP7 &amp;amp; Silvelight CoerceValue in DepencencyProperty</source><description>&lt;p&gt;Per chi, come me, non capisce il motivo delle divergenze (o meglio, di alcune divergenze) tra WPF e Silverlight, volevo segnalare Dr.Webb: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://drwpf.com/blog/2010/05/05/value-coercion-for-the-masses/" href="http://drwpf.com/blog/2010/05/05/value-coercion-for-the-masses/"&gt;http://drwpf.com/blog/2010/05/05/value-coercion-for-the-masses/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ottimo il video che esplica come configurare correttamente gli helper per consentire il CoerceValueCallback in Silverlight.&lt;/p&gt;  &lt;p&gt;PS: come da titolo, dato che sto sviluppando su Windows Phone, aggiungo che la tecnica funziona anche su questo (magnifico) dispositivo.&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/76.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>Multithreading with WPF</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/03/31/Multithreading-with-WPF.aspx</link><pubDate>Wed, 30 Mar 2011 22:33:43 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/03/31/Multithreading-with-WPF.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/74.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/74.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/03/31/Multithreading-with-WPF.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/74.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">Multithreading with WPF</source><description>&lt;p&gt;Voglio qui riassumere due concetti “base” (nel senso che non li approfondisco molto) riguardo il multithreading con wpf. In particolare due concetti:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Eseguire componenti UI su thread diversi &lt;/li&gt;    &lt;li&gt;Aggiornare componenti di UI da thread diversi &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Per far questo ho scritto una semplice finestra con il seguente contenuto:&lt;/p&gt;  &lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size: 9.8pt"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Start another Window with same UI Thread"&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Margin&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"5,5,5,2"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"btnSameThread_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Start another Window with different UI Thread"&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Margin&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"5,2,5,2"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"btnNewThread_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Perform Long Operation"&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Margin&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"5,10,5,10"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"btnLongOperation_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Change Textbox of last window opened"&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Margin&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"5,5,5,2"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"btnChangeTextLastWindow_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Change Textbox of last window opened (secured)"&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Margin&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"5,2,5,5"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"btnChangeTextLastWindowSecured_Click"&lt;/span&gt;&lt;span style="color: "&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#a31515"&gt;TextBox&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; Text&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"Try change this text"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; x&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;FieldModifier&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"public"&lt;/span&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt; x&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span style="color: "&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span style="color: "&gt;=&lt;/span&gt;&lt;span style="color: "&gt;"ChangeTextbox"&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span style="color: "&gt;&lt;font style="font-size: 9.8pt" color="#0000ff"&gt; /&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Da notare l’ultima textbox con x:FieldModifier=”public”; in questo modo la textbox è accessibile anche dall’esterno della classe (in questo caso non serve, ma l’esempio deriva da un caso in cui il thread era su una classe esterna).&lt;/p&gt;

&lt;p&gt;Ecco il codice:&lt;/p&gt;

&lt;pre style="font-family: ; background: white; color: "&gt;&lt;font face="Consolas"&gt;&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size: 9.8pt"&gt;MainWindow&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size: 9.8pt"&gt; lastWindowOpened = &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnSameThread_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;    lastWindowOpened =  &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;MainWindow&lt;/font&gt;&lt;/span&gt;(); &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//show window with same Thread&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;    lastWindowOpened.Show();
}
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnNewThread_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)
{&lt;br /&gt;   &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt; t = &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt;(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;ThreadStart&lt;/font&gt;&lt;/span&gt;(() =&amp;gt;  &lt;br /&gt;   {&lt;br /&gt;        lastWindowOpened = &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;MainWindow&lt;/font&gt;&lt;/span&gt;(); &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//the window is created in a different thread&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;        lastWindowOpened.Show(); &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//show window&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;        lastWindowOpened.Closed += &lt;br /&gt;&lt;br /&gt;          (s, ec) =&amp;gt; System.Windows.Threading.&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Dispatcher&lt;/font&gt;&lt;/span&gt;.CurrentDispatcher.InvokeShutdown();&lt;br /&gt;        System.Windows.Threading.&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Dispatcher&lt;/font&gt;&lt;/span&gt;.Run(); &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//start message loop!&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;    }));&lt;br /&gt;     t.SetApartmentState(&lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;ApartmentState&lt;/font&gt;&lt;/span&gt;.STA);&lt;span style="color: "&gt;&lt;font color="#008000"&gt;//interoperability with com…&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;    t.Start();
}
 
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnLongOperation_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e) { &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Thread&lt;/font&gt;&lt;/span&gt;.Sleep(5000); }
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnChangeTextLastWindow_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)
{&lt;br /&gt;     &lt;span style="color: "&gt;&lt;font color="#008000"&gt;//not safe for UI running on different thread&lt;/font&gt;&lt;/span&gt; &lt;br /&gt;     lastWindowOpened.ChangeTextbox.Text = &lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"Cambio da altra window"&lt;/font&gt;&lt;/span&gt;; }
&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnChangeTextLastWindowSecured_Click(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)
{&lt;br /&gt;     lastWindowOpened.Dispatcher.BeginInvoke(&lt;span style="color: "&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span style="color: "&gt;&lt;font color="#2b91af"&gt;Action&lt;/font&gt;&lt;/span&gt;(() =&amp;gt;&lt;br /&gt;     {&lt;span style="color: "&gt;&lt;font color="#008000"&gt;//if closed, if not null…&lt;br /&gt;&lt;/font&gt;&lt;/span&gt;         lastWindowOpened.ChangeTextbox.Text = &lt;span style="color: "&gt;&lt;font color="#a31515"&gt;"Cambio da altra window"&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;     }));
}&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;Ora occorre capire due concetti:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;btnNewThread esegue un thread in cui mostra una nuova finestra. Il thread tuttavia non ascolta gli eventi della UI finché non si esegue Dispatcher.Run() (&lt;a title="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.run.aspx" href="http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.run.aspx"&gt;http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.run.aspx&lt;/a&gt;). Eseguendo il metodo statico, il thread corrente entra nel loop dei messaggi finché non si esegue InvokeShutdown(). Cosa succede se non si chiama InvokeShutdown()? La finestra viene chiusa, ma il thread continua ad ascoltare il loop dei messaggi per sempre. Quindi il thread non termina e l’applicazione resta appesa. TaskManager e killiamo &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/Multithreading-with-WPF_14B20/wlEmoticon-smile_2.png" /&gt; &lt;/li&gt;

  &lt;li&gt;btnChangeTextLastWindowSecured modifica il contenuto della textbox dell’ultima window aperta. In questo caso si “inietta” un delgate al thread che “possiede” l’elemento di UI. In qusto modo l’operazione viene eseguita dal thread affine alla UI senza creare problemi. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ora il momento dei test:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;lanciamo la finestra, premiamo il primo bottone per lanciare una nuova window. Ora nella prima premiamo btnLongOperation e muoviamo le finestre… 
    &lt;br /&gt;Non si muovono! questo perchè le due finestre sono gestite dallo stesso thread che viene posto in sleep(). Corretto. &lt;/li&gt;

  &lt;li&gt;lanciamo la finestra, premiamo il secondo bottone e poi btnLongOperation su una finestra e muoviamo l’altra… 
    &lt;br /&gt;Si muove! questo perchè le due finestre sono su due thread diversi e se si pone un thread in sleep mode, quella finestra è bloccata, ma l’altra no ed è libera di leggere i messaggi dal loop e quindi muovere la window. &lt;/li&gt;

  &lt;li&gt;riprendiamo il secondo punto. Lanciamo due window su thread diversi e premiamo il 4° button. L’applicazione crasha. Questo perchè si accede ad un elemento di UI appartenente ad un altro thread. L’ultimo button è necessario. &lt;/li&gt;

  &lt;li&gt;Ultimo punto, un po’ più complicato… 
    &lt;ol&gt;
      &lt;li&gt;Lanciamo una window &lt;/li&gt;

      &lt;li&gt;Lanciamo la seconda window su un thread diverso con il secondo button &lt;/li&gt;

      &lt;li&gt;sulla seconda window eseguiamo btnLongOperation. La seconda window è quindi bloccata e non si può muovere. &lt;/li&gt;

      &lt;li&gt;Ora nella prima window premiamo l’ultimo button… cosa succede? 
        &lt;br /&gt;Niente. Il thread della prima window continua il loop dei messagge ed è libera. La seconda finestra è bloccata. Il testo non cambia fino a che il secondo thread non esce dallo sleep. &lt;/li&gt;

      &lt;li&gt;Cosa succede se invece di BeginInvoke mettiamo Invoke? In questo caso anche il primo thread si blocca perchè l’invoke è sincrono e attende l’esecuzione dell’altro thread. &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Liberi di eseguire altre prove (e postare esempi interessanti) &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/Multithreading-with-WPF_14B20/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/74.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>WPF DataGrid Clipboard BUG(?)&amp;amp;Workaround</title><link>http://blogs.wpfitalia.it/ainotame/archive/2011/03/22/WPF-DataGrid-Clipboard-BUGampWorkaround.aspx</link><pubDate>Tue, 22 Mar 2011 21:02:15 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/ainotame/archive/2011/03/22/WPF-DataGrid-Clipboard-BUGampWorkaround.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/ainotame/comments/73.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/ainotame/comments/commentRss/73.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/ainotame/archive/2011/03/22/WPF-DataGrid-Clipboard-BUGampWorkaround.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://blogs.wpfitalia.it/ainotame/services/trackbacks/73.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/ainotame/rss.aspx">WPF DataGrid Clipboard BUG(?)&amp;amp;Workaround</source><description>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Il mese scorso mi sono imbattuto in questo strano problema: La mia applicazione crashava su un particolare computer (che, per curiosità, aveva WinXP SP3 ma non credo sia questo il problema). L’utente sostiene che l’applicazione crasha anche stando a guardarla… molto strano.&lt;/p&gt;  &lt;p&gt;0) Scoperta&lt;/p&gt;  &lt;p&gt;L’eccezione non gestita, ricavata sia dal log applicativo (catturata nell’evento Application.DispatcherUnhandledException) sia da Event Viewer, era la seguente:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Dallo stack trace si evinceva che l’eccezione veniva lanciata dalla DataGrid di WPF4. Bene… andiamo in dettaglio.&lt;/p&gt;  &lt;p&gt;1) Teoria della clipboard (fonte: &lt;a href="http://msdn.microsoft.com/en-us/library/ms648709(v=VS.85).aspx"&gt;Clipboard on MSDN Library&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Come è ovvio, la clipboard è un elemento di sistema a cui possono accedere più applicazioni contemporaneamente. A livello di API, ogni applicazione esegue, in genere, i seguenti passaggi:    &lt;br /&gt;- OpenClipboard()     &lt;br /&gt;- clear/read/set data     &lt;br /&gt;- CloseClipboard()&lt;/p&gt;  &lt;p&gt;OpenClipboard() ritorna true se l’applicativo riesce a avere possesso della clipboard. In questo momento solamente lui è in grado di accedervi. Nessun’altra applicazione può accedervi (sia in scrittura che in lettura) prima che essa venga rilasciata con CloseClipboard().&lt;/p&gt;  &lt;p&gt;2) Riproduzione del problema:&lt;/p&gt;  &lt;p&gt;Create due applicazioni. La prima, un semplice Console Application, che esegue il seguente codice:&lt;/p&gt;  &lt;div style="background-color: white; color: black"&gt;   &lt;div style="background-color: white; color: black"&gt;     &lt;div style="background-color: white; color: black"&gt;       &lt;pre&gt;[DllImport(&lt;span style="color: #a31515"&gt;"user32.dll"&lt;/span&gt;)]&lt;/pre&gt;

      &lt;pre&gt;&lt;span style="color: blue"&gt;extern&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; OpenClipboard(IntPtr hWnd);&lt;/pre&gt;

      &lt;pre&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (OpenClipboard(IntPtr.Zero))&lt;span style="color: green"&gt;//lock clipboard&lt;/span&gt; &lt;/pre&gt;

      &lt;pre&gt;    Thread.Sleep(60000);&lt;span style="color: green"&gt;//così ho tempo per lanciare l’altra applicazione.&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;La seconda, WPF application, con un textbox e una DataGrid popolata e con elementi ClipboardContentBinding. Ora lanciate (non da VS) la console application, debuggate l’app WPF. 
  &lt;br /&gt;Premete CTRL+C sulla textbox. Blocco di pochi istanti ma niente. In questo caso il fatto che la clipboard sia lockata è correttamente gestita dalla textbox. 

  &lt;br /&gt;Premete CTRL+C selezionando qualcosa nella griglia… Bam! Ecco l’eccezione.&lt;/p&gt;

&lt;p&gt;3) Soluzione:&lt;/p&gt;

&lt;p&gt;Le strade sono due. La prima è scrivere una classe che deriva da DataGrid e, nell’override del metodo OnExecutedCopy() gestisce l’eccezione (credo si possa fare, anche se non ne sono troppo sicuro). Il secondo è gestire l’eccezione direttamente in Application.DispatcherUnhandledException. Poiché la DataGrid l’avevo usata in più punti nell’applicativo, non sapevo se questo era un caso isolato o se da altre parti sorgesse lo stesso problema e &lt;u&gt;#soprattutto#&lt;/u&gt; dato i tempi stretti, ho optato per la seconda con questo codice&lt;/p&gt;

&lt;div style="background-color: white; color: black"&gt;
  &lt;pre&gt;&lt;span style="color: blue"&gt;var&lt;/span&gt; comEx = e.Exception &lt;span style="color: blue"&gt;as&lt;/span&gt; System.Runtime.InteropServices.COMException;
&lt;span style="color: blue"&gt;if&lt;/span&gt; (comEx != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
{
    &lt;span style="color: blue"&gt;switch&lt;/span&gt; (comEx.ErrorCode)
    {
        &lt;span style="color: blue"&gt;case&lt;/span&gt; -2147221040: &lt;span style="color: green"&gt;//OpenClipboard Failed (Exception from HRESULT: 0x800401D0 (CLIPBRD_E_CANT_OPEN))&lt;/span&gt;
            &lt;span style="color: blue"&gt;try&lt;/span&gt;
            {
                &lt;span style="color: green"&gt;//Try get info about the application which lock the clipboard&lt;/span&gt;
                IntPtr handle = GetOpenClipboardWindow();
                &lt;span style="color: blue"&gt;if&lt;/span&gt; (handle != IntPtr.Zero)
                {
                    &lt;span style="color: blue"&gt;int&lt;/span&gt; capacity = GetWindowTextLength(&lt;span style="color: blue"&gt;new&lt;/span&gt; HandleRef(&lt;span style="color: blue"&gt;this&lt;/span&gt;, handle)) * 2;
                    StringBuilder stringBuilder = &lt;span style="color: blue"&gt;new&lt;/span&gt; StringBuilder(capacity);
                    GetWindowText(&lt;span style="color: blue"&gt;new&lt;/span&gt; HandleRef(&lt;span style="color: blue"&gt;this&lt;/span&gt;, handle), stringBuilder, stringBuilder.Capacity);

                    Trace.TraceWarning(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"CLIPBOARD LOCKED BY {0}!"&lt;/span&gt;, stringBuilder.ToString()));
                }
            }
            &lt;span style="color: blue"&gt;finally&lt;/span&gt;
            {
                e.Handled = &lt;span style="color: blue"&gt;true&lt;/span&gt;; &lt;span style="color: green"&gt;//Handle Exception. No error to user. No crash of the application.    &lt;/span&gt;
            }
            &lt;span style="color: blue"&gt;return&lt;/span&gt;;
    }
}
Trace.TraceError(e.Exception.Message);&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Questo è tutto.&lt;/p&gt;

&lt;p&gt;4) Riflessioni:&lt;/p&gt;

&lt;p&gt;Chissà quale programma causava il problema… ve lo dirò quando mi farò dare il log &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.wpfitalia.it/images/blogs_wpfitalia_it/ainotame/Windows-Live-Writer/8c1e4c4a8162_15128/wlEmoticon-smile_2.png" /&gt; (se mai l’avrò)&lt;/p&gt;

&lt;p&gt;5) Considerazioni:&lt;/p&gt;

&lt;p&gt;Se qualcuno volesse pingare il team di sviluppo per spiegare il problema faccia pure, oppure se volesse spiegarmi come fare contattatemi.&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/ainotame/aggbug/73.aspx" width="1" height="1" /&gt;</description><dc:creator>Roberto Sarati</dc:creator></item><item><title>Visual Studio 2010 Service Pack 1</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/03/09/Visual-Studio-2010-Service-Pack-1.aspx</link><pubDate>Tue, 08 Mar 2011 23:10:36 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/03/09/Visual-Studio-2010-Service-Pack-1.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/71.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/71.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/03/09/Visual-Studio-2010-Service-Pack-1.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/71.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Visual Studio 2010 Service Pack 1</source><description>&lt;p&gt;Da oggi, tutti gli abbonati MSDN possono scaricare il &lt;strong&gt;Service Pack 1&lt;/strong&gt; per &lt;strong&gt;Visual Studio 2010&lt;/strong&gt; e &lt;strong&gt;Team Foundation Server 2010&lt;/strong&gt; mentre tutti gli altri dovranno aspettare giovedì 10 marzo.&lt;/p&gt;
&lt;p&gt;Tra le altre cose, questo Service Pack:&lt;/p&gt;
&lt;p&gt;- aggiunge il support di IntelliTrace sulle piattaforme a 64 bit&lt;/p&gt;
&lt;p&gt;- include i Silverlight 4 Tools e RIA Services V1&lt;/p&gt;
&lt;p&gt;- supporta IIS Express e SQL CE 4&lt;/p&gt;
&lt;p&gt;- supporto dell’IDE di ASP.NET per HTML5 e CSS3&lt;/p&gt;
&lt;p&gt; - aggiunge l’opzione /vbruntime per il compilatore VB &lt;/p&gt;
&lt;p&gt;Per un elenco dettagliato di tutte le novità, potete leggere il documento &lt;strong&gt;&lt;a target="_blank" href="http://support.microsoft.com/kb/983509" title="Description of Visual Studio 2010 Service Pack 1"&gt;Description of Visual Studio 2010 Service Pack 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/71.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>LiveMeeting: Sviluppare applicazioni per Windows Phone</title><link>http://blogs.wpfitalia.it/tdj/archive/2011/01/25/LiveMeeting-Sviluppare-applicazioni-per-Windows-Phone.aspx</link><pubDate>Tue, 25 Jan 2011 22:13:38 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2011/01/25/LiveMeeting-Sviluppare-applicazioni-per-Windows-Phone.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/68.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/68.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2011/01/25/LiveMeeting-Sviluppare-applicazioni-per-Windows-Phone.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/68.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">LiveMeeting: Sviluppare applicazioni per Windows Phone</source><description>&lt;p&gt;Finalmente anche su &lt;a title="WPF Tips &amp;amp; Tricks" href="http://www.wpfitalia.it" target="_blank"&gt;WPF Tips &amp;amp; Tricks&lt;/a&gt; si comincia con gli eventi on line! Il debutto è per &lt;strong&gt;giovedì 27 gennaio dalle 21:00 alle 22:00&lt;/strong&gt; per un evento tutto dedicato allo &lt;strong&gt;sviluppo di applicazioni per Windows Phone in Visual Basic&lt;/strong&gt;. A parlarvi di tutto questo saranno &lt;a href="http://community.visual-basic.it/alessandro" target="_blank"&gt;Alessandro Del Sole&lt;/a&gt; e &lt;a href="http://community.visual-basic.it/Renato" target="_blank"&gt;Renato Marzaro&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;L’evento è dedicato a tutti gli iscritti e per prtecipare all’evento vi basta accedere a &lt;a title="Eventi online su WPF Tips &amp;amp; Tricks" href="http://www.wpfitalia.it/Eventionline.aspx" target="_blank"&gt;questa pagina&lt;/a&gt;. Per tutti gli altri… non vi resta che iscriversi! &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/3ea08277e12a_14383/wlEmoticon-smile.png" /&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/68.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Visual Studio 2010 SP1 Beta</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/12/07/Visual-Studio-2010-SP1-Beta.aspx</link><pubDate>Tue, 07 Dec 2010 21:20:32 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/12/07/Visual-Studio-2010-SP1-Beta.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/65.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/65.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/12/07/Visual-Studio-2010-SP1-Beta.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/65.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Visual Studio 2010 SP1 Beta</source><description>&lt;p&gt;E’ di oggi la notizia della disponibilità per gli abbonati MSDN del&lt;strong&gt; Service Pack 1 per Visual Studio 2010&lt;/strong&gt; (martedì saranno resi pubblici).     &lt;br /&gt;Questo service pack riguarda .NET Framework 4, VS2010 e TFS2010 e non porterà con sè novità eclatanti ma certamente ci saranno degli improvements riguardanti Visual Studio oltre a tutti I fix rilasciati separatamente fino ad oggi.&lt;/p&gt;  &lt;p&gt;Un’altra cosa importante è che questa beta viene rilasciata con licenza &lt;strong&gt;go-live&lt;/strong&gt;, quindi può essere usata in ambienti di produzione.     &lt;br /&gt;Infine va ricordata una cosa, secondo me, molto importante: questo service pack è anche il risultato dei feedback che il team ha chiesto a tutti gli sviluppatori per capire quali fossero gli interventi da fare. E che ci tengono a questo è dimostrato dal fatto che è disponibile anche un questionario dedicato a questo SP che potete trovare a questo indirizzo:&lt;/p&gt;  &lt;p&gt;&lt;a title="Visual Studio 2010 Service Pack 1 Beta Survey" href="http://www.zoomerang.com/Survey/WEB22BL2MHKVJZ/" target="_blank"&gt;Visual Studio 2010 Service Pack 1 Beta Survey&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Per tutti i dettagli sul contenuto di questo Service Pack potete leggere il post ufficiale:&lt;/p&gt;  &lt;p&gt;&lt;a title="Announcing Visual Studio 2010 Service Pack 1 Beta" href="http://blogs.msdn.com/b/jasonz/archive/2010/12/07/announcing-visual-studio-2010-service-pack-1-beta.aspx" target="_blank"&gt;&lt;strong&gt;Announcing Visual Studio 2010 Service Pack 1 Beta&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/65.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Annunciato Silverlight 5</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5Again.aspx</link><pubDate>Sun, 05 Dec 2010 18:19:06 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5Again.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/64.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/64.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5Again.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/64.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Annunciato Silverlight 5</source><description>&lt;p&gt;Durante l’evento &lt;a title="Silverlight Firestarter" href="http://www.silverlight.net/news/events/firestarter/" target="_blank"&gt;&lt;strong&gt;Silverlight Firestarter&lt;/strong&gt;&lt;/a&gt; è stata annunciata la nuova versione di &lt;a title="Silverlight Official Site" href="http://www.silverlight.net/" target="_blank"&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/a&gt;, la &lt;strong&gt;5&lt;/strong&gt;. Le nuove funzionalità saranno oltre &lt;strong&gt;40&lt;/strong&gt; distribuite tra &lt;strong&gt;Media Experience&lt;/strong&gt; e &lt;strong&gt;Business Application&lt;/strong&gt;. Sia la beta che la versione definitiva è prevista per il 2011. Alla faccia di chi voleva Silverlight sulla via del tramonto…&lt;/p&gt;  &lt;p&gt;Potete leggere maggiori dettagli sulle nuove funzionalità ai seguenti link:&lt;/p&gt;  &lt;p&gt;- &lt;a title="Annunciate le nuove features di Silverlight 5" href="http://blogs.msdn.com/b/italy/archive/2010/12/03/annunciate-le-nuove-features-di-silverlight-5.aspx" target="_blank"&gt;Annunciate le nuove features di Silverlight 5&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a title="The Future of Microsoft Silverlight" href="http://www.microsoft.com/silverlight/future/" target="_blank"&gt;The Future of Microsoft Silverlight&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a title="Silverlight 5 Plans Revealed" href="http://timheuer.com/blog/archive/2010/12/02/silverlight-5-revealed-at-firestarter.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+timheuer+%28Method+~+of+~+failed+by+Tim+Heuer%29&amp;amp;utm_content=Google+Reader" target="_blank"&gt;Silverlight 5 Plans Revealed&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/64.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>WCF RIA Services Toolkit December 2010</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5.aspx</link><pubDate>Sun, 05 Dec 2010 17:55:26 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/63.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/63.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/12/05/Annunciato-Silverlight-5.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/63.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">WCF RIA Services Toolkit December 2010</source><description>&lt;p&gt;Qualche giorno fa è stato rilasciato un aggiornamento dei &lt;a title="WCF RIA Services" href="http://www.silverlight.net/getstarted/riaservices/" target="_blank"&gt;&lt;strong&gt;WCF RIA Services&lt;/strong&gt;&lt;/a&gt;, la &lt;strong&gt;December 2010&lt;/strong&gt;. Potete scaricarli da &lt;a title="WCF RIA Services Toolkit December 2010" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6f834bf7-ffde-4d5d-8573-18541762118b&amp;amp;displaylang=en" target="_blank"&gt;qui&lt;/a&gt;.     &lt;br /&gt;Per un elenco delle novità di questa versione, potete fare riferimento a questo post:&lt;/p&gt;  &lt;p&gt;&lt;a title="WCF RIA Services Toolkit 2010" href="http://jeffhandley.com/archive/2010/12/02/ToolkitDecember2010.aspx" target="_blank"&gt;WCF RIA Services Toolkit December 2010&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/63.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Disponibili i Windows Phone 7 Tools for VB</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/11/29/Disponibili-i-Windows-Phone-7-Tools-for-VB.aspx</link><pubDate>Mon, 29 Nov 2010 22:57:25 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/11/29/Disponibili-i-Windows-Phone-7-Tools-for-VB.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/62.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/62.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/11/29/Disponibili-i-Windows-Phone-7-Tools-for-VB.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/62.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Disponibili i Windows Phone 7 Tools for VB</source><description>Dopo la CTP, finalmente sono stati rilasciati in versione &lt;span style="font-weight: bold;"&gt;RTW&lt;/span&gt; i &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4e97ea70-e479-4c05-814f-639d71690e5d&amp;amp;displaylang=en" style="font-weight: bold;"&gt;Windows Phone 7 Tools for Visual Basic&lt;/a&gt; e le novità fondamentalmente sono due:&lt;br /&gt;
&lt;br /&gt;
1) &lt;span style="font-weight: bold;"&gt;è possibile pubblicare le applicazioni sul Market Place&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2) &lt;span style="font-weight: bold;"&gt;è disponibile anche in versione italiana&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Per l'occasione, &lt;a target="_blank" href="http://www.visual-basic.it"&gt;Visual Basic Tips &amp;amp; Tricks&lt;/a&gt; ha preparato uno speciale dedicato con esempi e video che spiegano come sviluppare applicazioni per Windows Phone:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://community.visual-basic.it/tdj/archive/2010/11/29/Windows-Phone-7-Tools-for-Visual-Basic-RTM.aspx"&gt;Windows Phone 7 Tools for Visual Basic RTW di Antonio Catucci&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://community.visual-basic.it/Diego/archive/2010/11/29/Le-mie-avventure-con-il-mio-nuovo-Windows-Phone-7.aspx"&gt;Le mie avventure con il mio nuovo Windows Phone 7 di Diego Cattaruzza&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://community.visual-basic.it/Alessandro/archive/2010/11/29/Creare-un-lettore-di-feed-RSS-per-Windows-Phone-7Again.aspx"&gt;Creare un lettore di feed RSS per Windows Phone 7 con Visual Basic 2010 di Alessandro Del Sole&lt;/a&gt;  &lt;/li&gt;
    &lt;li&gt;&lt;a target="_blank" href="http://www.visual-basic.it/viewscreencast.asp?ID=44"&gt;Video: "Creare un lettore di feed RSS per Windows Phone 7 con Visual Basic 2010" di Alessandro Del Sole&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="http://community.visual-basic.it/renato/archive/2010/11/29/il-mio-primo-programma-Visual-Basic-Windows-Phone-7.aspx"&gt;il mio primo programma Visual Basic Windows Phone 7 di Renato Marzaro&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Infine, per tutti i dettagli sugli strumenti di sviluppo, vi rimando all'annunco del team di Visual Basic:&lt;a href="http://blogs.msdn.com/b/vbteam/archive/2010/11/29/vb-goes-mobile-announcing-visual-basic-for-windows-phone-developer-tools-rtw-quot.aspx" target="_blank"&gt;&lt;br /&gt;
&lt;br /&gt;
VB Goes Mobile: Announcing “Visual Basic for Windows Phone Developer Tools - RTW"&lt;/a&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/62.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Silverlight Firestarter Event</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/11/19/Silverlight-Firestarter-Event.aspx</link><pubDate>Fri, 19 Nov 2010 22:07:17 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/11/19/Silverlight-Firestarter-Event.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/61.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/61.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/11/19/Silverlight-Firestarter-Event.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/61.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Silverlight Firestarter Event</source><description>&lt;p&gt;Se ne parla da giorni ormai e manca poco. Si tratta del &lt;strong&gt;&lt;a title="Silverlight Firestarter" target="_blank" href="http://www.silverlight.net/news/events/firestarter/"&gt;Silverlight Firestarter&lt;/a&gt;&lt;/strong&gt;, un evento tutto dedicato a &lt;a target="_blank" href="http://www.silverlight.net/"&gt;Silverlight&lt;/a&gt; che si terrà &lt;strong&gt;giovedì 2 dicembre 2010&lt;/strong&gt;, durante la quale &lt;a title="ScottGu Blog" target="_blank" href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;, nella sua keynote, affronterà un argomento molto dibattuto ultimamente, ovvero il futuro di questa tecnologia. Oltre a questo si parlerà ovviamente anche di Windows Phone 7, di Data Binding, MVVM e tanto altro. Inoltre saranno disponibili anche diversi Labs on line di diversi livelli. &lt;br /&gt;
L’evento potrà essere seguito on line &lt;img style="BORDER-BOTTOM-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/27681b373683_13DEA/wlEmoticon-smile.png" /&gt; quindi… &lt;a target="_blank" href="https://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032459316&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;registratevi&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/61.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Al Community Tour di Roma con Lucian Wischik</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/11/02/Al-Community-Tour-di-Roma-con-Lucian-Wischik.aspx</link><pubDate>Tue, 02 Nov 2010 22:31:34 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/11/02/Al-Community-Tour-di-Roma-con-Lucian-Wischik.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/60.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/60.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/11/02/Al-Community-Tour-di-Roma-con-Lucian-Wischik.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/60.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Al Community Tour di Roma con Lucian Wischik</source><description>&lt;p&gt;Come già annunciato qualche giorno fa, venerdì &lt;strong&gt;12 novembre&lt;/strong&gt; il Community Tour farà tappa a Roma con la partecipazione di &lt;a title="Visual Basic Tips &amp;amp; Tricks" target="_blank" href="http://visual-basic.it"&gt;Visual Basic Tips &amp;amp; Tricks&lt;/a&gt; e &lt;a target="_blank" href="http://www.domusdotnet.org"&gt;DomusDotNet&lt;/a&gt; che ci parleranno un po’ delle ultime novità su Azure, IE9 e LightSwitch. &lt;br /&gt;
Ma la novità dell’ultima ora è l’aggiunta di una nuova sessione:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Async CTP: async and iterator methods for VB&lt;/strong&gt; &lt;br /&gt;
&lt;em&gt;con &lt;a lang="en" title="Lucian Wischik" target="_blank" href="http://blogs.msdn.com/b/vbteam/archive/tags/Lucian+Wischik/"&gt;Lucian Wischik&lt;/a&gt;, VB Specification Lead&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Non capita tutti i giorni di avere come ospite un membro del Team di Visual Basic, quindi non avete scuse…. anzi avete un motivo in più per &lt;a title="Community Tour VB Tips &amp;amp; Tricks - DomusDotNet" target="_blank" href="http://www.domusdotnet.org/eventi/microsoft-community-tour-2010.aspx"&gt;registrarvi&lt;/a&gt;! &lt;img style="BORDER-BOTTOM-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/Community-Tour-Special-guest-Lucian_14589/wlEmoticon-smile.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Community Tour 12/11/2010 - Agenda" target="_blank" href="http://www.visual-basic.it/evento20101112.asp"&gt;Agenda Sessioni&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/60.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Programming Windows Phone 7&amp;hellip;. gratis :)</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/10/28/Programming-Windows-Phone-7hellip-gratis.aspx</link><pubDate>Thu, 28 Oct 2010 20:35:09 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/10/28/Programming-Windows-Phone-7hellip-gratis.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/59.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/59.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/10/28/Programming-Windows-Phone-7hellip-gratis.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/59.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Programming Windows Phone 7&amp;hellip;. gratis :)</source><description>&lt;p&gt;Da oggi è disponibile gratuitamente l’ultima fatica editoriale di &lt;a lang="en" title="Charles Petzold website" target="_blank" href="http://www.charlespetzold.com/home.html"&gt;Charles Petzold&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a lang="en" title="Programming Windows Phone 7 free ebook" target="_blank" href="http://blogs.msdn.com/b/microsoft_press/archive/2010/10/28/free-ebook-programming-windows-phone-7-by-charles-petzold.aspx"&gt;Programming Windows Phone 7&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;un libro (in inglese) di oltre 1000 pagine tutte dedicate al nuovo sistema operativo per dispositivi mobile. &lt;br /&gt;
E’ inutile dire che si tratta di “must have” non solo perchè è gratuito ma soprattutto per il nome scritto sulla copertina &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" complete="" src="http://www.ingresso-libero.it/blog/2b8492f05ac3_13C5A/wlEmoticon-smile.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Scarica il libro in formato PDF" href="http://download.microsoft.com/download/5/0/A/50A39509-D015-410F-A8F2-A5511E5A988D/Microsoft_Press_ebook_Programming_Windows_Phone_7_PDF.pdf"&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;/a&gt; (pdf)&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/59.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Visual Basic CTP for Windows Phone Developer Tools</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/09/24/Visual-Basic-CTP-for-Windows-Phone-Developer-Tools.aspx</link><pubDate>Fri, 24 Sep 2010 18:32:59 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/09/24/Visual-Basic-CTP-for-Windows-Phone-Developer-Tools.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/54.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/54.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/09/24/Visual-Basic-CTP-for-Windows-Phone-Developer-Tools.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/54.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Visual Basic CTP for Windows Phone Developer Tools</source><description>&lt;p&gt;Finalmente, dopo un po’ di pressioni provenienti dalle centinaia di community VB sparse nel mondo, il team di Windows Phone ha deciso di rilasciare, seppure in CTP, i &lt;a title="Download Visual Basic CTP for Windows Phone Developer Tools" href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a808a69d-6119-47b7-b858-262be5c49915&amp;amp;displaylang=en" target="_blank"&gt;&lt;strong&gt;Developer Tools per VB&lt;/strong&gt;&lt;/a&gt;, permettendo così di sviluppare applicazioni per WP7 in VB &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/4dffdac92ae6_11E20/wlEmoticonsmile.png" /&gt;&lt;/p&gt;  &lt;p&gt;Come detto, si tratta di una CTP quindi va presa per quello che è, cioè una versione non stabile, ad uso esclusivamente di test e con alcune limitazioni come il supporto per il solo &lt;a href="http://www.silverlight.net/" target="_blank"&gt;Silverlight&lt;/a&gt; e non per XNA e Expression Blend, e l’integrazione solo con versioni “full” di Visual Studio (Pro e superiore e trial).  Si tratta comunque di una situzione momentanea in attesa degli aggiornamenti futuri che vedranno un allineamento (si spera) con gli attuali tools per C#. &lt;/p&gt;  &lt;p&gt;Potete trovare informazioni ai seguenti link:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a title="Visual Basic Comes to Windows Phone 7" href="http://windowsteamblog.com/windows_phone/b/wpdev/" target="_blank"&gt;Visual Basic Comes to Windows Phone 7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Windows Phone + VB developers = Great Mobile Apps" href="http://blogs.msdn.com/b/somasegar/archive/2010/09/23/windows-phone-vb-developers-great-mobile-apps.aspx" target="_blank"&gt;Windows Phone + VB developers = Great Mobile Apps&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Windows Phone Developer Site" href="http://developer.windowsphone.com/" target="_blank"&gt;Windows Phone Developer Site&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/54.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Rilasciati I Windows Phone 7 Developer Tools</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/09/16/Rilasciati-I-Windows-Phone-7-Developer-Tools.aspx</link><pubDate>Thu, 16 Sep 2010 20:06:28 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/09/16/Rilasciati-I-Windows-Phone-7-Developer-Tools.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/53.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/53.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/09/16/Rilasciati-I-Windows-Phone-7-Developer-Tools.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/53.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Rilasciati I Windows Phone 7 Developer Tools</source><description>&lt;p&gt;Come già anticipato giorni fa, oggi sono stati rilasciati in versione RTM i &lt;a title="Download Developer Tools for Windows Phone 7" href="http://go.microsoft.com/?linkid=9713250" target="_blank"&gt;&lt;strong&gt;Developers Tools per Windows Phone 7&lt;/strong&gt;&lt;/a&gt;.    &lt;br /&gt;Il contenuto del setup prevede gli strumenti che oggi utilizziamo per sviluppare applicazioni client e web ma specifici per Windows Phone ed in particolare si tratta di &lt;strong&gt;Visual Studio 2010 Express&lt;/strong&gt;, &lt;strong&gt;Expression Blend 4&lt;/strong&gt;,&lt;strong&gt; XNA Game Studio&lt;/strong&gt;, &lt;a href="http://www.silverlight.net/" target="_blank"&gt;&lt;strong&gt;Silverlight&lt;/strong&gt;&lt;/a&gt; tutti in versione “for Windows Phone”, e l’emulatore per testare le applicazioni.&lt;/p&gt;  &lt;p&gt;Nel post di &lt;a title="ScottGu's Blog" href="http://weblogs.asp.net/scottgu" target="_blank"&gt;Scott&lt;/a&gt; trovate tutti i dettagli e links utili per iniziare a sviluppare:&lt;/p&gt;  &lt;h4&gt;&lt;a title="Windows Phone 7 Developer Tools Released" href="http://weblogs.asp.net/scottgu/archive/2010/09/16/windows-phone-7-developer-tools-released.aspx" target="_blank"&gt;&lt;font style="font-weight: bold"&gt;Windows Phone 7 Developer Tools Released&lt;/font&gt;&lt;/a&gt; &lt;/h4&gt;  &lt;p&gt;oppure potete iniziare dal sito ufficiale dedicato allo &lt;a title="Windows Phone Developer" href="http://developer.windowsphone.com/Default.aspx" target="_blank"&gt;sviluppo per Windows Phone&lt;/a&gt;:&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/53.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Evento Windows Phone 7</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/09/02/Evento-Windows-Phone-7.aspx</link><pubDate>Wed, 01 Sep 2010 22:10:10 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/09/02/Evento-Windows-Phone-7.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/51.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/51.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/09/02/Evento-Windows-Phone-7.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/51.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Evento Windows Phone 7</source><description>&lt;p&gt;Per tutti coloro che vogliono scoprire Windows Phone 7, &lt;strong&gt;giovedì 23 settembre 2010&lt;/strong&gt; ci sarà un evento dedicato trasmesso in live streaming HD da Roma.&lt;/p&gt;  &lt;p&gt;Per chi volesse partecipare può iscriversi cliccando il seguente link:&lt;/p&gt;  &lt;p&gt;&lt;a title="Applicazioni Windows Phone 7 e novità del Marketplace" href="http://www.microsoft.com/italy/windowsphone/evento/" target="_blank"&gt;Applicazioni Windows Phone 7 e novità del Marketplace&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Io vi consiglio di partecipare…  &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.ingresso-libero.it/blog/EventoWindowsPhone7_115/wlEmoticonsmile.png" /&gt;&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/51.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item><item><title>Nasce LightSwitch Tips &amp;amp; Tricks</title><link>http://blogs.wpfitalia.it/tdj/archive/2010/08/24/Nasce-LightSwitch-Tips-amp-Tricks.aspx</link><pubDate>Mon, 23 Aug 2010 23:33:02 GMT</pubDate><guid isPermaLink="true">http://blogs.wpfitalia.it/tdj/archive/2010/08/24/Nasce-LightSwitch-Tips-amp-Tricks.aspx</guid><wfw:comment>http://blogs.wpfitalia.it/tdj/comments/46.aspx</wfw:comment><wfw:commentRss>http://blogs.wpfitalia.it/tdj/comments/commentRss/46.aspx</wfw:commentRss><comments>http://blogs.wpfitalia.it/tdj/archive/2010/08/24/Nasce-LightSwitch-Tips-amp-Tricks.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blogs.wpfitalia.it/tdj/services/trackbacks/46.aspx</trackback:ping><source url="http://blogs.wpfitalia.it/tdj/rss.aspx">Nasce LightSwitch Tips &amp;amp; Tricks</source><description>&lt;p&gt;&lt;a title="LightSwitch Tips &amp;amp; Tricks" target="_blank" href="http://www.lightswitch.it"&gt;&lt;img style="DISPLAY: inline" border="0" alt="" src="http://www.lightswitch.it/Portals/5/LightSwitchIT.jpeg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oggi, contemporaneamente all’uscita della &lt;a title="Download di Visual Studio LightSwitch Beta 1" target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=37551a54-bfd3-4af6-a513-676bbb2dfb69&amp;amp;displaylang=en"&gt;Beta 1 di Visual Studio LightSwitch&lt;/a&gt;, nasce un nuovo portale completamente dedicato a questo nuovo strumento. Come da tradizione si chiama &lt;a title="LightSwitch Tips &amp;amp; Tricks" target="_blank" href="http://www.lightswitch.it/"&gt;&lt;strong&gt;LightSwitch Tips &amp;amp; Tricks&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Oltre ai forum trovate sin da ora alcuni articoli e video introduttivi sull’argomento. &lt;br /&gt;
Maggiori dettagli nel post di &lt;a title="Il Blog di Alessandro Del Sole" target="_blank" href="http://community.visual-basic.it/alessandro"&gt;&lt;strong&gt;Alessandro Del Sole&lt;/strong&gt;&lt;/a&gt;&lt;a title="Nasce &amp;quot;LightSwitch Tips &amp;amp; Tricks&amp;quot;, nuova community su Visual Studio LightSwitch" href="http://community.visual-basic.it/alessandro/archive/2010/08/23/32129.aspx"&gt;&lt;strong&gt;Nasce "LightSwitch Tips &amp;amp; Tricks", nuova community su Visual Studio LightSwitch&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.wpfitalia.it/tdj/aggbug/46.aspx" width="1" height="1" /&gt;</description><dc:creator>Antonio Catucci</dc:creator></item></channel></rss>
