<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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Silverlight</title>
        <link>http://blog.galasoft.ch/category/6670.aspx</link>
        <description>Microsoft Silverlight (ex WPF/E)</description>
        <language>en-US</language>
        <copyright>Laurent Bugnion</copyright>
        <managingEditor>laurent@galasoft.ch</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
        <item>
            <title>Bug fix: WPF4 project template for #MVVMLight V3</title>
            <link>http://blog.galasoft.ch/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx</link>
            <description>&lt;p&gt;Ironically, my last release of MVVM Light V3 was about fixing bugs in templates and making them better. In the process however, seems that I introduced a regression bug in the WPF4 project templates. Yep shit happens.&lt;/p&gt;  &lt;h2&gt;How do I know if I have the bug?&lt;/h2&gt;  &lt;p&gt;Check the Programs and Features control panel, and look for MVVM Light. If the “Version” column shows &lt;font color="#ff0000"&gt;3.0.&lt;font size="3"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/font&gt;.19&lt;/font&gt;, you have the bug. If it shows anything higher, you don’t. For instance, the new version with the bug correction is 3.0.3.19. Also, any version 4.*.*.* does not have this bug.&lt;/p&gt; &lt;a title="MVVM Light version check" href="http://www.flickr.com/photos/36917929@N06/6757419835"&gt;&lt;img src="http://farm8.staticflickr.com/7164/6757419835_f830cfcc68_b_d.jpg" /&gt;&lt;/a&gt;   &lt;p&gt;Alternatively, simply try to create a new WPF4 MVVM Light application in Studio. If you see the following warning, you have the bug.&lt;/p&gt; &lt;a title="Snagit Capture for Flickr" href="http://www.flickr.com/photos/36917929@N06/6757445519"&gt;&lt;img src="http://farm8.staticflickr.com/7171/6757445519_ec38c6852f_d.jpg" /&gt;&lt;/a&gt;   &lt;h2&gt;Upgrading&lt;/h2&gt;  &lt;p&gt;To fix the bug, &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;simply download V3.0.3.19 from Codeplex&lt;/a&gt; and install. You don’t need to uninstall the previous version.&lt;/p&gt;  &lt;h2&gt;What’s next?&lt;/h2&gt;  &lt;p&gt;I am working hard on V4 and have some nice improvements coming up. Many people have asked me when the “beta” will come out of MVVM Light, and the answer is “soon”. In the coming few days, I will publish a temporary release that corrects a few memory leaks, notably in the Messenger and in the RelayCommand. This will give expert users time to test and report issues. Then I still have a couple of fixes and I will release a release candidate. I won’t add any new feature after the RC, but will merely fix bugs if people find some. Once the RC is deemed stable, I will release V4 and take a deep breath! &lt;/p&gt;  &lt;p&gt;And yes, there will be a V5 &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://geekswithblogs.net/images/geekswithblogs_net/lbugnion/Windows-Live-Writer/Small-bug-fix-WPF4-project-template-for-_14B52/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;Happy coding,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/148474.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx</guid>
            <pubDate>Tue, 24 Jan 2012 23:40:09 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/148474.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2012/01/25/bug-fix-wpf4-project-template-for-mvvmlight-v3.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/148474.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/148474.aspx</trackback:ping>
        </item>
        <item>
            <title>New MVVM Light templates with bug fixes</title>
            <link>http://blog.galasoft.ch/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx</link>
            <description>&lt;p&gt;The current version of MVVM Light had a couple of issues in the project templates. The most annoying one was causing a problem when creating new projects: The GUIDs used to uniquely identify the project were in fact not re-generated properly every time, and we ended up with the same GUID in every new project. The symptoms are the following: If you side-load an MVVM Light application, and then side-load another one, you will see that the first one is overwritten. Note however that &lt;strong&gt;this is only an issue when side-loading applications&lt;/strong&gt;: The GUIDs are properly re-generated and overwritten by Microsoft during the app approval process.&lt;/p&gt;  &lt;p&gt;This was not really an issue with WPF and Silverlight applications (which is why the bug was never found until now), however the Windows Phone uses these GUIDs to check if the application is already installed on the Windows Phone device or not. &lt;/p&gt;  &lt;p&gt;I also took this occasion to update the templates with some information in the AssemblyInfo.cs, so that should make it even easier to fill the assembly information.&lt;/p&gt;  &lt;p&gt;I just published a new MSI that corrects the issue. You can install the new MSI on top of the existing one. As usual, there is an MSI for &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;MVVM Light V3&lt;/a&gt; and one for &lt;a href="http://mvvmlight.codeplex.com/releases/view/73208"&gt;MVVM Light V4 beta&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Fixing the issue in existing applications&lt;/h2&gt;  &lt;p&gt;If you encounter this issue in existing application, you can use the following steps to correct it. Note that I recommend you to follow these steps for every MVVM Light application.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Start the GUID generator installed with Visual Studio (open the Start menu and type GUID to find it). &lt;/li&gt;    &lt;li&gt;In the GUID generator, select the Registry Format. &lt;/li&gt;    &lt;li&gt;Press the New GUID button and then the Copy button. &lt;/li&gt; &lt;/ul&gt; &lt;a title="GUID generator" href="http://www.flickr.com/photos/36917929@N06/6621147243/"&gt;&lt;img alt="2011010201" src="http://farm8.staticflickr.com/7156/6621147243_e4dc1db068_o.png" width="403" height="424" /&gt;&lt;/a&gt;   &lt;ul&gt;   &lt;li&gt;Open the CSPROJ file in Notepad (or any text editor). &lt;/li&gt;    &lt;li&gt;Locate the &amp;lt;ProjectGuid&amp;gt; attribute. &lt;/li&gt;    &lt;li&gt;Select its content and paste the GUID you previously copied. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;For Windows Phone projects only, in addition:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the GUID generator, press the New GUID button and then the Copy button. &lt;/li&gt;    &lt;li&gt;Open the file WMAppManifest.xml (in the Properties folder). &lt;/li&gt;    &lt;li&gt;Find the ProductID attribute and replace its content with the GUID you previously copied. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Projects exposed to COM&lt;/h3&gt;  &lt;p&gt;Some project also have a GUID in the AssemblyInfo.cs. Open this file in Visual Studio or in Notepad and check if you can see a GUID there. If there is one, copy a new GUID from the GUID generator and replace the old one with the one you just copied. Be careful to remove the opening ‘{‘ and closing ‘}’.&lt;/p&gt;  &lt;h2&gt;That’s it&lt;/h2&gt;  &lt;p&gt;Apologies for this bug, and thanks to everyone who reported it and helped make MVVM Light better.&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; left: 130px; top: -36px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-top-style: none; margin-bottom: -20px; height: 23px; width: 450px; border-bottom-style: none; overflow: hidden; border-right-style: none; border-left-style: none; margin-top: 7px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/148217.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx</guid>
            <pubDate>Mon, 02 Jan 2012 20:13:28 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/148217.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2012/01/02/new-mvvm-light-templates-with-bug-fixes.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/148217.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/148217.aspx</trackback:ping>
        </item>
        <item>
            <title>MVVM Light installers and Nuget (including Silverlight 5) #mvvmlight</title>
            <link>http://blog.galasoft.ch/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx</link>
            <description>&lt;p&gt;I just pushed two big updates to MVVM Light setup components.&lt;/p&gt;  &lt;h2&gt;MSI installers with Silverlight 5 support&lt;/h2&gt;  &lt;p&gt;The MSI installers are available on Codeplex. The current version supports Silverlight 3, Silverlight 4, &lt;strong&gt;Silverlight 5 (new)&lt;/strong&gt;, WPF 3.5 SP1, WPF 4, Windows Phone 7.0 and Windows Phone 7.1. The &lt;a href="http://mvvmlight.codeplex.com/releases/view/71278"&gt;installer for V3&lt;/a&gt; is available, as well &lt;a href="http://mvvmlight.codeplex.com/releases/view/73208"&gt;as the one for V4 beta&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;NuGet support including Silverlight 5&lt;/h2&gt;  &lt;p&gt;I also pushed a new version of the NuGet packages which includes Silverlight 5. To install MVVM Light into an existing application with the help of the NuGet package manager in Visual Studio, &lt;a href="http://www.galasoft.ch/mvvm/installing/nuget"&gt;check the instructions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you look for “mvvmlight” on NuGet, you will find four packages:&lt;/p&gt; &lt;a title="" href="http://www.flickr.com/photos/36917929@N06/6532927729"&gt;&lt;img src="http://farm8.staticflickr.com/7149/6532927729_d66b49a854.jpg" width="500" height="333" /&gt;&lt;/a&gt;   &lt;ul&gt;   &lt;li&gt;MVVM Light: The whole package, libraries + ViewModelLocator + MainViewModel. Installing this also modifies App.xaml to install the ViewModelLocator. This package is for V3 of MVVM Light! &lt;/li&gt;    &lt;li&gt;MVVM Light libraries only: Installs only the DLLs and references them. This package is for V3 of MVVM Light! &lt;/li&gt;    &lt;li&gt;MVVM Light [Preview]: This is the whole package too, but for V4 beta. &lt;/li&gt;    &lt;li&gt;MVVM Light libraries only [Preview]: Just the DLLs, for V4 beta. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Update on V4’s availability&lt;/h2&gt;  &lt;p&gt;One of the most annoying issues in V3 is a memory leak that can appear in the Messenger component in certain circumstances. I will post details in due time, but there is indeed a risk that an instance is not garbage collected if it is registered with the Messenger with a non-static method, and if the developer omits to unregister the instance before deleting it.&lt;/p&gt;  &lt;p&gt;Because of the promise of a “weak” registration, I really want to solve this issue. Currently, I am able to completely solve it in WPF, and to solve it in most cases in Silverlight (including Windows Phone). There is still one special case in Silverlight where a memory leak may remain, and I am currently working on handling this. I am not sure that there is a solution for this last scenario, but there are other alternatives that it is not a blocking issue anymore.&lt;/p&gt;  &lt;p&gt;Once this fix is fully tested, I still have a few things I would like to add in V4. However I am also aware that we have been in beta (and alpha) for quite some time already, and it is very possible that I procrastinate some of these features into V5.&lt;/p&gt;  &lt;p&gt;Happy coding!    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/148076.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx</guid>
            <pubDate>Sun, 18 Dec 2011 21:10:12 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/148076.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/12/18/mvvm-light-installers-and-nuget-including-silverlight-5-mvvmlight.aspx#feedback</comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/148076.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/148076.aspx</trackback:ping>
        </item>
        <item>
            <title>MVVM Light for Silverlight 5 is on Codeplex #mvvmlight</title>
            <link>http://blog.galasoft.ch/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx</link>
            <description>
		&lt;p&gt;Here we go! After the Microsoft team released version 5 of Silverlight yesterday, MVVM Light is available for this version of the framework too. I did not create the installer yet (that will take a few more days), but you can download the source code and build it yourself easily.&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;a href="http://mvvmlight.codeplex.com/SourceControl/changeset/changes/17256019ad97"&gt;Source code on Codeplex&lt;/a&gt;. &lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://www.galasoft.ch/mvvm/building"&gt;Instructions to build the code&lt;/a&gt;. &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;With this latest release, this puts the number of supported frameworks to 8: .NET 3.5 SP1, .NET 4, Silverlight 3, Silverlight 4, Silverlight 5, Windows Phone 7.0, Windows Phone 7.1 and Windows 8 (preview).&lt;/p&gt;
		&lt;a title="The MVVM Light family" href="http://www.flickr.com/photos/36917929@N06/6487320279/"&gt;
				&lt;img alt="The MVVM Light family" src="http://farm8.staticflickr.com/7015/6487320279_236a02e210_o.png" width="351" height="680" /&gt;
		&lt;/a&gt;
		&lt;h2&gt;Dropping Silverlight 3 and WP7.0?&lt;/h2&gt;
		&lt;p&gt;That said, I am considering dropping old frameworks now for new development. So here is a chance to make yourself heard, tell me if you think that it is OK to drop Silverlight 3 and/or Windows Phone 7.0 and to concentrate on the 6 other supported frameworks:&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;
						&lt;a href="http://twtpoll.com/inl98t"&gt;Poll for Silverlight 3&lt;/a&gt;
				&lt;/li&gt;
				&lt;li&gt;
						&lt;a href="http://twtpoll.com/8xf53m"&gt;Poll for Windows Phone 7.0&lt;/a&gt;
				&lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;Thanks and happy coding!    &lt;br /&gt;Laurent&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
		&lt;div style="margin-bottom: -1em"&gt;
				&lt;div style="vertical-align: middle"&gt;
						&lt;a href="http://www.galasoft.ch/"&gt;
								&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;
						&lt;/a&gt;
				&lt;/div&gt;
				&lt;div style="position: relative; top: -36px; left: 130px"&gt;
						&lt;strong&gt;
								&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;
						&lt;/strong&gt;
						&lt;br /&gt;
						&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;&lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
		&lt;/div&gt;
 &lt;img src="http://blog.galasoft.ch/aggbug/147998.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx</guid>
            <pubDate>Sat, 10 Dec 2011 19:29:43 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147998.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/12/10/mvvm-light-for-silverlight-5-on-codeplex-mvvmlight.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147998.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147998.aspx</trackback:ping>
        </item>
        <item>
            <title>Silverlight 5 is released!</title>
            <link>http://blog.galasoft.ch/archive/2011/12/09/silverlight-5-is-released.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=28358"&gt;Microsoft just released the version 5 of Silverlight&lt;/a&gt;! It’s a great news and I really want to congratulate the whole team on this impressive collective effort. &lt;a href="http://blogs.msdn.com/b/silverlight/archive/2011/12/09/silverlight-5-available-for-download-today.aspx"&gt;The official announcement is on the Silverlight team blog!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The purpose of this article is not to be exhaustive about the list of features (there have been, and will be, many more very detailed articles such as &lt;a href="http://blogs.msdn.com/b/silverlight/"&gt;this series on the Silverlight blog&lt;/a&gt;) but rather to explain why this version in particular makes me happy to be a Silverlight developer (features listed in no particular order!).&lt;/p&gt;  &lt;h2&gt;3D!&lt;/h2&gt;  &lt;p&gt;One thing is making me really happy and excited: the 3D integration. It is now possible to include and manipulate 3D models within a Silverlight application. This model is very similar to what XNA offers, which means that existing XNA developers will feel at home very fast with this new platform. It also means that existing 3D models can quite easily be run in Silverlight 3D. I am sure we all have in mind &lt;a href="http://channel9.msdn.com/Series/Silverlight-Firestarter/Silverlight-Firestarter-2010-Keynote-with-Scott-Guthrie"&gt;the pretty amazing demo with Scott Gu’s avatar&lt;/a&gt; during the Silverlight 5 firestarter (jump to 51:11).&lt;/p&gt; &lt;iframe style="width: 512px; height: 288px" src="http://channel9.msdn.com/Series/Silverlight-Firestarter/Silverlight-Firestarter-2010-Keynote-with-Scott-Guthrie/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;I am really happy to have 3D integration in Silverlight now, because I have been working for the past few weeks on a new application for Kinect for Windows involving a 3D human avatar integrated in a Windows Presentation Foundation. The integration is completely seamless, and it looks like the avatar is completely part of the rest of the application. However, the rest of the application is WPF, with all the XAML, binding and MVVM goodness that it brings. This kind of seamless integration is now also possible in Silverlight, and that opens the door to a lot of pretty cool applications and a new kind of user experience.&lt;/p&gt;  &lt;h2&gt;In-browser trusted applications&lt;/h2&gt;  &lt;p&gt;We all know (or heard of) the Out-Of-Browser (OOB) application model which allows Silverlight to run outside of a web browser, just like a Windows application in its own windows, with its own shortcut, etc. There is also an elevated trust model for OOB, declared at build time, which allows such applications to perform tasks that are usually not allowed (such as saving or reading files from certain locations on the computer, run in full-screen with full keyboard support (ideal for kiosk applications!), host HTML pages within the Silverlight application, etc.&lt;/p&gt;  &lt;p&gt;These features were already available in Silverlight 4, however in Silverlight 5 they are also possible inside the web browser. This makes the delivery of such applications a little easier, since the user does not have to “install” them and deal with a shorcut. &lt;/p&gt;  &lt;h2&gt;Trickplay&lt;/h2&gt;  &lt;p&gt;This feature allows to play video at various speeds, and even includes pitch correction to avoid that the speaker sounds like a chipmunk! This is especially useful when watching conference sessions: watch a whole 60 minute session in 30 minutes, and use the rest of the hour to be with your family instead &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://geekswithblogs.net/images/geekswithblogs_net/lbugnion/Windows-Live-Writer/Silverlight-5-is-released_1041F/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;h2&gt;Breakpoints in bindings&lt;/h2&gt;  &lt;p&gt;This one is pretty cool: Who has never had to debug a binding, because the binding expression had a typo, or the value was not what you expected? it was pretty cumbersome before! Well with Silverlight 5, you can set a breakpoint right in the XAML binding expression, and the debugger will break and allow you to inspect the expression!.&lt;/p&gt;  &lt;h2&gt;Performance, profiling&lt;/h2&gt;  &lt;p&gt;A lot of work has been put into performance too, and a new set of tools helps to profile the application and identify critical areas that need perf tuning. &lt;/p&gt;  &lt;h2&gt;Pinvoke&lt;/h2&gt;  &lt;p&gt;This is like COM on steroid: This allows your Silverlight application to access pretty much any of the Win32 APIs directly from within your app. There are even ways to listen to Win32 messages, for example to be notified when a new USB drive is inserted (this is only an example!). There is a good &lt;a href="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/09/27/pinvoke-in-silverlight5-and-net-framework.aspx"&gt;article on pinvoke by Alexandra Rusina&lt;/a&gt; (one of Silverlight’s PMs) here.&lt;/p&gt;  &lt;p&gt;Note that pinvoke only works with elevated permissions, which really makes sense (I wouldn’t want any script kiddy to be able to format my hard drives without saying “OK” first)!!.&lt;/p&gt;  &lt;h2&gt;And more…&lt;/h2&gt;  &lt;p&gt;There are a lot of other improvements, notably useful when you use the MVVM pattern in Silverlight. For example, the ability to search for an Ancestor in a RelativeSource binding (something we had since the beginning in WPF, and because it was missing here led to some cruel workarounds in some applications in Silverlight…) is a good example of these apparently small changes, but that will mean a lot when you do need them.&lt;/p&gt;  &lt;p&gt;With version 5, we have a super mature version of the framework!&lt;/p&gt;  &lt;h2&gt;What about Mac? What about other browsers? What about delays? What about Maryjo?&lt;/h2&gt;  &lt;p&gt;As usual it is interesting to witness the drama around the (perceived) delay in the delivery of this massive new version. It is important however to remember that there had not been any official announcement about a delivery date (the only thing we had heard was Scott Guthrie – who is not in charge of this product anymore by the way - talk about “end of November”). With a delivery in the first half of December, and considering that much time has been spent on last minute bugs, making this version as stable as can be, and (again) considering the massive additions to this new version, I say kudos to the team!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Edit: &lt;/strong&gt;Maryjo felt insulted and I am a nice guy, so let me rework that paragraph a bit. Yeah I went too far and personal, so hopefully this is better.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.zdnet.com/blog/microsoft"&gt;Maryjo Foley&lt;/a&gt;, who seems to be reporting and speculating on a lot of bad news these days, reported that Mac OS would not be supported for Silverlight 5, and even worse that only Internet Explorer would be supported on Windows.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Side note: She actually reported that “One of my contacts said he believed that the final version of Silverlight 5 may only work with Internet Explorer on Windows and won’t work on Mac OS platforms or with other browsers at all. (Silverlight 4 supports Windows and Mac OS X and the IE, Chrome and Safari browsers.)”. Notice the lack of named reference, the “he believed” and the “may work”. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;It’s a good example of why we should take this kind of “journalism” with a grain of salt. We are very rational people, fond of science and technology, and yet we seem sometimes to act like schoolgirls when someone writes something on the web. At this point, I think it is good to remember that Maryjo often reports hearsay and rumors. I don’t mean that she is always wrong, not at all, and in fact I do read her column with interest. But I always take it with a (large) grain of salt, and I remember that until a product is released, we don’t know what it will support. Everything else, really, is conjectures. A good thing to remember while Windows 8 is in preparation!&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Side note again: It is very painful to insiders to read this kind of articles (if you can call it that) while we knew very well that it was completely wrong. Unfortunately, the non-disclosure agreement that binds us to Microsoft prevents us from correcting assertions like this, and we had to sit down and watch. This is very unfortunate and painful. I really hope that people learn, some day, to be reasonable when it comes to technology (but I am not holding my breath).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;To be clear: the list of supported web browsers and operating systems did not change. It is available at &lt;a href="http://www.microsoft.com/silverlight/what-is-silverlight/"&gt;http://www.microsoft.com/silverlight/what-is-silverlight/&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Some restrictions&lt;/h3&gt;  &lt;p&gt;There are a few restrictions around the 3D rendering, for security reasons. The best summary I found so far is &lt;a href="http://blogs.msdn.com/b/eternalcoding/archive/2011/12/10/silverlight-5-is-out.aspx"&gt;on David Catuhe’s blog&lt;/a&gt;. Security restrictions are always annoying but the alternative is letting unsafe code run on the user’s computer, and we all know how Microsoft handled that in the past (ActiveX anyone?) so I guess that we need to accept that they err on the side of security this time. (&lt;strong&gt;Edit:&lt;/strong&gt; updated on 12/10/2011&lt;strong&gt;).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Also, like previously, COM access does not work on Mac OSX and as I mentioned above, p/invoke is also only available on Windows. Both these features require elevated permissions by the way.&lt;/p&gt;  &lt;h2&gt;What about MVVM Light?&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://www.galasoft.ch/mvvm"&gt;MVVM Light&lt;/a&gt; will of course support Silverlight 5, and I will release a version soon. I just need a little more time running my tests and making sure that everything is working as expected. Stay tuned to this blog for an announcement about the release of MVVM Light for Silverlight 5!&lt;/p&gt;  &lt;h2&gt;A few additional updates&lt;/h2&gt;  &lt;p&gt;Well there was a nice storm on Twitter, and within the noise I managed to grab a few useful facts.&lt;/p&gt;  &lt;p&gt;First, the &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=9503"&gt;Blend preview for Silverlight 5&lt;/a&gt; is available here. I did not verify that it works with Silverlight 5 RTM, but I think it should.&lt;/p&gt;  &lt;p&gt;Then, &lt;a href="http://support.microsoft.com/gp/lifean45#sl5"&gt;Silverlight 5 will be supported until December 2021&lt;/a&gt;. That’s 10 years of support.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=19131"&gt;The offline documentation&lt;/a&gt; can also be downloaded.&lt;/p&gt;  &lt;p&gt;Finally there was a lot of passionate &lt;a href="https://twitter.com/#!/search/lbugnion"&gt;discussions on Twitter tonight&lt;/a&gt;. I think it was especially interesting to confront the view of tech journalists versus MVPs vs developers. Bottom line is that there is a lot of passion around tech these days. I personally think it is too much passion, but some disagree and I think we will have to live with that for years to come…&lt;/p&gt;  &lt;p&gt;Cheers,    &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/09/silverlight-5-is-released.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/147993.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/12/09/silverlight-5-is-released.aspx</guid>
            <pubDate>Fri, 09 Dec 2011 19:59:03 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147993.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/12/09/silverlight-5-is-released.aspx#feedback</comments>
            <slash:comments>14</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147993.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147993.aspx</trackback:ping>
        </item>
        <item>
            <title>MVVM Light template and WCF services (or any ASP.NET application for that matter)</title>
            <link>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</link>
            <description>&lt;p&gt;I was recently made aware of a couple of people having issues with WCF services (or ASP.NET applications) when using the MVVM Light project template for Silverlight. There is a blog post and a StackOverflow question, so what exactly is happening there?&lt;/p&gt;  &lt;p align="left"&gt;Well in fact it is pretty simple when you know how Silverlight connects to web services. Due to the security model of Silverlight, the application cannot connect to a web site if it is not originating of this very website. In laymen’s terms, it means that the application can only connect to a web server if it also comes from the same webserver. For example, if the Silverlight application is served by &lt;a href="http://www.galasoft.com"&gt;http://www.galasoft.com&lt;/a&gt;, it won’t be able to connect to, say, &lt;a href="http://www.cnn.com"&gt;http://www.cnn.com&lt;/a&gt; without getting an exception. We talk about cross-domain access restrictions.&lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;Of course there are ways around that, for instance a website can specifically give access to Silverlight applications &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;through a configuration file&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p align="left"&gt;In the case that concerns us, it is exactly what is happening. You see, the MVVM Light Silverlight project template creates a Silverlight application without an ASP.NET host. I didn’t add one because I didn’t want to complicate the template too much. And also, to be honest, because adding a web project is super easy, but of course only if you know how to do, and this is exactly what we will do here!&lt;/p&gt;  &lt;h2&gt;Creating the application&lt;/h2&gt;  &lt;p&gt;The steps to create the application and the WCF service are as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create the MVVM Light application using the MVVM Light project template for Silverlight. &lt;/li&gt;    &lt;li&gt;Right click on the solution in the Solution Explorer and select "Add, New Project from the context menu. &lt;/li&gt;    &lt;li&gt;From the WCF category, select a WCF Service Application and create it. &lt;/li&gt;    &lt;li&gt;Build the application. &lt;/li&gt;    &lt;li&gt;Right click on the MVVM Light project and select Add Service Reference from the context menu. &lt;/li&gt;    &lt;li&gt;In the Add Service Reference dialog, click on Discover. &lt;/li&gt;    &lt;li&gt;Make sure that the found service is the one you want to connect to, and click on OK. &lt;/li&gt;    &lt;li&gt;In the MVVM Light application, open the file Model/DataService.cs and modify the code as follows: &lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharp" name="code"&gt;public class DataService : IDataService
{
    public void GetData(Action&amp;lt;DataItem, Exception&amp;gt; callback)
    {
        var client = new ServiceReference1.Service1Client();
        client.GetDataCompleted += ClientGetDataCompleted;

        client.GetDataAsync(1234, callback);
    }

    void ClientGetDataCompleted(
        object sender, 
        ServiceReference1.GetDataCompletedEventArgs e)
    {
        var callback = e.UserState as Action&amp;lt;DataItem, Exception&amp;gt;;

        if (callback == null)
        {
            return;
        }

        if (e.Error != null)
        {
            callback(null, e.Error);
        }

        callback(new DataItem(e.Result), null);
    }
}&lt;/pre&gt;

&lt;p&gt;This code uses an asynchronous service call pattern where the callback (a reference to a method passed as Action by the caller) is saved in the service call. Then when the asychronous call returns (in the Completed event), the callback is retrieved from the UserState. If an error occurred, the callback can be used to pass this error to the caller. Otherwise, a new DataItem class is created and passed to the called.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Details about this pattern can be found in my talks &lt;a href="http://www.galasoft.ch/mvvmvideo1"&gt;Understanding the MVVM pattern&lt;/a&gt; and &lt;a href="http://www.galasoft.ch/mvvmvideo2"&gt;Deep Dive MVVM&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;So why doesn’t it work?&lt;/h2&gt;

&lt;p&gt;If you run the application now (making sure that the MVVM Light project is selected as Startup Project), you will first see a warning dialog and then an exception. What happened?&lt;/p&gt;

&lt;p&gt;&lt;a title="Warning dialog" href="http://www.flickr.com/photos/36917929@N06/6473500843"&gt;&lt;img src="http://farm8.staticflickr.com/7154/6473500843_6dd5be59cf.jpg" width="478" height="185" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a title="Exception" href="http://www.flickr.com/photos/36917929@N06/6473504667"&gt;&lt;img src="http://farm8.staticflickr.com/7166/6473504667_0302c65c53.jpg" width="408" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;What happened here is exactly the cross-domain issue I mentioned: The Silverlight application is not explicitly hosted into a web application, so Visual Studio is using an auto-generated HTML page instead, and running it from the embedded web server (“Cassini”). In fact, unless you explicitly specified otherwise, the test page is run in “file mode” instead of HTTP mode. The URI in the web browser window starts with C:\ for instance, instead of http://.&lt;/p&gt;

&lt;p&gt;In those conditions, the access to the WCF service is (justly) denied, and you get a security exception.&lt;/p&gt;

&lt;h2&gt;Correcting the error&lt;/h2&gt;

&lt;p&gt;In order to correct the error, you can either &lt;a href="http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx"&gt;add a cross-domain policy file&lt;/a&gt; to your WCF application, or host the Silverlight application in the same web project as the WCF service. Let’s do that now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Right click on the WCF Service application in the Solution Explorer, and select Properties from the context menu. &lt;/li&gt;

  &lt;li&gt;On the left, select the Silverlight Applications tab. &lt;/li&gt;

  &lt;li&gt;Click on Add. &lt;/li&gt;

  &lt;li&gt;Select Use an existing Silverlight project in the solution and make sure that your MVVM Light application is selected in the combo box. &lt;/li&gt;

  &lt;li&gt;Make sure that Add a test page that references the control is checked, as well as Enable Silverlight debugging. &lt;/li&gt;

  &lt;li&gt;Press Add. &lt;/li&gt;
&lt;/ul&gt;
&lt;a title="Configuring the Silverlight application" href="http://www.flickr.com/photos/36917929@N06/6473557623"&gt;&lt;img src="http://farm8.staticflickr.com/7146/6473557623_569d8c0630.jpg" width="500" height="461" /&gt;&lt;/a&gt; 

&lt;p&gt;This creates two new files in your WCF Service application: One is suffixed TestPage.html and the other is suffixed TestPage.aspx. We typically don’t need the ASPX one so you can safely delete it.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Right click on the WCF Service application and select Set as StartUp Project from the context menu. &lt;/li&gt;

  &lt;li&gt;Right click about the HTML test page and select Set as Start Page from the context menu. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By doing this, we force Visual Studio to serve the HTML page and the Silverlight application from the same URL as the WCF Service, and to serve it as HTTP. This is possible because &lt;strong&gt;a WCF Service application is nothing else than an ASP.NET web server running WCF&lt;/strong&gt;. So the same web server can deliver HTML, Silverlight and of course WCF.&lt;/p&gt;

&lt;p&gt;If you run the application now, you will see the following result:&lt;/p&gt;
&lt;a title="Snagit Capture for Flickr" href="http://www.flickr.com/photos/36917929@N06/6473564443"&gt;&lt;img src="http://farm8.staticflickr.com/7007/6473564443_d68c4eb3fb.jpg" width="500" height="294" /&gt;&lt;/a&gt; 

&lt;p&gt;&lt;em&gt;Note that the warning shown earlier will still appear, but it is really just a warning, and you can safely turn it off. Just remember the cross-domain restriction when you publish your Silverlight application to another web server!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Success, we hit the WCF service and returned with a valid result! In fact, you can verify by placing breakpoints in the DataService.GetData method on the client, and in the Service1.GetData method on the server. Then press F5 to run the application in Debug mode and notice how you can easily debug both the client and the server at the same time.&lt;/p&gt;

&lt;h2&gt;What about the opposite way?&lt;/h2&gt;

&lt;p&gt;It is also possible to add a new MVVM Light application to an existing WCF Service application with the following steps (I am going a bit faster now, I am sure you will get it easily):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Open the existing WCF Service application. &lt;/li&gt;

  &lt;li&gt;Right click on the Solution and select Add New Project. &lt;/li&gt;

  &lt;li&gt;Select the MVVM Light project template for Silverlight and add a new project. &lt;/li&gt;

  &lt;li&gt;Build the application. &lt;/li&gt;

  &lt;li&gt;Just like before, add a Service Reference to the Silverlight application. &lt;/li&gt;

  &lt;li&gt;Again, just like before, add the Silverlight application to the WCF Service application (WCF Project Properties, Silverlight Applications, Add…). &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Summary&lt;/h2&gt;

&lt;p&gt;Hopefully the confusion around this is cleared now. In summary:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Silverlight applications are restricted to access cross-domain web servers (unless explicitly authorized to do so). &lt;/li&gt;

  &lt;li&gt;The default MVVM Light application does not have an explicit host, so it runs off the default test page. &lt;/li&gt;

  &lt;li&gt;You can however easily add the MVVM Light application to the WCF Service application and then run it and debug it. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that the steps above can be used to add an MVVM Light application (or any Silverlight application) to any ASP.NET application, be it WCF Service application, ASP.NET MVC application or “classic” ASP.NET application.&lt;/p&gt;

&lt;p&gt;Happy coding! 
  &lt;br /&gt;Laurent&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="margin-bottom: -1em"&gt;
  &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;

  &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt; 

    &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt; 

    &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/147973.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx</guid>
            <pubDate>Wed, 07 Dec 2011 21:36:33 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147973.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/12/07/mvvm-light-template-and-wcf-services-or-any-asp.net-application.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147973.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147973.aspx</trackback:ping>
        </item>
        <item>
            <title>Breaking change: Raising PropertyChanged with string.Empty in WinRT / Windows 8</title>
            <link>http://blog.galasoft.ch/archive/2011/09/25/breaking-change-raising-propertychanged-with-string.empty-in-winrt--windows.aspx</link>
            <description>&lt;p&gt;In the developer preview of Windows 8, I just noticed a breaking change in the way that data bindings react to the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.inotifypropertychanged.propertychanged(v=VS.85).aspx"&gt;PropertyChanged&lt;/a&gt;&lt;/strong&gt; event.&lt;/p&gt;  &lt;p&gt;First a bit of background: Often, objects that are databound to the UI are simple data objects (also called ViewModels) that implement the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.inotifypropertychanged(v=VS.85).aspx"&gt;INotifyPropertyChanged&lt;/a&gt;&lt;/strong&gt; interface. This interface is very simple and defines just one event, the PropertyChanged event, that needs to be raised by the ViewModel when one of its property changes. It is what makes the ViewModel “observable”. If a property of another object (typically a UI element) is data bound (through a Binding object, often set declaratively in XAML), then the value of the observing property will be synchronized to the value of the observable property.&lt;/p&gt;  &lt;p&gt;Raising the PropertyChanged event requires an instance of the &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.propertychangedeventargs(v=VS.85).aspx"&gt;PropertyChangedEventArgs&lt;/a&gt;&lt;/strong&gt; class, which takes a string as sole parameter of its constructor. The string to be passed is the name of the observable property.&lt;/p&gt;  &lt;h2&gt;Raising with string.Empty or null&lt;/h2&gt;  &lt;p&gt;In WPF and Silverlight, it is possible to raise the PropertyChanged event with an instance of the PropertyChangedEventArgs class constructed with string.Empty (or null) instead of an existing property’s name. When a PropertyChanged event is raised in this manner, the UI will re-query the value of each property of the ViewModel that is data bound to the UI. This is a convenient way to raise but one event and force the UI to update itself in response to cascading changes, for example. As such, this can be a good way to increase the performance of the application.&lt;/p&gt;  &lt;h2&gt;The breaking change in WinRT&lt;/h2&gt;  &lt;p&gt;However, while unit testing the version of &lt;a href="http://www.galasoft.ch/mvvm"&gt;MVVM Light&lt;/a&gt; for WinRT, I found out that raising the PropertyChanged event with an empty string or null does not update the bindings. I quickly coded a repro, and then coded the exact same code in Silverlight, and indeed the two applications do not react the same at all.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://galasoft.ch/blogs-all/Resources/20110925/INPCBreakingWinRT.zip"&gt;Metro – style repro&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://galasoft.ch/blogs-all/Resources/20110925/INPCBreakingSilverlight.zip"&gt;Expected behavior in Silverlight for comparison&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hopefully this is only an oversight and this will be fixed in a future version. &lt;/p&gt;  &lt;p&gt;Cheers,   &lt;br /&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; left: 130px; top: -36px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-top-style: none; margin-bottom: -20px; height: 23px; width: 450px; border-bottom-style: none; overflow: hidden; border-right-style: none; border-left-style: none; margin-top: 7px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/09/25/breaking-change-raising-propertychanged-with-string.empty-in-winrt--windows.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/147041.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/09/25/breaking-change-raising-propertychanged-with-string.empty-in-winrt--windows.aspx</guid>
            <pubDate>Sun, 25 Sep 2011 21:57:41 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147041.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/09/25/breaking-change-raising-propertychanged-with-string.empty-in-winrt--windows.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147041.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147041.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick tip: Select the correct INotifyPropertyChanged in Windows 8 / WinRT</title>
            <link>http://blog.galasoft.ch/archive/2011/09/25/quick-tip-select-the-correct-inotifypropertychanged-in-windows-8.aspx</link>
            <description>&lt;p&gt;Microsoft loves MVVM and INotifyPropertyChanged so much that they included this very useful interface twice in the new WinRT framework. Unfortunately, only one of these is working correctly (and the other one is likely a bug, remnant from the past &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Winking smile" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/Windows-Live-Writer/Quick-tip-Select-the-correct-INotifyProp_1400B/wlEmoticon-winkingsmile_2.png" /&gt;)&lt;/p&gt;  &lt;p&gt;When implementing INotifyPropertyChanged, make sure that you select the correct one! The one you want to use is into &lt;strong&gt;Windows.UI.Xaml.Data&lt;/strong&gt;. The old one, the one you DON’T WANT is into System.ComponentModel (the same namespace it was in WPF and Silverlight). If you select the wrong one, the Bindings will not be updated and the UI will remain dead as a dead fish. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm7.static.flickr.com/6173/6182240057_d008054937_o_d.png" /&gt;&lt;/p&gt;  &lt;p&gt;I mentioned before that Microsoft took the “once in a lifetime” opportunity (well, 5-10 years is a lifetime in the world of computers) to clean up and rearrange classes within the framework. This is one of the signs right here. As for the System.ComponentModel.INotifyPropertyChanged, I guess it will be removed in a later release of the WinRT framework.&lt;/p&gt;  &lt;div class="frame"&gt;&lt;strong&gt;Update&lt;/strong&gt;: Indeed I was just told by the excellent and always vigilant Tim Heuer &lt;a href="https://twitter.com/#!/timheuer/status/118075660366385152"&gt;that this bug has already been fixed&lt;/a&gt;. I guess we will see the fix in the next release to developers of Windows 8.&lt;/div&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;Laurent&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; left: 130px; top: -36px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-top-style: none; margin-bottom: -20px; height: 23px; width: 450px; border-bottom-style: none; overflow: hidden; border-right-style: none; border-left-style: none; margin-top: 7px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/09/25/quick-tip-select-the-correct-inotifypropertychanged-in-windows-8.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/147038.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/09/25/quick-tip-select-the-correct-inotifypropertychanged-in-windows-8.aspx</guid>
            <pubDate>Sun, 25 Sep 2011 20:47:24 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/147038.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/09/25/quick-tip-select-the-correct-inotifypropertychanged-in-windows-8.aspx#feedback</comments>
            <slash:comments>9</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/147038.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/147038.aspx</trackback:ping>
        </item>
        <item>
            <title>My thoughts about Build, Windows 8, WinRT, XAML and Silverlight</title>
            <link>http://blog.galasoft.ch/archive/2011/09/17/my-thoughts-about-build-windows-8-winrt-xaml-and-silverlight.aspx</link>
            <description>&lt;p&gt;Last week, Microsoft held their long awaited &lt;a href="http://www.buildwindows.com/"&gt;Build Windows&lt;/a&gt; (or simply "Build") conference in Anaheim CA. About 5000 people packed the convention center to discover the latest version of the Windows operation system: Windows 8.&lt;/p&gt;  &lt;p&gt;This is a very major iteration (much more than the Windows Vista –&amp;gt; Windows 7 transition) (and also, it is an early preview so it is quite unfinished ;) As such, we will definitely need a bit more time to play with it before we can express a truly informed opinion. Of course that didn't stop tech journalists and dumbasses all over the world to (again) express complex thoughts such as "Microsoft is abandoning Flash/Silverlight in Windows 8" or to ride again the "Silverlight is dead" roller coaster.&lt;/p&gt;  &lt;div class="frame"&gt;&lt;strong&gt;Side note:&lt;/strong&gt; Did I just call you a dumbass? Well if you are on this blog, reading, the answer is most probably NO. I want to be very clear: This comment was not targeted at Scott Barnes either (though, why would he think it was? mmm food for thoughts there) ;) The dumbasses are the haters, the people who keep taking any occasion to spread FUD because they do not know it, understand it, or simply because it has the name Microsoft on it. So no, I did not call YOU a dumbass. Apologies for not making that super clear from the start. After all, you read my blog, that makes you my best friend (or something ;)&lt;/div&gt;  &lt;p&gt; &lt;/p&gt; &lt;iframe height="315" src="http://www.youtube.com/embed/EyEEP2mKogg" frameborder="0" width="420" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;Of course, as usual (it is starting to get annoying, right?), these opinions are far from the truth and attempt to put a negative spin on everything Microsoft does. I won't even speculate why that is, but based on track records, it is safe to say that this kind of prediction is not very accurate or rational (remember when we were told that we would not be able to use anything else than HTML to build Windows 8 apps? Yeah those were the days ;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So what is the reality now? Here is what we know:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(disclaimer: this is based on what I understand after many discussions with experts. However, I am not a Windows 8 expert, I just played with it for 5 days now. If anything here is incorrect, it is my own fault and not the experts')&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Desktop vs Metro style&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Windows 8 has two modes, one named "Desktop" and one named "Metro style". These names are temporary and may very well change before release. The "Metro style" applications are also referred to as "immersive apps". &lt;/li&gt;    &lt;li&gt;Silverlight and WPF will continue to run as is on Windows 8 in Desktop mode. You can think of the Desktop mode as Windows 7++, an improved version especially optimized for touch operation. Honestly using the Desktop mode with the fingers is an amazing pleasure now, while it was a pain in Windows 7. &lt;/li&gt;    &lt;li&gt;All applications (as far as I tested) that run in Windows 7 also run on Windows 8 Desktop mode. I installed Silverlight and Flash already on mine, OneNote, Live Writer, Live Messenger, Skype and more. No issues at all so far (apart from an occasional instability because "it's an early preview" (TM)). &lt;/li&gt;    &lt;li&gt;Metro style applications (aka "immersive apps") are a &lt;strong&gt;new class of apps altogether&lt;/strong&gt;. They are in fact &lt;strong&gt;much more similar to a Windows Phone 7 app&lt;/strong&gt; than to a classic Windows application. They are optimized for Touch and can also be &lt;a href="http://www.winrumors.com/windows-8-tips-and-tricks-for-mousekeyboard-users/"&gt;actuated with keyboard and mouse&lt;/a&gt;, though the experience is better with the fingers. &lt;/li&gt;    &lt;li&gt;Metro style apps are sandboxed for security. Again, this is very similar to the Windows Phone 7 model. &lt;/li&gt;    &lt;li&gt;Metro style apps can be developed with 3 possible stacks: &lt;strong&gt;XAML/C++, XAML/C# or HTML/CSS/JavaScript&lt;/strong&gt;. They rely on a set of API named "WinRT" which is exposed in a very consistent manner for the three stacks. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This last point is important. It means that there is no reason to choose one or the other stack based on WinRT features that you want to address. Because of the chosen architecture, the features will automatically be available to the three stacks. In some cases however, some features will be hidden on purpose from one stack or the other, because they might simply not make sense.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The Windows 8 programming model: The blue side is largely unchanged (.NET 4.5, Silverlight 5, Win 32) and everything runs as usual. The green side is new (see the next section).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm7.static.flickr.com/6087/6156547594_deac345781_o_d.png" /&gt;&lt;/p&gt;  &lt;h1&gt;Programming stacks for WinRT&lt;/h1&gt;  &lt;ul&gt;   &lt;li&gt;Amongst the three stacks, there will be some differences due to the languages. For instance, JavaScript and C# don't address asynchronous programming in a similar manner (by the way Windows 8 is sporting C# 5, so you have the great &lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx"&gt;"await" and "async"&lt;/a&gt; keywords that are making asynchronous programming much more similar to synchronous coding). Similarly, JavaScript is more dynamic than C#, but C# is easier to code and to debug, etc. &lt;/li&gt;    &lt;li&gt;All three stacks talk to unmanaged code (the WinRT libraries). For C++, this is a direct unmanaged call. For C# and JavaScript, there is a thin managed layer to "map" the calls into WinRT. However, the managed layer is much thinner than before. It is simply because most of the previous .NET libraries are now WinRT libraries, and these are unmanaged. &lt;/li&gt;    &lt;li&gt;For the C# developer however, you will not notice that the WInRT are unmanaged (except in some rare occasions) because the API is managed. &lt;/li&gt;    &lt;li&gt;This means that the performance gain in C++ is not going to be as significant as versus "classic .NET". There will be however a small performance gain in using XAML/C++. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Portability of Metro style apps&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;HTML/CSS/JavaScript applications coded for WinRT are not cross platform. They are something new. They use WinRT specific APIs, both in HTML/CSS (for instance the new Grid layout, which is not supported by other browsers at this time), or of course any calls against the WinRT APIs. &lt;strong&gt;This is NOT web programming&lt;/strong&gt;. This is a standalone Windows 8 app that happens to be coded in a programming language that can also be used on the web. Two very different beasts, though of course knowledge and skills can be leveraged. &lt;/li&gt;    &lt;li&gt;XAML/C# apps are not Silverlight or WPF. They are something new. They use WinRT specific APIs (sounds familiar?). Mostly, these APIs were already available in Silverlight, however there was a rather large "spring cleaning" operation, and a lot of APIs were moved in different namespaces, and sometimes renamed. A good example of this is the System.Threading.Dispatcher class which is now a &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.core.coredispatcher(v=VS.85).aspx"&gt;Windows.UI.Core.CoreDispatcher&lt;/a&gt;. The original dispatcher's CheckAccess() method is now a property named &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.core.coredispatcher.hasthreadaccess(v=VS.85).aspx"&gt;HasThreadAccess&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In both these points, notice how similar the experience is for the developer: Much is familiar, some things are new (most significantly new/renamed APIs), skills are portable but there is a learning curve.&lt;/p&gt;  &lt;h2&gt;How to choose?&lt;/h2&gt;  &lt;p&gt;In Jason Zander's (and others') own words, to choose the stack of choice to create a new Metro style app, you should consider the skills you have. If you are a web programmer with a solid experience in JavaScript, it's obvious that you want to leverage your knowledge of the language. You will have a learning curve though, to learn the new proprietary APIs. If on the other hand you are a Silverlight/WPF developer, or even a .NET developer with no prior XAML experience, it will be easier and more faster for you to climb on the C#/XAML stack. Finally, if you are a C++ enthusiast, the C++/XAML stack is for you. And if like me you love to learn new things, then you can try one or both of the other stacks to build new apps.&lt;/p&gt;  &lt;p&gt;Because of the Win8 architecture, any new feature added to WinRT will (almost) automatically be available to all three programming stacks (in fact it requires a little bit of work to decide what should be exposed or not, because some APIs just don't make sense with a given programming language, but in regards to the investment needed to implement the feature, this is not significant.&lt;/p&gt;  &lt;h1&gt;What about existing applications?&lt;/h1&gt;  &lt;p&gt;It means that your (our) investments in any technology you were using until now are safe for a number of years. You had a Silverlight application, or are currently working on one? You should continue. WPF? Same thing. Not only these frameworks are fully supported and extended (&lt;a href="http://www.silverlight.net/learn/overview/what's-new-in-silverlight-5"&gt;Silverlight 5 release candidate&lt;/a&gt; was announced a few days before Build started), but they also work as is, without any changes on Windows 8.&lt;/p&gt;  &lt;h3&gt;And C#?&lt;/h3&gt;  &lt;p&gt;I had the immense privilege to be invited to a side session with Anders Heljsberg, the father of C#. It was a great session, and you can feel Anders' happiness and enthusiasm. WinRT currently supports C#5, including all the new features such as the &lt;a href="http://blogs.msdn.com/b/ericlippert/archive/2010/10/28/asynchrony-in-c-5-part-one.aspx"&gt;async and await&lt;/a&gt; keywords, and more. When asked if he was thinking of a version 6, Anders laughed and told us that he had a history of being quite stable at his job (13 years at Borland, 10+ years at Microsoft) and that he was foreseeing C# 6, 7, 8. C# is actively developed, and Anders is an accessible architect, who will listen to requests for new features. Changing a language is obviously not a fast process (nor should it be!) but his team is working on exciting stuff, and we are his customers!&lt;/p&gt;  &lt;h2&gt;Thoughts about porting applications from Silverlight/WPF to WinRT&lt;/h2&gt;  &lt;p&gt;This one is a tough one, mostly because I did not have time to experiment enough. If you have an existing application implemented in Silverlight or WPF, and you want to make it a WinRT application, how should you proceed, and is that easy?&lt;/p&gt;  &lt;p&gt;Based  on what I saw and what others reported, it is not a trivial process, even if in most cases the major work is to find out what was renamed and what was moved (see the “spring cleaning” mention above). If you want/have to do that work, I would consider the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Why do you want to do this? Do you really want to make your existing application (which by the way runs perfectly fine on the Windows 8 Desktop) a WinRT app? Who are you trying to touch. Shouldn’t you rather be developing a new app, &lt;strong&gt;something like a companion to the existing application&lt;/strong&gt;? &lt;/li&gt;    &lt;li&gt;If you answer “yes” to the “do you really want to” question, then I really hope that you followed best practices and layered and componentized your application carefully (I also hope you wrote unit tests, because you’re going to need those to verify that the ported code runs fine). &lt;/li&gt;    &lt;li&gt;Porting the code will take some effort. Do not underestimate the effort. I tend to believe that Microsoft was (purposely?) over-optimistic in telling us that this is an easy process. At least now that the documentation is in a very early stage, looking for the renamed objects is a tedious process. &lt;/li&gt;    &lt;li&gt;By the way, I started porting &lt;a href="http://galasoft.ch/mvvm/"&gt;MVVM Light&lt;/a&gt; to WinRT and I hope that (if my compulsion to blog about Windows 8 lets me) I might have something to share soon. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;Tip: I was told (and didn’t test yet) that &lt;a href="http://msdn.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx"&gt;ILDASM can decompile&lt;/a&gt; the WinRT assemblies and let you peek for your objects/methods/properties. This is because even though the WinRT framework is unmanaged, a thin layer of meta data is built in to allow managed code access. Pretty clever (and handy) if you ask me. I (again) didn’t try but I suspect that &lt;a href="http://www.jetbrains.com/decompiler/"&gt;dotPeek&lt;/a&gt; and other similar tools may work too. Let me know in the comments if you try it!&lt;/em&gt;&lt;/p&gt;  &lt;h2&gt;Wrapping up&lt;/h2&gt;  &lt;p&gt;There are a few not-very-well organized thoughts on Windows 8, WinRT, XAML and more, put together after 5 days of immersion and tons of discussions with Microsoft employees as well as third party experts. I hope you'll forgive me if it sounds a bit chaotic, it is simply that a new framework of that amplitude will need a few weeks (months?) to be fully assimilated and digested. I hope that this helps painting a clearer picture however.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm7.static.flickr.com/6204/6156003697_0a96a79737_o_d.jpg" width="250" height="256" /&gt;&lt;/p&gt;  &lt;p&gt;If there is one thing only you should take from this post, it is the following: Don't panic. Yes we will have some work to fully climb on this new exciting platform. But much MUCH of what we know is going to apply almost 1:1 to the new stack. Also, Microsoft is really investing in user experience, Blend, XAML, C# and all that. If there is only one session of Build that you must see, it is Jensen Harris fantastic &lt;a href="http://channel9.msdn.com/events/BUILD/BUILD2011/BPS-1004"&gt;Big Picture session about the Windows 8 UX&lt;/a&gt;.&lt;/p&gt; &lt;iframe style="height: 544px; width: 960px" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/BPS-1004/player?w=960&amp;amp;h=544" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;I for one am pretty excited about Windows 8 and WinRT. First it confirms what I have been thinking since I started playing with the Avalon bits: XAML is a great way to build a wonderful user experience, Blend is central to that experience and C# is awesome. I am also excited to see new ways to develop applications for WinRT, because diversity is good. The Samsung slate is an awesome device, and there was a great sense of excitement in Anaheim this week. Of course I am known for being an optimistic, but I don’t think it’s just me feeling that excitement. Windows 8 is going to be pretty awesome.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="1"&gt;Credit for “Don’t panic” button: &lt;a title="http://www.flickr.com/photos/brighton/2153602543/" href="http://www.flickr.com/photos/brighton/2153602543/s"&gt;http://www.flickr.com/photos/brighton/2153602543/s&lt;/a&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="margin-bottom: -1em"&gt;   &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;    &lt;div style="position: relative; left: 130px; top: -36px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt;       &lt;br /&gt;&lt;iframe style="border-top-style: none; margin-bottom: -20px; height: 23px; width: 450px; border-bottom-style: none; overflow: hidden; border-right-style: none; border-left-style: none; margin-top: 7px" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/09/17/my-thoughts-about-build-windows-8-winrt-xaml-and-silverlight.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt; &lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/146924.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/09/17/my-thoughts-about-build-windows-8-winrt-xaml-and-silverlight.aspx</guid>
            <pubDate>Sat, 17 Sep 2011 19:32:12 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/146924.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/09/17/my-thoughts-about-build-windows-8-winrt-xaml-and-silverlight.aspx#feedback</comments>
            <slash:comments>51</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/146924.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/146924.aspx</trackback:ping>
        </item>
        <item>
            <title>MVVM Light V4 beta1</title>
            <link>http://blog.galasoft.ch/archive/2011/09/12/mvvm-light-v4-beta1.aspx</link>
            <description>&lt;p&gt;This morning, I published MVVM Light V4 beta1 in the form of an MSI. The installation instructions are detailed on the &lt;a href="http://www.galasoft.ch/mvvm/installing/"&gt;MVVM Light installation page&lt;/a&gt;. Please make sure to &lt;a href="http://www.galasoft.ch/mvvm/cleaning/"&gt;uninstall previous versions&lt;/a&gt; before you install V4 beta1.&lt;/p&gt;  &lt;p&gt;There are &lt;a href="http://www.galasoft.ch/mvvm/installing/changes/"&gt;quite a few changes in this version&lt;/a&gt;, and I plan to blog about various features in the coming days. As usual, stay tuned!&lt;/p&gt;  &lt;h2&gt;Change log&lt;/h2&gt;  &lt;h3&gt;General changes&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Added &lt;a href="#XmlnsDefinitionAttribute"&gt;XmlnsDefinitionAttribute for GalaSoft.MvvmLight.Command&lt;/a&gt; in Extras assembly. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Setup&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;&lt;a href="http://www.galasoft.ch/mvvm/installing"&gt;Created an installer&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Messenger&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Fixed &lt;a href="http://mvvmlight.codeplex.com/workitem/7521"&gt;Issue #7521&lt;/a&gt;: race condition in Messenger.Default. &lt;/li&gt;    &lt;li&gt;Fixed &lt;a href="http://mvvmlight.codeplex.com/workitem/7539"&gt;Issue #7539&lt;/a&gt;: Messenger support for uncast objects. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;ViewModelBase&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Added support for RaisePropertyChanged(null) and RaisePropertyChanged(string.empty). A blog post about this will follow. &lt;/li&gt;    &lt;li&gt;Fixed &lt;a href="http://mvvmlight.codeplex.com/workitem/7520"&gt;Issue #7520&lt;/a&gt;: RaisePropertyChanged() fails in ReleaseBuild. This overload was removed because of the many issues, and replaced by the Set methods. &lt;/li&gt;    &lt;li&gt;Added Set(...) methods. A blog post about this will follow. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;RelayCommand&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Fixed &lt;a href="http://mvvmlight.codeplex.com/workitem/7522"&gt;Issue #7522&lt;/a&gt;: used deprecated Predicate instead of Func. &lt;/li&gt;    &lt;li&gt;Fixed &lt;a href="http://mvvmlight.codeplex.com/workitem/7534"&gt;Issue #7534&lt;/a&gt;: RelayCommand has security issue. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;SimpleIoc&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Implemented method IsRegistered&amp;lt;T&amp;gt;(). A blog post about this will follow. &lt;/li&gt;    &lt;li&gt;Fixed issue "Contains&amp;lt;T&amp;gt;() is returning true even if no instance was already instantiated". Contains&amp;lt;T&amp;gt;() only returns true if an instance is already created. IsRegistered&amp;lt;T&amp;gt;() returns true if the class has been registered with the IOC container. &lt;/li&gt;    &lt;li&gt;Fixed issue "Instances get created at registration already when registered with a key and a factory". Registering the instance does not execute the factory method yet. The method is only executed when the method GetInstance is called the first time. &lt;/li&gt;    &lt;li&gt;Fixed issue "Use the correct DLLs for CommonServiceLocator". The original DLLs from &lt;a href="http://commonservicelocator.codeplex.com"&gt;http://commonservicelocator.codeplex.com&lt;/a&gt; are now used everywhere. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;DispatcherHelper&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;The class was moved from GalaSoft.MvvmLight.Extras.dll into GalaSoft.MvvmLight.dll. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Project Templates&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;A couple of internal changes to the template's structure. &lt;/li&gt;    &lt;li&gt;Using the new slightly modified MVVM Light logo. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;ViewModelLocator Template&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Modified template to use SimpleIoc. &lt;/li&gt;    &lt;li&gt;A couple of internal changes to the template's structure. &lt;/li&gt;    &lt;li&gt;Using the new slightly modified MVVM Light logo. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;ViewModel Template&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;A couple of internal changes to the template's structure. &lt;/li&gt;    &lt;li&gt;Using the new slightly modified MVVM Light logo. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;View Template&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Fixed issue in XAML for WP7 and WP7.1 templates. &lt;/li&gt;    &lt;li&gt;A couple of internal changes to the template's structure. &lt;/li&gt;    &lt;li&gt;Using the new slightly modified MVVM Light logo. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;INPC snippet&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Setter in property is now public. &lt;/li&gt;    &lt;li&gt;Added $end$ marker. &lt;/li&gt;    &lt;li&gt;Added new snippets with various ways to call RaisePropertyChanged. &lt;/li&gt;    &lt;li&gt;Added a snippet using the new ViewModelBase.Set() method. &lt;/li&gt;    &lt;li&gt;A blog post will follow about all this. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;ViewModelLocator property snippet&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Added $end$ marker. &lt;/li&gt;    &lt;li&gt;Modified to use SimpleIoc. &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Relay Command snippets&lt;/h3&gt;  &lt;ul class="squarelist"&gt;   &lt;li&gt;Added code snippets for RelayCommands. A blog post about this will follow. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Details&lt;/h2&gt;  &lt;h3&gt;&lt;a id="XmlnsDefinitionAttribute"&gt;&lt;/a&gt;XmlnsDefinitionAttribute for GalaSoft.MvvmLight.Command in Extras assembly&lt;/h3&gt;  &lt;p&gt;Thanks to the addition of XmlnsDefinitionAttribute, you can simplify the inclusion of the MVVM Light EventToCommand action in XAML. See the before and after below:&lt;/p&gt;  &lt;pre class="xml" name="code"&gt;Before:

&amp;lt;UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
             
             xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.SL4"
             
             xmlns:cmd="http://www.galasoft.ch/mvvmlight" 
             x:Class="MvvmLight4.MainPage"&amp;gt;

After:

&amp;lt;UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
             xmlns:cmd="http://www.galasoft.ch/mvvmlight" 
             x:Class="MvvmLight4.MainPage"&amp;gt;&lt;/pre&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div style="margin-bottom: -1em"&gt;
  &lt;div style="vertical-align: middle"&gt;&lt;a href="http://www.galasoft.ch/"&gt;&lt;img title="GalaSoft Laurent Bugnion" alt="GalaSoft Laurent Bugnion" src="http://www.galasoft.ch/logo/Current/logo_120x30.png" /&gt;&lt;/a&gt; &lt;/div&gt;

  &lt;div style="position: relative; top: -36px; left: 130px"&gt;&lt;strong&gt;&lt;a href="http://www.galasoft.ch/contact_en.html"&gt;Laurent Bugnion (GalaSoft)&lt;/a&gt;&lt;/strong&gt; 

    &lt;br /&gt;&lt;a href="http://feeds.feedburner.com/galasoft"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://twitter.com/lbugnion"&gt;Twitter&lt;/a&gt; | &lt;a href="http://www.facebook.com/lbugnion"&gt;Facebook&lt;/a&gt; | &lt;a href="http://www.flickr.com/photos/lbugnion"&gt;Flickr&lt;/a&gt; | &lt;a href="http://www.linkedin.com/in/lbugnion"&gt;LinkedIn&lt;/a&gt; 

    &lt;br /&gt;&lt;iframe style="border-bottom-style: none; margin-top: 7px; border-left-style: none; width: 450px; border-top-style: none; margin-bottom: -20px; height: 23px; border-right-style: none; overflow: hidden" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.galasoft.ch/archive/2011/09/12/mvvm-light-v4-beta1.aspx&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;colorscheme=light" frameborder="0" allowtransparency="allowtransparency" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/div&gt; &lt;img src="http://blog.galasoft.ch/aggbug/146840.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://blog.galasoft.ch/archive/2011/09/12/mvvm-light-v4-beta1.aspx</guid>
            <pubDate>Mon, 12 Sep 2011 16:00:20 GMT</pubDate>
            <wfw:comment>http://blog.galasoft.ch/comments/146840.aspx</wfw:comment>
            <comments>http://blog.galasoft.ch/archive/2011/09/12/mvvm-light-v4-beta1.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://blog.galasoft.ch/comments/commentRss/146840.aspx</wfw:commentRss>
            <trackback:ping>http://blog.galasoft.ch/services/trackbacks/146840.aspx</trackback:ping>
        </item>
    </channel>
</rss>
