<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Blend</title>
        <link>http://blogs.ugidotnet.org/martinobordin/category/Blend.aspx</link>
        <description>My adventures in the Blend world</description>
        <language>it</language>
        <copyright>Martino Bordin</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Listbox WPF: disabilitata ma non troppo!</title>
            <link>http://blogs.ugidotnet.org/martinobordin/archive/2012/04/03/listbox-wpf-disabilitata-ma-non-troppo.aspx</link>
            <description>&lt;p&gt;Recentemente ho dovuto realizzare una sorta di wizard in WPF, ovvero una classica window con un’intestazione, una listbox a sinistra che visualizza gli step (evidenziando lo step corrente) e un contentpresenter in cui verrà caricato il contenuto dinamicamente. Niente di complicato.&lt;/p&gt;
&lt;p&gt;La cosa “particolare” è il fatto che la listbox con l’elenco degli step è read-only, ovvero  deve solo presentare i dati e l’utente  non deve poter selezionare qual’è lo step corrente..altrimenti che procedura guidata è? &lt;img alt="" src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/regular_smile.gif" /&gt;.&lt;/p&gt;
&lt;p&gt;Ovviamente è possibile disabilitare la listbox , ma in questo  modo lo stile applicato rende il tutto poco usabile e gradevole (un grigio che mina la leggibilità del controllo )..e di certo non mi andava di rifare il template del controllo per questa sciocchezza.&lt;/p&gt;
&lt;p&gt;Ho risolto semplicemente creando uno style per l’ItemContainer e impostando a &lt;strong&gt;false&lt;/strong&gt; la proprietà &lt;strong&gt;Focusable&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3e9ef0f4-53ec-4f8b-8f3f-324a8a745db0" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;
&lt;div style="border: 1px solid rgb(0, 0, 128); color: rgb(0, 0, 0); font-family: &amp;quot;Courier New&amp;quot;, Courier, Monospace; font-size: 10pt;"&gt;
&lt;div style="background: rgb(221, 221, 221); overflow: auto;"&gt;
&lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px; white-space: nowrap;" start="1"&gt;
    &lt;li&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; TargetType&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="{&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;x&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;:&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; ListBoxItem}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                    &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Focusable"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="False"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                    &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                        &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Trigger&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="IsSelected"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="True"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                            &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Setter&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Property&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="FontWeight"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; Value&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Bold" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                        &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Trigger&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                    &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;                &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Style&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;            &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ListBox.ItemContainerStyle&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Thanks WPF!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/martinobordin/aggbug/100915.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martino Bordin</dc:creator>
            <guid>http://blogs.ugidotnet.org/martinobordin/archive/2012/04/03/listbox-wpf-disabilitata-ma-non-troppo.aspx</guid>
            <pubDate>Tue, 03 Apr 2012 14:55:30 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/martinobordin/archive/2012/04/03/listbox-wpf-disabilitata-ma-non-troppo.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/martinobordin/comments/commentRss/100915.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/martinobordin/services/trackbacks/100915.aspx</trackback:ping>
        </item>
        <item>
            <title>Blendability con Moq e NBuilder</title>
            <link>http://blogs.ugidotnet.org/martinobordin/archive/2011/08/09/blendability-con-moq-e-nbuilder.aspx</link>
            <description>&lt;p&gt;Che il vostro progetto sia sviluppato in WPF, Silverlight o Silverlight per WP7 un aspetto fondamentale (direi quasi un requisito non funzionale) da soddisfare è il supporto ai designer di Visual Studio/Blend, identificato con il termine “&lt;strong&gt;Blendability&lt;/strong&gt;”.&lt;/p&gt;  &lt;p&gt;Anche se può sembrare banale, in realtà la faccenda si complica man mano che i nostri ViewModel prendono forma e utilizziamo &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_control"&gt;IoC&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In soldoni il Designer non è in grado di rappresentare graficamente una View collegata ad un ViewModel di questo tipo:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:44420792-6ca1-4224-80c3-b852409584a9" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; MainViewModel(&lt;span style="color:#2b91af"&gt;IPersonService&lt;/span&gt; personService)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    People = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;Person&lt;/span&gt;&amp;gt;(personService.GetAll());&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    ShowPersonDetailCommand = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;RelayCommand&lt;/span&gt;(PerformShowPersonDetail, CanShowPersonDetail);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Tra le soluzioni possibili troviamo:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;utilizzare un ViewModelLocator che restituisce istanze diverse dei ViewModel se siamo a design-time o a run-time (es: &lt;a href="http://blog.roboblob.com/2010/01/17/wiring-up-view-and-viewmodel-in-mvvm-and-silverlight-4-blendability-included/"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;utilizzare ViewModel che si comportano in modo diverso se siamo a design-time o a run-time (es: &lt;a href="http://netindonesia.net/blogs/zeddy/archive/2011/06/23/wp7-intro-to-mvvm-amp-blendability-by-building-twitter-app-part-1.aspx"&gt;link&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;utilizzare file XAML in cui definire i dati fake (es: &lt;a href="http://karlshifflett.wordpress.com/2009/10/21/visual-studio-2010-beta2-sample-data-project-templates/"&gt;link&lt;/a&gt;) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Personalmente, anche se funzionanti, non mi piace nessuna delle soluzioni proposte in quanto:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;vado ad inserire logica completamente estranea ai ViewModelLocator\ViewModel (punti 1, 2) &lt;/li&gt;    &lt;li&gt;mi ritrovo a manutenere file XAML satelliti che andranno ad appesantire il refactoring (punto 3) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Da un po' di tempo a questa parte sto adottando la strategia che da il titolo a questo post: uso &lt;a href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt; e &lt;a href="http://nbuilder.org/"&gt;NBuilder&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Per chi non li conoscesse, sono 2 librerie che facilitano la scrittura di test automatici, essendo rispettivamente un framework di mocking e un tool per la generazione dinamica di oggetti. &lt;/p&gt;  &lt;p&gt;Nonostante siano strumenti nati per altri scopi, ho deciso di provarli per ottenere ViewModel “blendabili”.&lt;/p&gt;  &lt;p&gt;In pratica:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Vado a creare, possibilmente in un assembly a parte, un &lt;strong&gt;MainViewModelDesign  &lt;/strong&gt;che eredita dal &lt;strong&gt;MainViewModel&lt;/strong&gt; visto in precedenza. &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b566f2aa-c066-4b13-b9bb-97c7530acb5e" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;MainViewModelDesign&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;MainViewModel&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; MainViewModelDesign()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        : &lt;span style="color:#0000ff"&gt;base&lt;/span&gt;(&lt;span style="color:#ff0000"&gt;GetMockedService&lt;/span&gt;())&lt;/li&gt; &lt;li&gt;    {&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;Il Metodo &lt;strong&gt;GetMockedService&lt;/strong&gt; mi ritorna un &lt;strong&gt;mock&lt;/strong&gt; che implementa IPersonService e va a definire i metodi utilizzati dal ViewModel in questione. In questo caso ho instrumentato &lt;strong&gt;Moq&lt;/strong&gt; in maniera tale che, quando viene invocato il metodo &lt;strong&gt;GetAll&lt;/strong&gt;, mi restituisca, tramite la classe Builder di &lt;strong&gt;NBuilder&lt;/strong&gt;, un elenco di &lt;strong&gt;Person&lt;/strong&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8c424d18-3eea-4015-bda3-f35129399cb7" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af"&gt;IPersonService&lt;/span&gt; GetMockedService()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; mockedService = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Mock&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;IPersonService&lt;/span&gt;&amp;gt;();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    mockedService&lt;/li&gt; &lt;li&gt;        .Setup(s =&amp;gt; s.GetAll())&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        .Returns(&lt;span style="color:#2b91af"&gt;Builder&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;Person&lt;/span&gt;&amp;gt;.CreateListOfSize(5).Build());&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; mockedService.Object;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;Per collegare il nostro nuovo ViewModel useremo il Databinding e la proprietà d: DataContext, utilizzando la markup extension&lt;strong&gt; {d: DesignInstance}&lt;/strong&gt; (maggiori info &lt;a href="http://msdn.microsoft.com/en-us/library/dd490796%28VS.100%29.aspx"&gt;qui&lt;/a&gt;),  passando il nome del ViewModel che vogliamo venga creato automaticamente dal designer  (riga 12): &lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8df8a9e7-f234-43e9-96c1-acba2f7d9ee6" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Window&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#ff0000"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Class&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Blendability.Views.MainWindow"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;   &lt;span style="color:#ff0000"&gt; xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="color:#ff0000"&gt; xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="http://schemas.microsoft.com/winfx/2006/xaml"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;d&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="http://schemas.microsoft.com/expression/blend/2008"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;mc&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;viewModels&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="clr-namespace:Blendability.ViewModels.Design"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="color:#ff0000"&gt; Title&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="People"&lt;/span&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#ff0000"&gt;Height&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="350"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#ff0000"&gt;Width&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="525"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#ff0000"&gt;mc&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Ignorable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="d"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#ff0000"&gt;d&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;DataContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;d&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DesignInstance&lt;/span&gt;&lt;span style="color:#ff0000"&gt; viewModels&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;MainViewModelDesign&lt;/span&gt;&lt;span style="color:#0000ff"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; IsDesignTimeCreatable&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=True}"&lt;/span&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#ff0000"&gt;DataContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Source&lt;/span&gt;&lt;span style="color:#0000ff"&gt;={&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; locator}&lt;/span&gt;&lt;span style="color:#0000ff"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=MainViewModel}"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ovviamente possiamo ancora impostare la “solita” proprietà DataContext che verrà effettivamente utilizzata a runtime (riga 13).&lt;/p&gt;  &lt;p&gt;A questo punto se apro Visual Studio o Blend avrò pieno supporto del designer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/Blendability_8158/image_2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/Blendability_8158/image_thumb.png" width="416" height="371" /&gt;&lt;/a&gt;      &lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/Blendability_8158/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/Blendability_8158/image_thumb_1.png" width="335" height="365" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Riassumendo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ho definito un ViewModel che eredita dal ViewModel reale, e si preoccupa solo di visualizzare i dati (e che andrò a mettere su un assembly a parte) ed eventuale logica di generazione dei dati fake (tra l’altro NBuilder è abbastanza versatile e posso definire regole del tipo “le prime 5 Person devono avere Name = “Nome123abc” e DateOfBirth = “01/02/2003”, le restanti Name = “blablabla") &lt;/li&gt;    &lt;li&gt;se farò refactoring non dovrò cambiare file XAML se non la View vera e propria &lt;/li&gt;    &lt;li&gt;ho il pieno supporto dei designer: editing di stili\template con preview instantanea, animazioni, property window, etc &lt;/li&gt;    &lt;li&gt;funziona per progetti WPF\ SL e WP7! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ho preparato un esempio un pò più articolato di quello illustrato che potete scaricare &lt;a href="http://goo.gl/hlyBb"&gt;qui&lt;/a&gt;. Ovviamente tutto quello che vedrete aprendo il designer NON lo vedrete a runtime &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="A bocca aperta" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/Blendability_8158/wlEmoticon-openmouthedsmile_2.png" /&gt;.&lt;/p&gt;  &lt;p&gt;Cosa ne pensate? Come ottenete la blendability di solito nei vostri progetti?&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/martinobordin/aggbug/100261.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martino Bordin</dc:creator>
            <guid>http://blogs.ugidotnet.org/martinobordin/archive/2011/08/09/blendability-con-moq-e-nbuilder.aspx</guid>
            <pubDate>Tue, 09 Aug 2011 15:59:27 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/martinobordin/archive/2011/08/09/blendability-con-moq-e-nbuilder.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/martinobordin/comments/commentRss/100261.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/martinobordin/services/trackbacks/100261.aspx</trackback:ping>
        </item>
        <item>
            <title>SketchFlow Template per Windows Phone 7</title>
            <link>http://blogs.ugidotnet.org/martinobordin/archive/2011/06/11/sketchflow-template-per-windows-phone-7.aspx</link>
            <description>&lt;p&gt; &lt;/p&gt;
&lt;p&gt;E’ stato rilasciato il template di SketchFlow per Windows Phone 7. &lt;/p&gt;
&lt;p&gt;In questo modo potrete facilmente creare mockup utilizzando pivot, panorama, datetime picker, map, application bar, behaviors per simulare la navigazione e molto altro… &lt;img src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/wlEmoticon-smile_2.png" alt="Sorriso" 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;Per iniziare a creare prototipi delle vostre app, il sito da visitare è &lt;a href="http://wp7sketchflow.codeplex.com"&gt;http://wp7sketchflow.codeplex.com&lt;/a&gt;, dove troverete maggiori info e l’installer msi.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2009h43_52_thumb_2.png"&gt;&lt;img width="135" height="320" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2009h43_52_thumb_thumb.png" alt="2011-06-09 09h43_52_thumb" title="2011-06-09 09h43_52_thumb" 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;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2009h47_25_thumb_2.png"&gt;&lt;img width="135" height="320" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2009h47_25_thumb_thumb.png" alt="2011-06-09 09h47_25_thumb" title="2011-06-09 09h47_25_thumb" 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;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2010h01_27_thumb_2.png"&gt;&lt;img width="132" height="320" border="0" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/martinobordin/Windows-Live-Writer/SketchFlow-Template-per-Windows-Phone-7_A2E6/2011-06-09%2010h01_27_thumb_thumb.png" alt="2011-06-09 10h01_27_thumb" title="2011-06-09 10h01_27_thumb" 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;&lt;strong&gt;&lt;font size="3"&gt;Attenzione&lt;/font&gt;: p&lt;/strong&gt;er usare il template è necessario avere installato Expression Blend 4 con SketchFlow e i  &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=77586864-ab15-40e1-bc38-713a95a56a05&amp;amp;displaylang=en"&gt;Mango developer tools&lt;/a&gt; per Windows Phone. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Happy Sketching!&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/martinobordin/aggbug/100125.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Martino Bordin</dc:creator>
            <guid>http://blogs.ugidotnet.org/martinobordin/archive/2011/06/11/sketchflow-template-per-windows-phone-7.aspx</guid>
            <pubDate>Sat, 11 Jun 2011 13:02:44 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/martinobordin/archive/2011/06/11/sketchflow-template-per-windows-phone-7.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/martinobordin/comments/commentRss/100125.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/martinobordin/services/trackbacks/100125.aspx</trackback:ping>
        </item>
    </channel>
</rss>