<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Nuno Filipe Godinho : UX, Prism</title><link>http://msmvps.com/blogs/nunogodinho/archive/tags/UX/Prism/default.aspx</link><description>Tags: UX, Prism</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>PDC09 – Day Two – Advanced Topics for Building Large-Scale Applications with Microsoft Silverlight</title><link>http://msmvps.com/blogs/nunogodinho/archive/2009/11/18/pdc09-day-two-advanced-topics-for-building-large-scale-applications-with-microsoft-silverlight.aspx</link><pubDate>Thu, 19 Nov 2009 01:17:45 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1740606</guid><dc:creator>NunoGodinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nunogodinho/rsscomments.aspx?PostID=1740606</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/nunogodinho/commentapi.aspx?PostID=1740606</wfw:comment><comments>http://msmvps.com/blogs/nunogodinho/archive/2009/11/18/pdc09-day-two-advanced-topics-for-building-large-scale-applications-with-microsoft-silverlight.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;MVVM – Model-View-ViewModel&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Separation of concerns&lt;/li&gt;    &lt;li&gt;View = handled UI&lt;/li&gt;    &lt;li&gt;Model = contains pure data&lt;/li&gt;    &lt;li&gt;ViewModel = communicates between View and Model through bindings&lt;/li&gt;    &lt;li&gt;Works Great with Silverlight and WPF&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;XAML based data bindings&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Testable&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Represents the Data&lt;/li&gt;      &lt;li&gt;The entity&lt;/li&gt;      &lt;li&gt;Not required to know where it gets the data from&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;WCF service, WCF Ria Services&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;View&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;The Screen, the UI&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;ViewModel&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Main source of logic for the MVVM triad&lt;/li&gt;      &lt;li&gt;Connects the Model and the View&lt;/li&gt;      &lt;li&gt;Abstracts the View&lt;/li&gt;      &lt;li&gt;Public Properties that are bound to the View&lt;/li&gt;      &lt;li&gt;INotifyPropertyChanged and INotifyCollectionChanged talk to the view through bindings&lt;/li&gt;      &lt;li&gt;Listens for changes from the View made to the Model&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Variations of the MVVM&lt;/strong&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;View First&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;ViewModel is declared as StaticResource in the Views XAML&lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;Works well in Blend&lt;/li&gt;       &lt;/ul&gt;        &lt;li&gt;Another way is to create the ViewModel in the View’s code-behind&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;ViewModel First&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;View is injected into the ViewModel’s constructor&lt;/li&gt;        &lt;li&gt;Doesn’t allow the possibility to use Blend&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;View and ViewModel Marriage&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;View must be paired with the ViewModel somehow&lt;/li&gt;        &lt;li&gt; Doesn’t allow the possibility to use Blend&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;What don’t we have with MVVM&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Commanding&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Prism 2&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Prism is a set of options&lt;/li&gt;    &lt;li&gt;Use what you want and ignore the rest&lt;/li&gt;    &lt;li&gt;Technical Concepts:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Modules&lt;/li&gt;      &lt;li&gt;Shell&lt;/li&gt;      &lt;li&gt;Commands&lt;/li&gt;      &lt;li&gt;Containers&lt;/li&gt;      &lt;li&gt;Regions&lt;/li&gt;      &lt;li&gt;Bootstrapper&lt;/li&gt;      &lt;li&gt;Event Aggregation&lt;/li&gt;      &lt;li&gt;Unity and Dependency Injection&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1740606" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/nunogodinho/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/nunogodinho/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://msmvps.com/blogs/nunogodinho/archive/tags/UX/default.aspx">UX</category><category domain="http://msmvps.com/blogs/nunogodinho/archive/tags/Silverlight+Offline/default.aspx">Silverlight Offline</category><category domain="http://msmvps.com/blogs/nunogodinho/archive/tags/Prism/default.aspx">Prism</category></item></channel></rss>