<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>.NET</title>
        <link>http://geekswithblogs.net/lbugnion/category/4827.aspx</link>
        <description>.NET</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>Multithreading in Windows Phone 7 emulator: A bug</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/19/multithreading-in-windows-phone-7-emulator-a-bug.aspx</link>
            <description>&lt;p&gt;Multithreading is supported in Windows Phone 7 Silverlight applications, however the emulator has a bug (which I discovered and was confirmed to me by the dev lead of the emulator team): If you attempt to start a background thread in the MainPage constructor, the thread never starts. The reason is a problem with the emulator UI thread which doesn’t leave any time to the background thread to start. Thankfully there is a workaround (see code below). Also, the bug should be corrected in a future release, so it’s not a big deal, even though it is &lt;em&gt;really&lt;/em&gt; confusing when you try to understand why the *%&amp;amp;^$£% thread is not &amp;amp;$%&amp;amp;%$£ starting (that was me in the plane the other day ;)&lt;/p&gt;  &lt;p&gt;This code &lt;strong&gt;does not work&lt;/strong&gt;:&lt;/p&gt;  &lt;pre class="csharp" name="code"&gt;public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();

        SupportedOrientations = SupportedPageOrientation.Portrait
            | SupportedPageOrientation.Landscape;

        var counter = 0;

        ThreadPool.QueueUserWorkItem(o =&amp;gt;
        {
            while (true)
            {
                Dispatcher.BeginInvoke(() =&amp;gt;
                {
                    textBlockListTitle.Text = (counter++).ToString();
                });
            }
        });
    }
}&lt;/pre&gt;

&lt;p&gt;This code &lt;strong&gt;does work&lt;/strong&gt;:&lt;/p&gt;

&lt;pre class="csharp" name="code"&gt;public MainPage()
{
    InitializeComponent();

    SupportedOrientations = SupportedPageOrientation.Portrait
        | SupportedPageOrientation.Landscape;

    var counter = 0;

    ThreadPool.QueueUserWorkItem(o =&amp;gt;
    {
        while (true)
        {
            Dispatcher.BeginInvoke(() =&amp;gt;
            {
                textBlockListTitle.Text = (counter++).ToString();
            });

            // NOTICE THIS LINE!!!
            Thread.Sleep(0);
        }
    });
}&lt;/pre&gt;

&lt;p&gt;Note that even if the thread is started in a later event (for example Click of a Button), the behavior without the Thread.Sleep(0) is not good in the emulator. As of now, i would recommend always sleeping when starting a new thread.&lt;/p&gt;

&lt;p&gt;Happy coding:&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; 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;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138622"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138622" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138622.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/19/multithreading-in-windows-phone-7-emulator-a-bug.aspx</guid>
            <pubDate>Sat, 20 Mar 2010 02:31:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138622.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/19/multithreading-in-windows-phone-7-emulator-a-bug.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138622.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138622.aspx</trackback:ping>
        </item>
        <item>
            <title>Sample code for my #mix10 talk online</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/16/sample-code-for-my-mix10-talk-online.aspx</link>
            <description>&lt;p&gt;I just saw that the video for my MIX10 session is online already! Impressive work, MIX10 team. I also published the sample code on my web server, so here are the links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/mix/10/pptx/EX14.pptx"&gt;Powerpoint slides&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;Video&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.MvvmDemo1Start.zip"&gt;MVVM Demo 1 (start)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.MvvmDemo1End.zip"&gt;MVVM Demo 1 (final)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.Command.zip"&gt;Command sample&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.RelayCommandSample.zip"&gt;RelayCommand sample&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.Messaging.zip"&gt;Messaging sample&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.MvvmDemo2Start.zip"&gt;MVVM Demo 2 (start)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/blogs-all/resources/MIX10/Mix10.MvvmDemo2End.zip"&gt;MVVM Demo 2 (final)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.galasoft.ch/mvvm/getstarted"&gt;MVVM Light Toolkit Version 3&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It was a real pleasure and an amazing experience to have this talk and to get all the great feedback! Thanks all for coming, and as usual don’t hesitate to send your feedback!&lt;/p&gt;  &lt;p&gt;Laurent&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138561"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138561" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138561.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/16/sample-code-for-my-mix10-talk-online.aspx</guid>
            <pubDate>Tue, 16 Mar 2010 22:19:40 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138561.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/16/sample-code-for-my-mix10-talk-online.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138561.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138561.aspx</trackback:ping>
        </item>
        <item>
            <title>What&amp;rsquo;s new in MVVM Light V3</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/16/whatrsquos-new-in-mvvm-light-v3.aspx</link>
            <description>&lt;p&gt;V3 of the MVVM Light Toolkit was released during MIX10, after quite a long alpha stage. This post lists the new features in MVVM Light V3.&lt;/p&gt;  &lt;h2&gt;Compatibility&lt;/h2&gt;  &lt;p&gt;MVVM Light Toolkit V3 can be installed for the following tools and framework versions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2008 SP1, Expression Blend 3      &lt;ul&gt;       &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;        &lt;li&gt;Silverlight 3 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Visual Studio 2010 RC, Expression Blend 4 beta      &lt;ul&gt;       &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 4 RC &lt;/li&gt;        &lt;li&gt;Silverlight 3 &lt;/li&gt;        &lt;li&gt;Silverlight 4 RC &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For more information about installing the MVVM Light Toolkit V3, &lt;a href="http://www.galasoft.ch/mvvm/installing/manually"&gt;please visit this page&lt;/a&gt;. For cleaning up existing installation, &lt;a href="http://www.galasoft.ch/mvvm/cleaning/"&gt;see this page&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;New in V3 RTM&lt;/h2&gt;  &lt;p&gt;The following features have been added &lt;strong&gt;after&lt;/strong&gt; V3 alpha3:&lt;/p&gt;  &lt;h3&gt;Project template for the Windows Phone 7 series (Silverlight)&lt;/h3&gt;  &lt;p&gt;This new template allows you to create a new MVVM Light application in Visual Studio 2010 RC and to run it in the Windows Phone 7 series emulator. This template uses the Silverlight 3 version of the MVVM Light Toolkit V3. At this time, only the essentials features of the GalaSoft.MvvmLight.dll assembly are supported on the phone.&lt;/p&gt;  &lt;h2&gt;New in V3 alpha3&lt;/h2&gt;  &lt;p&gt;The following features have been added &lt;strong&gt;after&lt;/strong&gt; V3 alpha2:&lt;/p&gt;  &lt;h3&gt;New logo&lt;/h3&gt;  &lt;p&gt;An awesome logo has been designed for MVVM Light by Philippe Schutz.&lt;/p&gt;  &lt;h3&gt;DispatcherHelper class (in GalaSoft.MvvmLight.Extras.dll)&lt;/h3&gt;  &lt;p&gt;This class is useful when you work on multi-threaded WPF or Silverlight applications.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Initializing:&lt;/strong&gt; The DispatcherHelper class must be initialized in the UI thread. For example, you can initialize the class in a Silverlight application’s Application_Startup event handler, or in the WPF application’s static App constructor (in App.xaml).&lt;/p&gt;  &lt;pre class="csharp" name="code"&gt;// Initializing in Silverlight (in App.xaml)

private void Application_Startup(
    object sender,
    StartupEventArgs e)
{
    RootVisual = new MainPage();
    DispatcherHelper.Initialize();
}


// Initializing in WPF (in App.xaml)

static App()
{
    DispatcherHelper.Initialize();
}&lt;/pre&gt;

&lt;h3&gt;Verifying if a property exists&lt;/h3&gt;

&lt;p&gt;The ViewModelBase.RaisePropertyChanged method now checks if a given property name exists on the ViewModel class, and throws an exception if that property cannot be found. This is useful to detect typos in a property name, for example during a refactoring. Note that the check is only done in DEBUG mode.&lt;/p&gt;

&lt;h3&gt;Replacing IDisposable with ICleanup&lt;/h3&gt;

&lt;p&gt;The IDisposable implementation in the ViewModelBase class has been marked obsolete. Instead, the ICleanup interface (and its Cleanup method) has been added. Implementing IDisposable in a ViewModel is still possible, but must be done explicitly. IDisposable in ViewModelBase was a bad practice, because it supposes that the ViewModel is garbage collected after Dispose is called. instead, the Cleanup method does not have such expectation.&lt;/p&gt;

&lt;p&gt;The ViewModelLocator class (created when an MVVM Light project template is used in Visual Studio or Expression Blend) exposes a static Cleanup method, which should in turn call each ViewModel’s Cleanup method. The ViewModel is free to override the Cleanup method if local cleanup must be performed.&lt;/p&gt;

&lt;h3&gt;Passing EventArgs to command with EventToCommand&lt;/h3&gt;

&lt;p&gt;The EventToCommand class is used to bind any event to an ICommand (typically on the ViewModel). In this case, it can be useful to pass the event’s EventArgs parameter to the command in the ViewModel. For example, for the MouseEnter event, you can pass the MouseEventArgs to a RelayCommand&amp;lt;MouseEventArgs&amp;gt; as shown in the next listings.&lt;/p&gt;

&lt;p&gt;Note: Bringing UI specific classes (such as EventArgs) into the ViewModel reduces the testability of the ViewModel, and thus should be used with care.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Setting EventToCommand and PassEventArgsToCommand:&lt;/em&gt;&lt;/p&gt;

&lt;pre class="xml" name="code"&gt;&amp;lt;Grid x:Name="LayoutRoot"&amp;gt;
    &amp;lt;i:Interaction.Triggers&amp;gt;
        &amp;lt;i:EventTrigger EventName="MouseEnter"&amp;gt;
            &amp;lt;cmd:EventToCommand Command="{Binding MyCommand}"
                                PassEventArgsToCommand="True" /&amp;gt;
        &amp;lt;/i:EventTrigger&amp;gt;
    &amp;lt;/i:Interaction.Triggers&amp;gt;
&amp;lt;/Grid&amp;gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Getting the EventArgs in the command&lt;/em&gt;&lt;/p&gt;

&lt;pre class="csharp" name="code"&gt;public RelayCommand&amp;lt;MouseEventArgs&amp;gt; MyCommand
{
    get;
    private set;
}

public MainViewModel()
{
    MyCommand = new RelayCommand&amp;lt;MouseEventArgs&amp;gt;(e =&amp;gt;
    {
        // e is of type MouseEventArgs
    });
}&lt;/pre&gt;

&lt;h3&gt;Changes to templates&lt;/h3&gt;

&lt;p&gt;Various changes have been made to project templates and item templates to make them more compatible with Silverlight 4 and to improve their visibility in Visual Studio and Expression Blend.&lt;/p&gt;

&lt;h3&gt;Bug corrections&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;When a message is sent through the Messenger class using the method Messenger.Default.Send&amp;lt;T&amp;gt;(T message, object token), and the token is a simple value (for example int), the message was not sent correctly. This bug is now corrected. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;New in V3&lt;/h2&gt;

&lt;p&gt;The following features have been added &lt;strong&gt;after&lt;/strong&gt; V2.&lt;/p&gt;

&lt;h3&gt;Sending messages with callback&lt;/h3&gt;

&lt;p&gt;Certain classes have been added to the GalaSoft.MvvmLight.Messaging namespace, allowing sending a message and getting a callback from the recipient. These classes are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;NotificationMessageWithCallback: Base class for messages with callback. &lt;/li&gt;

  &lt;li&gt;NotificationMessageAction: A class with string notification, and a parameterless callback. &lt;/li&gt;

  &lt;li&gt;NotificationMessageAction&amp;lt;T&amp;gt;: A class with string notification, and a callback with a parameter of type T. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To send a message with callback, use the following code:&lt;/p&gt;

&lt;pre class="csharp" name="code"&gt;var message = new NotificationMessageAction&amp;lt;bool&amp;gt;(
    "Hello world",
    callbackMessage =&amp;gt;
    {
        // This is the callback code
        if (callbackMessage)
        {
            // ...
        }
    });

Messenger.Default.Send(message);&lt;/pre&gt;

&lt;p&gt;To register and receive a message with callback, use the following code:&lt;/p&gt;

&lt;pre class="xml" name="code"&gt;Messenger.Default.Register&amp;lt;NotificationMessageAction&amp;lt;bool&amp;gt;&amp;gt;(
    this,
    message =&amp;gt;
    {
        // Do something
        
        // Execute the callback
        message.Execute(true);
    });&lt;/pre&gt;

&lt;h3&gt;Messenger.Default can be overriden&lt;/h3&gt;

&lt;p&gt;The Messenger.Default property can also be replaced, for example for unit testing purposes, by using the Messenger.OverrideDefault method. All the public methods of the Messenger class have been made virtual, and can be overridden in the test messenger class.&lt;/p&gt;

&lt;h3&gt;&lt;/h3&gt;

&lt;h3&gt;Sending messages to interfaces&lt;/h3&gt;

&lt;p&gt;In V2, it was possible to deliver messages targeted to instances of a given class. in V3 it is still possible, but in addition you can deliver a message to instances that implement a certain interface. The message will not be delivered to other recipients.&lt;/p&gt;

&lt;p&gt;Use the overload Messenger.Default.Send&amp;lt;TMessage, TTarget&amp;gt;(TMessage message) where TTarget is, in fact, an interface (for example IDisposable). Of course the recipient must register to receive the type of message TMessage.&lt;/p&gt;

&lt;h3&gt;Sending messages with a token&lt;/h3&gt;

&lt;p&gt;Messages can now be sent through the Messenger with a token.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;To send a message with token, use the method overload Send&amp;lt;TMessage&amp;gt;(TMessage message, object token). &lt;/li&gt;

  &lt;li&gt;To receive a message with token, use the methods Register&amp;lt;TMessage&amp;gt;(object recipient, object token, Action&amp;lt;TMessage&amp;gt; action) or Register&amp;lt;TMessage&amp;gt;(object recipient, object token, bool receiveDerivedMessagesToo, Action&amp;lt;TMessage&amp;gt; action) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The token can be a simple value (int, string, etc…) or an instance of a class. The message is not delivered to recipients who registered with a different token, or with no token at all.&lt;/p&gt;

&lt;h3&gt;Renaming CommandMessage to NotificationMessage&lt;/h3&gt;

&lt;p&gt;To avoid confusion with ICommand and RelayCommand, the CommandMessage class has been renamed to NotificationMessage. This message class can be used to deliver a notification (of type string) to a recipient.&lt;/p&gt;

&lt;h3&gt;ViewModelBase constructor with IMessenger&lt;/h3&gt;

&lt;p&gt;The ViewModelBase class now accepts an IMessenger parameter. If this constructor is used instead of the default empty constructor, the IMessenger passed as parameter will be used to broadcast a PropertyChangedMessage when the method RaisePropertyChanged&amp;lt;T&amp;gt;(string propertyName, T oldValue, T newValue, bool broadcast) is used.&lt;/p&gt;

&lt;p&gt;In the default ViewModelBase constructor is used, the Messenger.Default instance will be used instead.&lt;/p&gt;

&lt;h3&gt;EventToCommand behavior&lt;/h3&gt;

&lt;p&gt;The EventToCommand behavior has been added in V3. It can be used to bind any event of any FrameworkElement to any ICommand (for example a RelayCommand located in the ViewModel). More information about the EventToCommand behavior can be found &lt;a href="http://blog.galasoft.ch/archive/2009/11/05/mvvm-light-toolkit-v3-alpha-2-eventtocommand-behavior.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://blog.galasoft.ch/archive/2009/12/17/silverlight-4-dragampdrop-with-eventtocommand.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Updated the project templates to remove the sample application&lt;/h3&gt;

&lt;p&gt;The project template has been updated to remove the sample application that was created every time that a new MVVM Light application was created in Visual Studio or Blend. This makes the creation of a new application easier, because you don’t need to remove code before you can start writing code.&lt;/p&gt;

&lt;h3&gt;Bug corrections&lt;/h3&gt;

&lt;p&gt;Some bugs that were in Version 2 have been corrected:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In some occasions, an exception could be thrown when a recipient was registered for a message at the same time as a message was received. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;New names for DLLs&lt;/h2&gt;

&lt;p&gt;If you upgrade an existing installation, you will need to change the reference to the DLLs in C:\Program Files\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries. The assemblies have been moved, and the versions for Silverlight 4 and for WPF4 have been renamed, to avoid some confusion. It is now easier to make sure that you are using the correct DLL.&lt;/p&gt;

&lt;h3&gt;WPF3.5SP1, Silverlight 3&lt;/h3&gt;

&lt;p&gt;When using the DLLs, make sure that you use the correct versions.&lt;/p&gt;

&lt;p&gt;&lt;a title="DLLs for Silverlight 3" href="http://www.flickr.com/photos/36917929@N06/4433510284"&gt;&lt;img src="http://farm3.static.flickr.com/2715/4433510284_c49cf68ff6.jpg" width="500" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a title="DLLs for WPF 3.5 SP1" href="http://www.flickr.com/photos/36917929@N06/4433511944"&gt;&lt;img src="http://farm5.static.flickr.com/4003/4433511944_e2b18073e0.jpg" width="500" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;WPF4, Silverlight 4&lt;/h3&gt;

&lt;p&gt;When using the DLLs, make sure that you use the correct versions.&lt;/p&gt;

&lt;p&gt;&lt;a title="DLLs for Silverlight 4" href="http://www.flickr.com/photos/36917929@N06/4432738407"&gt;&lt;img src="http://farm3.static.flickr.com/2763/4432738407_dc6ca4a537.jpg" width="500" height="329" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a title="DLL2 for WPF 4" href="http://www.flickr.com/photos/36917929@N06/4433514364"&gt;&lt;img src="http://farm5.static.flickr.com/4032/4433514364_9ab5031c83.jpg" width="500" height="329" /&gt;&lt;/a&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; 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;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138557"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138557" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138557.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/16/whatrsquos-new-in-mvvm-light-v3.aspx</guid>
            <pubDate>Tue, 16 Mar 2010 16:42:53 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138557.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/16/whatrsquos-new-in-mvvm-light-v3.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138557.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138557.aspx</trackback:ping>
        </item>
        <item>
            <title>MVVM Light V3 released at #MIX10</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/16/mvvm-light-v3-released-at-mix10.aspx</link>
            <description>&lt;p&gt;&lt;a title="MVVM_White" href="http://www.flickr.com/photos/36917929@N06/4084208308/"&gt;&lt;img border="0" alt="MVVM_White" src="http://farm3.static.flickr.com/2706/4084208308_2fb7a14111_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;During my session “&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;Understanding the MVVM pattern&lt;/a&gt;” at MIX10 in Vegas, I showed some components of the MVVM Light toolkit V3, which gave me the occasion to announce the release of version 3. This version has been in alpha stage for a while, and has been tested by many users. it is very stable, and ready for a release. So here we go!&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h1&gt;What’s new&lt;/h1&gt;  &lt;p&gt;What’s new in MVVM Light Toolkit V3 is the topic of the next post.&lt;/p&gt;  &lt;h1&gt;Cleaning up&lt;/h1&gt;  &lt;p&gt;I would recommend cleaning up older versions before installing V3. I prepared a page &lt;a href="http://www.galasoft.ch/mvvm/cleaning"&gt;explaining how to do that manually&lt;/a&gt;. Unfortunately I didn’t have time to create an automatic cleaner/installer, this is very high on my list but with the book and the conferences going on, it will take a little more time. Cleaning up is recommended because I changed the name of some DLLs to avoid some confusion (between the WPF3.5 and WPF4 version, as well as between the SL3 and SL4 versions). More details in the section titled “Compatibility”.&lt;/p&gt;  &lt;h1&gt;Installation&lt;/h1&gt;  &lt;p&gt;Installing MVVM Light toolkit is the manual process of unzipping a few files. &lt;a href="http://www.galasoft.ch/mvvm/installing/manually"&gt;The installation page&lt;/a&gt; has been updated to reflect the newest information.&lt;/p&gt;  &lt;h1&gt;Compatibility&lt;/h1&gt;  &lt;p&gt;MVVM Light toolkit V3 has components for the following environments and frameworks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2008:      &lt;ul&gt;       &lt;li&gt;Silverlight 3 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Expression Blend 3      &lt;ul&gt;       &lt;li&gt;Silverlight 3 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Visual Studio 2010 RC      &lt;ul&gt;       &lt;li&gt;Silverlight 3 &lt;/li&gt;        &lt;li&gt;Silverlight 4 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 4 &lt;/li&gt;        &lt;li&gt;Silverlight for Windows Phone 7 series &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Expression Blend 4 beta      &lt;ul&gt;       &lt;li&gt;Silverlight 3 &lt;/li&gt;        &lt;li&gt;Silverlight 4 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 3.5 SP1 &lt;/li&gt;        &lt;li&gt;Windows Presentation Foundation 4 &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Feedback&lt;/h2&gt;  &lt;p&gt;As usual I welcome your constructive feedback. If you want the issue to be discussed in public, the best way is through the discussion page &lt;a href="http://mvvmlight.codeplex.com"&gt;on the Codeplex site&lt;/a&gt;. if you wish to keep the conversation private, please &lt;a href="http://www.galasoft.ch/contact"&gt;check my Contact page&lt;/a&gt; for ways to talk to me.&lt;/p&gt;  &lt;h1&gt;Video, tutorials&lt;/h1&gt;  &lt;p&gt;There are a few new videos and tutorials available for the MVVM Light toolkit. The material is listed on the &lt;a href="http://www.galasoft.ch/mvvm/getstarted#tutorials"&gt;Get Started page, under “tutorials”.&lt;/a&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; 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;/div&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138556"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138556" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138556.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/16/mvvm-light-v3-released-at-mix10.aspx</guid>
            <pubDate>Tue, 16 Mar 2010 16:40:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138556.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/16/mvvm-light-v3-released-at-mix10.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138556.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138556.aspx</trackback:ping>
        </item>
        <item>
            <title>My program at #MIX10</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;&lt;img style="margin: 0px 10px 0px 0px; display: inline" alt="MIX10Speaker" align="left" src="http://farm5.static.flickr.com/4031/4422274969_f62ba098fe_o.jpg" width="154" height="151" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Getting ready to fly to Vegas and MIX10 is really an exciting time! It is also a very busy time, because we are working on a few projects that will be shown on stage, I have my presentation to prepare, and of course as always the book… though these days it has been a bit on the back burner to be honest ;)&lt;/p&gt;  &lt;p&gt;I arrive in Vegas on Sunday evening around 10PM, so I won’t be able to make it to the traditional IdentityMine dinner this year. I am sure it will be fun nonetheless!&lt;/p&gt;  &lt;h1&gt;My session: Understanding the MVVM pattern&lt;/h1&gt;  &lt;p&gt;&lt;a title="http://live.visitmix.com/MIX10/Sessions/EX14" href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;http://live.visitmix.com/MIX10/Sessions/EX14&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My session is scheduled on the first day, which is awesome, so I am crossing my fingers and hoping that the MIX team doesn’t change it at the last minute… The session will take place on&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Monday, the 15th of March, 2PM, Room Lagoon F&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Important: &lt;/strong&gt;remember that the USA are moving to Summer time on Sunday, so don’t forget to adjust your watches!!&lt;/p&gt;  &lt;h1&gt;Ask the Experts&lt;/h1&gt;  &lt;p&gt;On Monday evening, I will attend the Ask the Experts event, which is taking place between 5Pm and 6:30PM in the main meal hall. This will be a great occasion to grab a beer and talk about code.&lt;/p&gt;  &lt;h1&gt;The Commons&lt;/h1&gt;  &lt;p&gt;MIX has a great place called the Commons, a great location to chill between sessions, and meet tons of interesting people. I love the Commons and plan to spend a lot of time there to meet as many people as I can.&lt;/p&gt;  &lt;h1&gt;Parties&lt;/h1&gt;  &lt;p&gt;I was invited to a few parties, and will do my best to avoid conflicts :) I plan to be at the following events:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight Mixers on Monday evening &lt;/li&gt;    &lt;li&gt;Insiders MIX party on Tuesday &lt;/li&gt;    &lt;li&gt;Silverlight partner happy hour on Tuesday too &lt;/li&gt; &lt;/ul&gt; This is a lot of fun, but at the same time we all know that the best value of a conference is to meet people face to face. This is just the right occasion.  &lt;h1&gt;And on Thursday…&lt;/h1&gt;  &lt;p&gt;On Thursday I will be attending a Silverlight event at the Luxor. It will be a very busy day, perfect way to end the conference. I fly back home on Friday morning, but due to a long stop in Washington DC (where I intend to go downtown and take pictures… except if the weather is bad, in which case I will probably go to the museum of flight), I will reach home only on Sunday.&lt;/p&gt;  &lt;h1&gt;Getting hold of me&lt;/h1&gt;  &lt;p&gt;The best way to reach me during MIX is to &lt;a href="http://www.twitter.com/lbugnion"&gt;send me a message on Twitter&lt;/a&gt;. I will regularly tweet my location at the conference, so make sure to come and meet me. I am eager to make new friends, to talk about the fantastic jobs we did in WPF and Silverlight over the past year and hear your war stories!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.twitter.com/lbugnion"&gt;http://www.twitter.com/lbugnion&lt;/a&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; 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;/div&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138433"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138433" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138433.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx</guid>
            <pubDate>Wed, 10 Mar 2010 18:01:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138433.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/10/my-program-at-mix10.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138433.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138433.aspx</trackback:ping>
        </item>
        <item>
            <title>Schedule for my session at MIX10</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/03/04/schedule-for-my-session-at-mix10.aspx</link>
            <description>&lt;p&gt;Microsoft has published the schedule for the MIX10 sessions. I have a sweet spot, and I dearly hope that it stays this way (Last year I had a great spot, but it was changed last minute and then I had a much better one, “competing” against Vertigo and their Playboy app… yeah try to explain to a bunch of geeks that MVVM is better than Playboy… good luck with that ;) Anyway, this year my sweet spot is on the very first day of the conference (there are workshops on Sunday, but this qualifies as pre-conference), Monday after the keynote which should get everyone pumped and excited.&lt;/p&gt;  &lt;h1&gt;Schedule and location&lt;/h1&gt;  &lt;p&gt;I would be really happy to meet y’all at&lt;/p&gt;  &lt;div class="frame"&gt;   &lt;p&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;Understanding the Model-View-ViewModel Pattern&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;in Lagoon F on Monday at 2:00 PM&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX14"&gt;http://live.visitmix.com/MIX10/Sessions/EX14&lt;/a&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;See you in Vegas (or in video…)&lt;/h1&gt;  &lt;p&gt;Everything I saw so far hints that this should be a very, very exciting edition of MIX, maybe the most electrifying ever. The great news is that everything will be available even if you cannot make it: The keynotes are typically streamed live, and if you remember last year’s experience at PDC, it is a really good alternative. Built with Silverlight, the feed uses smooth streaming (adjusting the quality according to your bandwidth automatically), possibility to pause and rewind if you miss something, and a great picture quality. As for the sessions, the message at MIX is that the videos will be available online approximately 24 hours after the session is being held. This is a great feat!&lt;/p&gt;  &lt;p&gt;So, see you in Vegas (or in video)!&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;Laurent&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138350"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138350" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138350.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/03/04/schedule-for-my-session-at-mix10.aspx</guid>
            <pubDate>Fri, 05 Mar 2010 07:48:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138350.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/03/04/schedule-for-my-session-at-mix10.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138350.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138350.aspx</trackback:ping>
        </item>
        <item>
            <title>Silverlight MVP of the year</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/02/18/silverlight-mvp-of-the-year.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/WindowsLiveWriter/SilverlightMVPoftheyear_829D/MVP_Horizontal_FullColor_cc%5B1%5D_2.png" rel="lightbox"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="MVP_Horizontal_FullColor_cc[1]" border="0" alt="MVP_Horizontal_FullColor_cc[1]" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/lbugnion/WindowsLiveWriter/SilverlightMVPoftheyear_829D/MVP_Horizontal_FullColor_cc%5B1%5D_thumb.png" width="189" height="79" /&gt;&lt;/a&gt; Here is a quick news from the MVP summit in Redmond. Things here are amazing, with a lot of good news (that will be made public at MIX, so in the mean time I cannot say anything more about it, except that it is awesome). The summit is, amongst other things, an amazing way to connect with other MVPs and with the product group. This is an amazing community to be a part of, full of really smart people.&lt;/p&gt;  &lt;p&gt;In that sense, it was a pretty big surprise for me when I got an email announcing me that I had been selected by my peers and by the product group as Silverlight MVP of the year. I am equally happy to say that I am not the only one, and Dave Campbell (of Silverlight Cream fame) was also selected. That makes me especially happy because I had voted for Dave :)&lt;/p&gt;  &lt;p&gt;I remember reading the Silverlight MVPs achievements back then, and thinking just WOW, what an amazing group of people to be a part of. It sounds cheesy, but I will say it anyway, any Silverlight MVP should be an MVP of the year :)&lt;/p&gt;  &lt;p&gt;Thanks all who voted for me, and here is to an amazing Silverlight year!!&lt;/p&gt;  &lt;p&gt;Laurent&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138034"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=138034" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/138034.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/02/18/silverlight-mvp-of-the-year.aspx</guid>
            <pubDate>Thu, 18 Feb 2010 18:10:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/138034.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/02/18/silverlight-mvp-of-the-year.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/138034.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/138034.aspx</trackback:ping>
        </item>
        <item>
            <title>Quick tip: Commenting out properties in XAML</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/02/01/quick-tip-commenting-out-properties-in-xaml.aspx</link>
            <description>&lt;p&gt;Often when you write XAML, you wish you could ignore a property temporarily. In code, it is easy to do: Just comment out the line where the property is set, and you are good to compile.&lt;/p&gt;  &lt;pre class="csharp" name="code"&gt;LayoutRoot.Background = new SolidColorBrush(Colors.Red);
//LayoutRoot.DummyProperty = "Ignored";
/* LayoutRoot.Another = "Ignored too"; */&lt;/pre&gt;

&lt;p&gt;In XAML it is not so easy, because XML (of which XAML is a dialect) does not have line comments, but only block comments. You can comment out a whole XAML element, but not just one property.&lt;/p&gt;

&lt;pre class="xml" name="code"&gt;&amp;lt;!--&amp;lt;ThisBlockIsIgnored Hello="World"
                    Again="Blah"&amp;gt;
    &amp;lt;Label Content="No parse" /&amp;gt;
&amp;lt;/ThisBlockIsIgnored&amp;gt;--&amp;gt;&lt;/pre&gt;

&lt;pre class="brush: xml;"&gt;&amp;lt;TextBlock Text="This is parsed"
   Tag="This too"
   &amp;lt;!--DummyAttribute="No parse"--&amp;gt;
   Margin="10"/&amp;gt;&lt;/pre&gt;
This last blocks creates an error. 

&lt;p&gt;Commenting single properties in XAML requires just a little more initial work, but then it is very easy:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In the root tag, add a new xmlns statement to import the Open XML markup compatibility elements: &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="xml" name="code"&gt;xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;Then, add another xmlns statement mapping a prefix of your choice (I like to use “ignore”) to an URI of your choice (for example “http://www.galasoft.ch/ignore”). Note that this URI does not need to point to anything on the web. This is just a unique resource identifier, something like a unique ID. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="xml" name="code"&gt;xmlns:ignore="http://www.galasoft.ch/ignore"&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;Finally, use the mc:Ignorable property to set the new prefix as ignorable. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="xml" name="code"&gt;mc:Ignorable="ignore"&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;Note: If you already had one ignorable prefix defined (for example the “d” prefix that Expression Blend and the Visual Studio designer use), no problems. Just add the new prefix to the Ignorable list with a space to separate the prefixes. &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="xml" name="code"&gt;mc:Ignorable="d ignore"&lt;/pre&gt;

&lt;p&gt;The XAML parser honors the Ignorable property and will simply ignore any value prefixed by one of the prefixes defined in the list. Do not however use the Blend “d” ignorable prefix, because this has a special meaning for Blend and Visual Studio designer. The way described here defines a brand new prefix without any additional meaning. The “ignore” prefix can be used for properties or for whole blocks (including their content):&lt;/p&gt;

&lt;p&gt;Single property:&lt;/p&gt;

&lt;pre class="xml" name="code"&gt;&amp;lt;TextBlock Text="This is parsed"
   Tag="This too"
   ignore:DummyAttribute="No parse"
   Margin="10"/&amp;gt;&lt;/pre&gt;

&lt;p&gt;Whole block:&lt;/p&gt;

&lt;pre class="xml" name="code"&gt;&amp;lt;ignore:ThisBlockIsIgnored Hello="World"
                    Again="Blah"&amp;gt;
    &amp;lt;Label Content="No parse" /&amp;gt;
&amp;lt;/ignore:ThisBlockIsIgnored&amp;gt;  &lt;/pre&gt;

&lt;p&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; 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;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137742"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137742" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/137742.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/02/01/quick-tip-commenting-out-properties-in-xaml.aspx</guid>
            <pubDate>Mon, 01 Feb 2010 17:26:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/137742.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/02/01/quick-tip-commenting-out-properties-in-xaml.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/137742.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/137742.aspx</trackback:ping>
        </item>
        <item>
            <title>The MVVM landscape at MIX10</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/01/21/the-mvvm-landscape-at-mix10.aspx</link>
            <description>&lt;div class="frame"&gt;&lt;strong&gt;Update: Shawn Wildermuth has changed his session and will be talking about Silverlight Security instead.&lt;/strong&gt;&lt;/div&gt;  &lt;p&gt;The MIX conference this year had an open call for sessions, and 12 sessions were voted by the public out of 169. Surprisingly (or maybe not that surprisingly in fact), 3 sessions out of the 12 have the MVVM pattern in their title. This shows a lot of interest for this pattern which is helping the developer to create decoupled, testable, blendable applications in Silverlight and in WPF.&lt;/p&gt;  &lt;p&gt;Since my session is one of the three, I decided to contact the other two speakers (we happen to run in the same circles ;)) and try to coordinate the content. I think that by talking to each other, we can organize our content so that we avoid overlap and offer a wider landscape to the audience.&lt;/p&gt;  &lt;p&gt;The two other authors responded positively to my request, and this is roughly how it will look like. Of course some overlap is unavoidable, to set the context right and avoid misunderstandings. After all, MVVM is a pattern, and as such there are multiple possible implementations or even interpretations of the pattern. But I think that this way, you will get a wider, deeper overview of what MVVM has to offer for you today.&lt;/p&gt;  &lt;h2&gt;Rob Eisenberg’s “Build Your Own MVVM Framework”&lt;/h2&gt;  &lt;p&gt;Rob is coordinator on the Caliburn project (a very powerful MVVM framework), but this is not a Caliburn talk. Instead, Rob will take some of the features of this framework and demonstrate how to build them from scratch. This should be a must see for the people who want to understand what is involved in a MVVM application, and how to avoid taking a dependency on an external framework. Rob will also talk about additional topics not directly related to MVVM.&lt;/p&gt;  &lt;h2&gt;Laurent Bugnion’s “Understanding the Model-View-ViewModel Pattern”&lt;/h2&gt;  &lt;p&gt;In this talk, I will set primary focus on the Blendability, i.e. how to structure your application so that it works great in Expression Blend. For instance, how can you display “design time data” in Expression Blend, so that the designers have something to design against. I will also show some components included in my MVVM Light Toolkit and explain how they can help you solve some issues in your applications. My talk will apply to Windows Presentation Foundation as well as Silverlight.&lt;/p&gt;  &lt;h2&gt;To be noted&lt;/h2&gt;  &lt;p&gt;It is nice to note that Rob and I are not employed by Microsoft, but “just” enthusiast users of the technologies we will talk about. There is a great community around Silverlight and WPF, and it is interesting to note that most of the MVVM frameworks (at the exception of PRISM which is not directly an MVVM framework) originate from outside of Microsoft. Let’s spread the word: MVVM is the pattern of choice when you work in WPF or Silverlight. Come visit our sessions, your life as a developer will be changed!&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;/div&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137570"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137570" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/137570.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/01/21/the-mvvm-landscape-at-mix10.aspx</guid>
            <pubDate>Thu, 21 Jan 2010 15:06:26 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/137570.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/01/21/the-mvvm-landscape-at-mix10.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/137570.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/137570.aspx</trackback:ping>
        </item>
        <item>
            <title>Avoiding issues when typing text in Bindings</title>
            <link>http://geekswithblogs.net/lbugnion/archive/2010/01/19/avoiding-issues-when-typing-text-in-bindings.aspx</link>
            <description>&lt;p&gt;The Binding class has a few properties that can be set to a text, including spaces. The properties StringFormat, TargetNullValue and FallbackValue are such properties. These properties exist in WPF and newly also in Silverlight 4.&lt;/p&gt;  &lt;p&gt;For example, you can type:&lt;/p&gt; &lt;a title="StringFormat and FallbackValue" href="http://www.flickr.com/photos/36917929@N06/4289701067"&gt;&lt;img src="http://farm5.static.flickr.com/4053/4289701067_e90006cb18.jpg" width="500" height="74" /&gt;&lt;/a&gt;   &lt;p&gt;Since these strings are typed within the Binding markup extension in XAML, they do not take quote signs, which leads the XAML editor to be a little confused, as the color coding shows: The text after the “This” turns to red in the figure above.&lt;/p&gt;  &lt;p&gt;Color alone is not really an issue, but another factor makes these strings very difficult to enter by default: The editor is configured to enter a comma after each Property/Value pair in the Binding expression. If you open the XAML editor and start typing such a binding expression, you will end up with:&lt;/p&gt; &lt;a title="StringFormat and FallbackValue with commas" href="http://www.flickr.com/photos/36917929@N06/4289719849"&gt;&lt;img src="http://farm5.static.flickr.com/4006/4289719849_160bb8b2df.jpg" width="500" height="71" /&gt;&lt;/a&gt;   &lt;p&gt;Of course this will crash and burn. However you can correct this: In Visual Studio 2010, select the menu Options / Text Editor / XAML / Miscellaneous and uncheck the option “Commas to separate MarkupExtension parameters”.&lt;/p&gt; &lt;a title="XAML options" href="http://www.flickr.com/photos/36917929@N06/4290466314"&gt;&lt;img src="http://farm5.static.flickr.com/4011/4290466314_5585e6eede.jpg" width="500" height="291" /&gt;&lt;/a&gt;   &lt;p&gt;From now on, commas will not be added automatically, and you will feel free!&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;/div&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137555"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=137555" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/lbugnion/aggbug/137555.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Laurent Bugnion</dc:creator>
            <guid>http://geekswithblogs.net/lbugnion/archive/2010/01/19/avoiding-issues-when-typing-text-in-bindings.aspx</guid>
            <pubDate>Wed, 20 Jan 2010 11:27:02 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/lbugnion/comments/137555.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/lbugnion/archive/2010/01/19/avoiding-issues-when-typing-text-in-bindings.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/lbugnion/comments/commentRss/137555.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/lbugnion/services/trackbacks/137555.aspx</trackback:ping>
        </item>
    </channel>
</rss>