<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Snowball - The Blog</title>
  <link rel="alternate" type="text/html" href="http://www.snowball.be/" />
  <link rel="self" href="http://www.snowball.be/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2013-03-08T09:55:01.9211805-05:00</updated>
  <author>
    <name>Gill Cleeren</name>
  </author>
  <subtitle>Gill's blog on .net programming</subtitle>
  <id>http://www.snowball.be/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>Slides and demos for my Advanced MVVM Cookbook session</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2013/03/08/Slides+And+Demos+For+My+Advanced+MVVM+Cookbook+Session.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f62c0e38-f9b4-4687-ad97-7ce0f9e3f2cc.aspx</id>
    <published>2013-03-08T09:55:01.9211805-05:00</published>
    <updated>2013-03-08T09:55:01.9211805-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Windows 8" label="Windows 8" scheme="http://www.snowball.be/CategoryView,category,Windows8.aspx" />
    <category term="WinRT" label="WinRT" scheme="http://www.snowball.be/CategoryView,category,WinRT.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Lots of attendees for my advanced MVVM talks at Belgium and the Netherlands.
As promised, here are the demos and slides for the talks. Enjoy!
</p>
        <p>
          <a href="http://gicl.me/AdvancedMVVMSlides">Slides</a>
        </p>
        <p>
          <a href="http://gicl.me/AdvancedMVVMDemo">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f62c0e38-f9b4-4687-ad97-7ce0f9e3f2cc" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for the Windows 8 Store apps and the outside world talks</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/11/08/Slides+And+Demos+For+The+Windows+8+Store+Apps+And+The+Outside+World+Talks.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d11c7e91-d7b4-4217-ac20-0012ccf17e48.aspx</id>
    <published>2012-11-08T11:15:09.5376967-05:00</published>
    <updated>2012-11-08T11:15:09.5376967-05:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As promised, here are my session slides and demos for the “Windows 8 Store apps and
the outside world” session for Visug and Windows 8 Store app user group London. Enjoy!
</p>
        <p>
          <a href="https://www.dropbox.com/s/stqsrpxh1xl21sa/Windows%208%2C%20Metro%20apps%20and%20the%20outside%20world%20-%20Gill%20Cleeren.pptx" target="_blank">Slides</a>
        </p>
        <p>
          <a href="https://dl.dropbox.com/u/17774202/Conference%20Downloads/Windows%208%2C%20Metro%20apps%20and%20the%20outside%20world%20-%20Gill%20Cleeren.zip" target="_blank">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d11c7e91-d7b4-4217-ac20-0012ccf17e48" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Installing Windows 8 Enterprise with your own MSDN key</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/08/23/Installing+Windows+8+Enterprise+With+Your+Own+MSDN+Key.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,2e93735c-20ae-4b52-b152-24b71e6d8ba4.aspx</id>
    <published>2012-08-23T17:14:46.9128733-04:00</published>
    <updated>2012-08-23T17:14:46.9128733-04:00</updated>
    <category term="Windows 8" label="Windows 8" scheme="http://www.snowball.be/CategoryView,category,Windows8.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since Windows 8 has been released on MSDN, many have run into problems on how to use
the Enterprise version and get it to activate. As you may have noticed, during setup,
you can’t enter your own key. So, how to get things to work. Follow the next simple
steps and enjoy the fun of Windows 8 in full :)
</p>
        <ol>
          <li>
Download Windows 8 Enterprise from MSDN. Copy your key.</li>
          <li>
Run the install of Windows 8. See, never during the install does it ask you for your
key. Sad panda?</li>
          <li>
With Windows installed (read: 5 minutes later :) ), you’ll get an error if you try
to activate.</li>
          <li>
Open an elevated prompt. To do so, go to the Start screen, search for the command
prompt, right-click/top-down-swipe-to-select it and from the app bar, tap to run as
administrator.</li>
          <li>
In the prompt, enter slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx (replacing all the X’s
with your key obviously).</li>
          <li>
Activation will now work without a problem (in my case, it had activated automatically).</li>
        </ol>
        <p>
Now start customizing that start screen!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2e93735c-20ae-4b52-b152-24b71e6d8ba4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Telerik UK user group tour Summer 2012</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/07/10/Telerik+UK+User+Group+Tour+Summer+2012.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,06820b5f-4faf-4c8d-a3b0-dc47b2f5ba89.aspx</id>
    <published>2012-07-10T18:02:22.1936829-04:00</published>
    <updated>2012-07-10T18:02:22.1936829-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <category term="Telerik" label="Telerik" scheme="http://www.snowball.be/CategoryView,category,Telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, I was busy with another user group tour in the UK for Telerik. This year,
I was able to give a total of 7 sessions in 4 cities (Hereford, Cheltenham, Bristol
and Southampton). A lot of people stopped by to join me on an exploration of some
Windows 8 and Windows Phone talks. During the talks, we looked at the upcoming <a href="http://www.telerik.com/products/win8.aspx">Telerik
controls for Windows 8</a> which will make LOB development much easier in the Windows
8 space!
</p>
        <p>
Here are some of the pictures of some of the evenings:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000246_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000246" border="0" alt="WP_000246" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000246_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000252_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000252" border="0" alt="WP_000252" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000252_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000258_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000258" border="0" alt="WP_000258" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000258_thumb.jpg" width="244" height="184" />
          </a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000263_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000263" border="0" alt="WP_000263" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000263_thumb.jpg" width="244" height="184" /></a><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000241_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000241" border="0" alt="WP_000241" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000241_thumb.jpg" width="244" height="184" /></a><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000254_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000254" border="0" alt="WP_000254" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000254_thumb.jpg" width="244" height="184" /></a><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000262_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP_000262" border="0" alt="WP_000262" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKusergrouptourSummer2012_19/WP_000262_thumb.jpg" width="244" height="184" /></a></p>
        <p>
All the slides and demos can be downloaded below.
</p>
        <ul>
          <li>
Hereford: 
</li>
          <ul>
            <li>
Advanced WinRT: <a href="https://www.sugarsync.com/pf/D780771_028496_1829632">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829637">Demos</a></li>
            <li>
Windows Phone 7.5 Background workers: <a href="https://www.sugarsync.com/pf/D780771_028496_1829628">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829613">Demos</a></li>
          </ul>
          <li>
Cheltenham:</li>
          <ul>
            <li>
Contract: <a href="https://www.sugarsync.com/pf/D780771_028496_1829640">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829645">Demos</a></li>
            <li>
Tiles: <a href="https://www.sugarsync.com/pf/D780771_028496_1829759">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829642">Demos</a></li>
          </ul>
          <li>
Bristol</li>
          <ul>
            <li>
Visual Studio 2012 and .NET 4.5: <a href="https://www.sugarsync.com/pf/D780771_028496_1829624">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829620">Demos</a></li>
          </ul>
          <li>
Southampton:</li>
          <ul>
            <li>
Metro and WinRT for the Silverlight/WPF developer: <a href="https://www.sugarsync.com/pf/D780771_028496_1829610">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_1829618">Demos</a></li>
          </ul>
        </ul>
        <p>
Thanks for stopping by to all that attended!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=06820b5f-4faf-4c8d-a3b0-dc47b2f5ba89" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos from my 2 NDC 2012 talks</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/06/08/Slides+And+Demos+From+My+2+NDC+2012+Talks.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,41f0de98-9539-475e-a1d1-1ecf7e132393.aspx</id>
    <published>2012-06-08T03:15:48.0198927-04:00</published>
    <updated>2012-06-08T03:15:48.0198927-04:00</updated>
    <category term="NDCOslo" label="NDCOslo" scheme="http://www.snowball.be/CategoryView,category,NDCOslo.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
For the third year in a row, I was selected as a  speaker at NDC Oslo, in my
opinion one of the best developer conferences. If you're a developer, this is THE
conference that should be on your agenda starting next year. All videos from this
and past editions can be found at <a href="http://www.vimeo.com/ndcoslo">http://www.vimeo.com/ndcoslo</a>. 
</p>
        <p>
This year, I was asked to do 2 sessions: Windows Phone 7.5 Background workers and
Advanced WinRT. Here are all the demos and slides for both sessions:
</p>
        <p>
Windows Phone 7 Background workers: <a href="https://www.sugarsync.com/pf/D780771_7709183_6714554">Slides</a> - <a href="https://www.sugarsync.com/pf/D780771_7709183_6714551">Demos</a><br />
Advanced WinRT: <a href="https://www.sugarsync.com/pf/D780771_7709183_6714577">Slides</a> - <a href="https://www.sugarsync.com/pf/D780771_7709183_6714579">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=41f0de98-9539-475e-a1d1-1ecf7e132393" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2012: registration open</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/05/09/Community+Day+2012+Registration+Open.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,3ead57dc-269c-4b2b-bb06-bf87fcf6e986.aspx</id>
    <published>2012-05-09T01:59:46.0923619-04:00</published>
    <updated>2012-05-09T01:59:46.0923619-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m very proud to officially announce that the registrations for <a href="http://bit.ly/ComDay">Community
Day 2012</a> are open. Like all the previous editions, thanks to the numerous sponsors,
the event is completely free. This year, we’ve outdone ourselves: we have a 6th track,
over <a href="http://bit.ly/ComDayAgenda">40 deep-technical sessions</a> and the best
networking opportunities available. 
</p>
        <p>
So, don’t wait to <a href="http://bit.ly/ComDayReg">register</a>. 
</p>
        <p>
Below you can find all the details of the event:
</p>
        <p>
          <strong>Location:</strong> Utopolis Mechelen (<a href="http://www.bing.com/maps/default.aspx?v=2&amp;FORM=LMLTCC&amp;cp=51.026551~4.5002&amp;style=h&amp;lvl=16&amp;tilt=-90&amp;dir=0&amp;alt=-1000&amp;phx=0&amp;phy=0&amp;phscl=1&amp;trfc=1&amp;encType=1">Map</a>)<br /><strong>Address: </strong>Spuibeekstraat 5 2800 Mechelen<br /><strong>Event date: </strong>Thursday June 21th<br /><strong>Start &amp; end time:</strong><strong><em>8.30 - 19.00<br /></em>Add Community Day 2012 to your agenda: </strong><a href="http://www.communityday.be/data/Community Day 2012.ics"><strong>Outlook
*.ics file</strong></a></p>
        <p>
Participating user groups:
</p>
        <li>
AZUG 
</li>
        <li>
Belgian C++ user group 
</li>
        <li>
BESUG (soon PIRAD) 
</li>
        <li>
BIWUG 
</li>
        <li>
CLUG 
</li>
        <li>
IT-Talks 
</li>
        <li>
Pro-Exchange 
</li>
        <li>
SCUG 
</li>
        <li>
SQLUG 
</li>
        <li>
ACCB.net/VBIB 
</li>
        <li>
Visug 
</li>
        <li>
WinSec 
</li>
        <li>
XNA-BUG 
</li>
        <li>
DotNetHub 
</li>
        <li>
MyTIC 
</li>
        <li>
Wiphug 
</li>
        <li>
TechNine 
<p>
Our sponsors! They make the event possible!
</p><p><table width="500"><tbody><tr><td valign="middle"><p align="center">
 
</p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/cronos.png" /></p></td><td valign="middle"><p align="center">
 
</p></td></tr><tr><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/microsoft.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/devoteam.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/getronics.png" /></p></td></tr><tr><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/infosupport.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/ordina.png" td="" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/veeam.png" /></p></td></tr><tr><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/combell.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/jetbrains.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/kenze.png" /></p></td></tr><tr><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/nrb.png" /></p></td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/realdolmen.png" /></p></td><td><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/telerik.png" /></p></td></tr><tr><td valign="middle">
 </td><td valign="middle"><p align="center"><img alt="" src="http://www.communityday.be/Portals/0/smalllogos/cegeka.jpg" /></p></td><td>
 </td></tr></tbody></table></p><p></p><p></p><p></p></li>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3ead57dc-269c-4b2b-bb06-bf87fcf6e986" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Download a sample chapter of my book</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/05/02/Download+A+Sample+Chapter+Of+My+Book.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,75d35e88-9b3b-4c43-9e60-dfd716dd050c.aspx</id>
    <published>2012-05-02T04:34:32.8290025-04:00</published>
    <updated>2012-05-02T04:34:32.8290025-04:00</updated>
    <category term="SL5 Data and Services Cookbook" label="SL5 Data and Services Cookbook" scheme="http://www.snowball.be/CategoryView,category,SL5DataAndServicesCookbook.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you’re considering buying my new book, but you’re not sure if it’s a good fit for
what you’re looking, the following might help! You can now download a sample chapter
where you can see the style of the book as well as get some real information!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Downloadasamplechapterofmybook_94B4/book_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="book" border="0" alt="book" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Downloadasamplechapterofmybook_94B4/book_thumb.png" width="198" height="244" />
          </a>
        </p>
        <p>
Download the sample chapter <a href="http://www.packtpub.com/sites/default/files/9781849683500-Chapter-8_0.pdf?utm_source=packtpub&amp;utm_medium=free&amp;utm_campaign=pdf">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=75d35e88-9b3b-4c43-9e60-dfd716dd050c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My new book is published: Silverlight 5 Data and Services Cookbook!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/05/01/My+New+Book+Is+Published+Silverlight+5+Data+And+Services+Cookbook.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,e36cc6b2-e7a4-4134-a4e4-34a170936ef2.aspx</id>
    <published>2012-05-01T11:02:27.4946665-04:00</published>
    <updated>2012-05-01T11:02:27.4946665-04:00</updated>
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="SL5 Data and Services Cookbook" label="SL5 Data and Services Cookbook" scheme="http://www.snowball.be/CategoryView,category,SL5DataAndServicesCookbook.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Noted the quietness on my blog? Well, it’s about to stop as I can proudly present
where I’ve been spending all my free hours on: my new book: <a href="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1849683506/ref=sr_1_1?ie=UTF8&amp;qid=1335883846&amp;sr=8-1">Silverlight
5 Data and Services Cookbook</a>. This book is the sequel to my first book, Silverlight
4 Data and Services Cookbook. 
</p>
        <p>
The first version did very well (<a href="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_5?ie=UTF8&amp;qid=1335883846&amp;sr=8-5">it’s
a five-star book on Amazon UK and Amazon.com</a>!) so we decided that the latest version
of Silverlight deserved a good book in the enterprise space as well! This is why Kevin
Dockx and myself wrote a whopping 650 page book. 
</p>
        <p>
 
</p>
        <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="book" border="0" alt="book" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MynewbookispublishedSilverlight5DataandS_EF9D/book_3.png" width="252" height="311" />
        <p align="left">
Should you buy the second version if you already have the first edition? Well, for
starters, the new book has more than 200 extra pages, all the existing recipes have
been reviewed and modified for Silverlight 5. Over 35 new recipes have been added
which deeply cover MVVM, RIA Services, local data and even Windows Phone 7. And of
course, all the new features that come with Silverlight 5 have been added in new recipes
as well! I think it’s well worth the investment!
</p>
        <p align="left">
Here’s a complete description (actually, it’s the back cover :) ):
</p>
        <p>
          <em>Microsoft Silverlight is a programmable web browser plugin that enables features
including animation, vector graphics, and audio-video playback – features that characterize
Rich Internet Applications. However, Silverlight is a great (and growing) Line-Of-Business
platform and is increasingly being used to build data-driven business applications,
both in an out of the browser. It is also the heart of Windows Phone 7 development
so developers can leverage their knowledge on Microsoft’s new mobile platform as well.
Services enable efficient access to your data, allowing you to draw on multiple sources
of data and solve particular data problems. There is very little existing material
that demonstrates how to build data-driven, enterprise-ready solutions with the platform.
Silverlight 3 and 4 made a big step into Line-Of-Business data services and Silverlight
5 builds further upon this. 
<br /><br />
In this book, Gill Cleeren, Microsoft Regional Director, Silverlight MVP (former ASP.NET
MVP), Telerik MVP at Ordina Belgium and Kevin Dockx, a technical specialist/project
leader on .NET web applications and a solution manager for Rich Applications at RealDolmen,
focus on showing .NET developers how to get their finger on the pulse of data-driven
business applications in Silverlight and Windows Phone 7. What’s more, the upcoming
Windows 8 will allow developers to build native, immersive Metro-style applications
using XAML &amp; C# - exactly what this book is based upon. In other words, the techniques
described in this book also apply to Windows 8. 
<br /><br />
This book is not a general Silverlight 4/5 overview book; it is uniquely aimed at
developers who want to build data-driven applications, based on best practices. It
focuses on showing .NET developers how to interact with, and handle multiple sources
of data in Silverlight business applications, and how to solve particular data problems
following a practical hands-on approach, using real-world recipes. It is a practical
cookbook that teaches you how to build data-rich business applications with Silverlight
that draw on multiple sources of data. Most of the features covered work both in Silverlight
4 and 5. However, we cover some that are specific to Silverlight 5, which will therefore
not work with Silverlight 4. Where this is the case, it is clearly indicated. 
<br /></em>
          <em>
            <br />
Packed with reusable, real-world recipes, the book begins by introducing you to general
principles when programming Silverlight. It then dives deep into the world of data
and services, covering all the options available to access data and communicate with
services to get the most out of data in your Silverlight business applications, whilst
at the same time providing a rich user experience. This book also covers topics related
to storing data locally as well as explaining how to work with data and services in
a Model-View-View-Model (MVVM) architecture. Most of the content is applicable to
Windows Phone 7 developers as well; a specific chapter on WP7 development is included
in this release. By following the practical recipes in this book, which are of varying
difficulty levels, you will learn the concepts needed to create data-rich business
applications—from the creation of a Silverlight application, to displaying data in
the Silverlight application and applying best practices such as MVVM. Each recipe
covers a data services topic, going from the description of the problem, through a
conceptual solution to a solution containing sample code.</em>
        </p>
        <p>
The complete table of contents can be viewed on the publisher’s site: <a title="http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book" href="http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book">http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book</a></p>
        <p>
Interested in getting your hands on a copy? You can buy directly from <a href="http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book">the
publisher</a> or go via <a href="http://www.packtpub.com/microsoft-silverlight-5-data-and-services-cookbook/book">Amazon</a> or
Barnes and Noble, Safari or one of the many online retailers!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=e36cc6b2-e7a4-4134-a4e4-34a170936ef2" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Demos and slides of SilverlightShow webinar on WIndows 8 for XAML developers (part 1)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2012/02/02/Demos+And+Slides+Of+SilverlightShow+Webinar+On+WIndows+8+For+XAML+Developers+Part+1.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c8c7fc67-485f-48bb-a90c-93bb83de7493.aspx</id>
    <published>2012-02-02T16:17:44.1894202-05:00</published>
    <updated>2012-02-02T16:17:44.1894202-05:00</updated>
    <category term="Metro" label="Metro" scheme="http://www.snowball.be/CategoryView,category,Metro.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webcasts" label="Webcasts" scheme="http://www.snowball.be/CategoryView,category,Webcasts.aspx" />
    <category term="Webinars" label="Webinars" scheme="http://www.snowball.be/CategoryView,category,Webinars.aspx" />
    <category term="Windows 8" label="Windows 8" scheme="http://www.snowball.be/CategoryView,category,Windows8.aspx" />
    <category term="WinRT" label="WinRT" scheme="http://www.snowball.be/CategoryView,category,WinRT.aspx" />
    <category term="XAML" label="XAML" scheme="http://www.snowball.be/CategoryView,category,XAML.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today I think I broke a record: the most popular SilverlightShow webinar, judging
from the number of registrations and attendees. Thanks all for joining!
</p>
        <p>
Here are the slides and demos for part 1:
</p>
        <p>
          <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!885&amp;parid=BD64F22E01FAD982!883">Slides</a> - <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!884&amp;parid=BD64F22E01FAD982!883">Demos</a></p>
        <p>
Hope to see you for part 2 on February 9th!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c8c7fc67-485f-48bb-a90c-93bb83de7493" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos of my MSDN webinar on Silverlight 5</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/12/18/Slides+And+Demos+Of+My+MSDN+Webinar+On+Silverlight+5.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,98ee3fde-0f72-44a6-a30e-4f36ee4eab40.aspx</id>
    <published>2011-12-18T17:49:04.9532058-05:00</published>
    <updated>2011-12-18T17:49:04.9532058-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On December 6th, I did a webinar on the new features in Silverlight 5. You can download
all the material from the below links.
</p>
        <p>
Let’s explore Silverlight 5: <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!857&amp;parid=BD64F22E01FAD982!199">Slides</a> - <a href="http://www.snowball.be/ct.ashx?id=b4a7164b-3e98-4466-a32a-ca3d431238f8&amp;url=https%3a%2f%2fskydrive.live.com%2fredir.aspx%3fcid%3dbd64f22e01fad982%26resid%3dBD64F22E01FAD982!855%26parid%3dBD64F22E01FAD982!852">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=98ee3fde-0f72-44a6-a30e-4f36ee4eab40" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos of my SDN talks</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/12/15/Slides+And+Demos+Of+My+SDN+Talks.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b4a7164b-3e98-4466-a32a-ca3d431238f8.aspx</id>
    <published>2011-12-15T03:39:10.4934223-05:00</published>
    <updated>2011-12-15T03:39:10.4934223-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
With a bit of delay, here are the slides and demos of my 2 talks I gave at the SDN
Conference in Zeist, The Netherlands.
</p>
        <p>
Let’s explore Silverlight 5: <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!854&amp;parid=BD64F22E01FAD982!852">Slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!855&amp;parid=BD64F22E01FAD982!852">Demos</a></p>
        <p>
Silverlight and Azure: <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!853&amp;parid=BD64F22E01FAD982!852">Slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!781&amp;parid=BD64F22E01FAD982!773">Demos</a></p>
        <p>
Small note: the Silverlight 5 demos were built for the RC version of Silverlight 5
and need a rebuild before they’ll work with the RTM version. 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b4a7164b-3e98-4466-a32a-ca3d431238f8" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Telerik Tour in UK/Scotland: all the downloads and retrospective</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/12/04/Telerik+Tour+In+UKScotland+All+The+Downloads+And+Retrospective.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d06d6394-d171-4c5d-b26d-5e821ff927a5.aspx</id>
    <published>2011-12-04T17:49:55.629179-05:00</published>
    <updated>2011-12-04T17:49:55.629179-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
To complete the travelling of 2011, I spent the last week of November touring the
entire UK for another user group tour for Telerik (the second one in the UK this year).
Telerik is very active in the support of user groups: through the Telerik Insider
program, speakers can be requested to go and talk to user groups all over the world,
entirely sponsored by Telerik. During the talks, which are deep-dive technical talks,
licenses and swag is given to attendees.
</p>
        <p>
This tour brought me in the Northern part of the country, more specifically, I visited
a user group in Liverpool, Newcastle, Edinburgh and Aberdeen. At each location, we
did 2 sessions. One of these that we “repeated” at each location was an introduction
to Windows 8 and WinRT development. This of course triggered a lot of interesting
discussion and questions. Each stop also filled their rooms quite well! We were lucky
to have good weather (we had, apart from one single rain shower, not a single day
of rain in Scotland in the last week of November!) so I made all the cities in place.
Also, the weather triggered high show-rates.
</p>
        <p>
I brought home a few things from Scotland, including a cold that is now in its 10th
day. This caused me to be delayed in posting all the content. But now, without further
delay, here’s all the files (slides and demos) of all talks:
</p>
        <p>
Windows 8 – Windows Runtime: <a href="https://skydrive.live.com/?cid=BD64F22E01FAD982&amp;id=BD64F22E01FAD982%21773&amp;sc=documents#!/view.aspx?cid=BD64F22E01FAD982&amp;resid=BD64F22E01FAD982%21777">slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!778&amp;parid=BD64F22E01FAD982!773">demos</a></p>
        <p>
Liverpool: Building a Windows Phone 7 app from start to finish:<br /><a href="https://skydrive.live.com/?cid=BD64F22E01FAD982&amp;id=BD64F22E01FAD982%21773&amp;sc=documents#!/view.aspx?cid=BD64F22E01FAD982&amp;resid=BD64F22E01FAD982%21774">slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!779&amp;parid=BD64F22E01FAD982!773">demos</a></p>
        <p>
Newcastle: Silverlight and Azure<br /><a href="https://skydrive.live.com/?cid=BD64F22E01FAD982&amp;id=BD64F22E01FAD982%21773&amp;sc=documents#!/view.aspx?cid=BD64F22E01FAD982&amp;resid=BD64F22E01FAD982%21776">slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!781&amp;parid=BD64F22E01FAD982!773">demos</a></p>
        <p>
Edinburgh: Building a Windows Phone 7 app from start to finish<br /><a href="https://skydrive.live.com/?cid=BD64F22E01FAD982&amp;id=BD64F22E01FAD982%21773&amp;sc=documents#!/view.aspx?cid=BD64F22E01FAD982&amp;resid=BD64F22E01FAD982%21774">slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!779&amp;parid=BD64F22E01FAD982!773">demos</a></p>
        <p>
Aberdeen: Silverlight 5 for LOB Development<br /><a href="https://skydrive.live.com/?cid=BD64F22E01FAD982&amp;id=BD64F22E01FAD982%21773&amp;sc=documents#!/view.aspx?cid=BD64F22E01FAD982&amp;resid=BD64F22E01FAD982%21775">slides</a> – <a href="https://skydrive.live.com/redir.aspx?cid=bd64f22e01fad982&amp;resid=BD64F22E01FAD982!780&amp;parid=BD64F22E01FAD982!773">demos</a></p>
        <p>
I hope you enjoyed it. Thanks for all the user groups for their work!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d06d6394-d171-4c5d-b26d-5e821ff927a5" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>TechDays 2012 is coming</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/12/02/TechDays+2012+Is+Coming.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,5fd1e5bc-8ca3-41f0-91a5-19960b580110.aspx</id>
    <published>2011-12-02T09:28:30.7541353-05:00</published>
    <updated>2011-12-02T09:28:30.7541353-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h1>About Microsoft TechDays 
</h1>
        <p>
Year after year <strong>thousands of technology professionals</strong> come together
to network with peers and experts, while diving deep into Microsoft technologies and
learning about the latest products and solutions. <a href="http://click.email.microsoftemail.com/?qs=bf907c5b3655688c0dc79b37086fb1c402db725c41b4fedde988e45b0cb5a178ab2da84c2fb01593"><b>Microsoft
TechDays</b></a> is one of the <strong>premier technical events</strong> in Belgium
&amp; Luxembourg and not to be missed. 
</p>
        <p>
With more technology areas than ever to explore, <strong>TechDays 2012</strong> is
the perfect place to <strong>get up-to-speed</strong> on the latest Microsoft technologies
and <strong>up-level your skill</strong> on the technology you use every day. Content
will be delivered by <strong>industry experts</strong> and <strong>Microsoft product
team members</strong>. 
</p>
        <h3>Register now
</h3>
        <p>
Join our <strong>10<sup>th</sup> anniversary edition</strong> in a <strong>new location</strong> (Kinepolis
Imagibraine - Braine l'Alleud) and learn about:
</p>
        <ul>
          <li>
Tooling and languages with Visual Studio, C# and VB 
</li>
          <li>
Cloud development with Windows Azure Platform 
</li>
          <li>
Web development with HTML5, JavaScript and ASP.NET ... 
</li>
          <li>
Windows &amp; Internet Explorer 
</li>
          <li>
Windows Server &amp; Hyper-V 
</li>
          <li>
Windows Phone 7 development 
</li>
          <li>
System Center 2012 &amp; Windows Intune 
</li>
        </ul>
        <h4>Kinepolis Imagibraine
</h4>
        <p>
After 3 great years in Metropolis Antwerp we’re moving TechDays to a new location:
Kinepolis Imagibraine in Braine l’Alleud (Eigenbrakel). The movie theatre is easily
reachable both by car and via public transportation. 
</p>
        <p>
          <a href="http://www.kinepolisbusiness.com/Images/kineb2b/complex/440x247/imagibraine_1_440x247.jpg">
            <img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="clip_image0019" border="0" alt="clip_image0019" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays-2012_A75F/clip_image0019_048fd15b-a7dd-432c-bca9-8ab09f81b287.jpg" width="187" height="114" />
          </a>
          <a href="http://www.kinepolisbusiness.com/Images/kineb2b/complex/440x247/imagibraine_7_440x247.jpg">
            <img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="clip_image00154" border="0" alt="clip_image00154" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays-2012_A75F/clip_image00154_4ed0e057-d405-46df-8678-57f072f6c71f.jpg" width="189" height="115" />
          </a>
          <a href="http://www.kinepolisbusiness.com/Images/kineb2b/complex/440x247/imagibraine_3_440x247.jpg">
            <img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" title="clip_image00174" border="0" alt="clip_image00174" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays-2012_A75F/clip_image00174_c111ef2c-9776-4b45-b65b-bceee0f7684b.jpg" width="189" height="115" />
          </a>
          <br />
          <br />
If you’re coming by <strong>train</strong>: the Braine l’Alleud train station is <strong>very
well connected with major cities in Belgium</strong>: 
<br /><br /><strong>- Antwerp:</strong> direct connection from Antwerpen-Centraal taking approx.
1 hour 
<br />
- <strong>Ghent</strong>: 1 hour trip from Gent Sint-Pieters, switching trains once
at Brussel-Zuid 
<br />
- <strong>Brugge</strong>: 1,5 hour trip switching trains once at Brussel-Zuid 
<br />
- <strong>Hasselt</strong>: 1,5 hour trip switching trains once at Brussel-Zuid 
<br />
- <strong>Leuven</strong>: 50 min trip switching trains once at Brussel-Noord 
<br />
- <strong>Mons</strong>: 1 hour trip switching trains once at Brussel-Zuid 
<br />
- <strong>Namur:</strong> 1 hour trip switching trains once at Charleroi-Sud 
<br />
- <strong>Liège:</strong> 1,5 hour trip switching trains once at Brussel-Zuid 
<br />
- <strong>Brussels</strong>: 15 minutes from Brussel-Zuid
</p>
        <p>
There is a direct <strong>bus</strong> line (<a href="http://www.infotec.be/index.aspx?PageId=633023153759916642">bus
67</a> from the TEC company) running from the Braine l’Alleud train station to Kinepolis
Imagibraine, taking about 10 minutes. 
</p>
        <p>
Coming by <strong>car</strong>? Kinepolis Imagibraine is just 5 minutes from the R0
highway (exit 24). Driving directions are available <a href="http://www.kinepolis.com/sharedMedia/media/complex_pdf/route_KBRAI_NED.pdf" target="_blank">here</a>. 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=5fd1e5bc-8ca3-41f0-91a5-19960b580110" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos of the UX Tour talk</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/11/10/Slides+And+Demos+Of+The+UX+Tour+Talk.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,80df9e0c-8005-4383-aef3-7759cab4ac3c.aspx</id>
    <published>2011-11-10T08:04:32.1216391-05:00</published>
    <updated>2011-11-10T08:04:32.1216391-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="WP7" label="WP7" scheme="http://www.snowball.be/CategoryView,category,WP7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I seem to have forgotten to upload the slides and demos of my talk at the UX Tour
event last week in Antwerp, Belgium. You can now download them below <a href="https://skydrive.live.com/?cid=bd64f22e01fad982&amp;sc=documents&amp;uc=1&amp;id=BD64F22E01FAD982%21199#">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=80df9e0c-8005-4383-aef3-7759cab4ac3c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Telerik UK and Scotland tour coming up</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/11/09/Telerik+UK+And+Scotland+Tour+Coming+Up.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ca51ec17-3c25-4339-be1e-1a1c6a5d695b.aspx</id>
    <published>2011-11-09T14:53:46.3547807-05:00</published>
    <updated>2011-11-09T14:53:46.3547807-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m getting ready for yet another user group tour for Telerik, the second time in
the UK and Scotland this year (earlier I did Cambridge, Oxford and several other cities).
Since Telerik is sponsoring these sessions, I can give away some licenses on each
stop as well! Each evening, we’ll do some deep technical talks on XAML-related topics.
</p>
        <p>
This time, I’m heading more to the North of the country: I’ll be stopping in Liverpool,
Newcastle, Edinburgh and Aberdeen. In each city, I’ll be doing 2 talks. For most evenings,
some seats are still available so you can still register. All sessions are of course
free and some food (I guess pizza :) ) will be available as well.
</p>
        <p>
Registering can be done through the following links.
</p>
        <ul>
          <li>
            <strong>Monday 21st November: Liverpool<br /></strong>Registration: <a href="http://thestack-november2011.eventbrite.com">http://thestack-november2011.eventbrite.com</a><br />
Sessions:</li>
          <ul>
            <li>
Windows 8 Development and WinRT</li>
            <li>
Building a Windows Phone 7 app from start to finish</li>
          </ul>
          <li>
            <strong>Tuesday 22nd November: Newcastle</strong>
            <br />
Registration: <a href="http://nebytesgcleerennov2011.eventbrite.com/">http://nebytesgcleerennov2011.eventbrite.com/</a><br />
Sessions:</li>
          <ul>
            <li>
WinRT and Metro Applications</li>
            <li>
Switching on the Cloud for Silverlight</li>
          </ul>
          <li>
W<strong>ednesday 23rd November: Edinburgh<br /></strong>Registration: <a href="http://gillcleeren2011.eventbrite.co.uk/?ebtv=F">http://gillcleeren2011.eventbrite.co.uk/?ebtv=F</a><br />
Sessions:</li>
          <ul>
            <li>
Building a Windows Phone 7 app from start to finish</li>
            <li>
Windows 8 Development and WinRT</li>
          </ul>
          <li>
            <strong>Thursday 24th November: Aberdeen</strong>
            <br />
Registration: <a href="http://www.aberdeendevelopers.co.uk/post/2011/10/10/ADNUGUK-%E2%80%93-November-2011-Meeting.aspx">http://www.aberdeendevelopers.co.uk/post/2011/10/10/ADNUGUK-%E2%80%93-November-2011-Meeting.aspx</a><br />
Sessions:</li>
          <ul>
            <li>
Windows Runtime and Metro Apps for Windows 8</li>
            <li>
Silverlight 5 for LOB Development</li>
          </ul>
        </ul>
        <p>
I hope to see you there!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ca51ec17-3c25-4339-be1e-1a1c6a5d695b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for NNUG talks in Oslo</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/11/09/Slides+And+Demos+For+NNUG+Talks+In+Oslo.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,2a61df0d-8961-4dbf-882d-f1216e4650eb.aspx</id>
    <published>2011-11-09T03:00:04.9035098-05:00</published>
    <updated>2011-11-09T03:00:04.9035098-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
While I was teaching a Windows Phone 7 class in Oslo, Norway, I found the time to
stop by at the local NNUG user group. I gave 2 talks and as promised, you can download
the slides and demos below:
</p>
        <p>
          <a href="https://skydrive.live.com/?cid=bd64f22e01fad982&amp;sc=documents&amp;uc=2&amp;id=BD64F22E01FAD982%21199#">Silverlight
5 LOB Development</a>
          <br />
          <a href="https://skydrive.live.com/?cid=bd64f22e01fad982&amp;sc=documents&amp;uc=2&amp;id=BD64F22E01FAD982%21199#">MVVM
in Silverlight</a>
        </p>
        <p>
I hope you enjoyed them, thanks to all attendees (over 70!) for stopping by on such
short notice!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2a61df0d-8961-4dbf-882d-f1216e4650eb" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>DevReach slides and demos</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/10/20/DevReach+Slides+And+Demos.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,5eb7fe4a-940c-44d8-bcd3-913ceb152891.aspx</id>
    <published>2011-10-20T07:10:51.4649835-04:00</published>
    <updated>2011-10-20T07:12:21.1794333-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had the privilege to speak at DevReach in Sofia, Bulgaria this week. DevReach is
a great conference, sponsored mainly by Telerik. Now in its sixth edition, the conference
always manages to have some of the best speakers around, including Scott Hanselman,
Carl Franklin, Richard Campbell and many others.
</p>
        <p>
I gave 2 talks on Silverlight. As promised, you can download the code and slide decks
below:
</p>
        <p>
Silverlight 5 LOB Development: <a href="https://www.sugarsync.com/pf/D780771_028496_9422776">Slides</a> – <a href="https://www.sugarsync.com/pf/D780771_028496_9422770">Demos</a><br />
Advanced Silverlight Development: <a href="https://www.sugarsync.com/pf/D780771_028496_9422762">Slides</a> - <a href="https://www.sugarsync.com/pf/D780771_028496_9422760">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=5eb7fe4a-940c-44d8-bcd3-913ceb152891" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>SilverlightShow Advanced Silverlight 5 webinar files</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/08/25/SilverlightShow+Advanced+Silverlight+5+Webinar+Files.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,99f2de60-c483-4790-9502-f44d9716800d.aspx</id>
    <published>2011-08-25T03:55:56.9376951-04:00</published>
    <updated>2011-08-25T03:55:56.9376951-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webcasts" label="Webcasts" scheme="http://www.snowball.be/CategoryView,category,Webcasts.aspx" />
    <category term="Webinars" label="Webinars" scheme="http://www.snowball.be/CategoryView,category,Webinars.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On Wednesday 24th August, I gave a webinar on Advanced Silverlight 5 development for
SilverlightShow.net. The webinar was attended by a lot of people and I got a lot of
great feedback on it. Thanks!
</p>
        <p>
As promised, you can download the slides and the demos from my blog:
</p>
        <p>
          <a href="http://www.snowball.be/data/Presentations/SilverlightShow/Advanced_Silverlight_5_Gill_Cleeren.zip">Slides</a>
        </p>
        <p>
          <a href="http://www.snowball.be/data/Presentations/SilverlightShow/Advanced_Silverlight5_Gill_cleeren_Demos.zip">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=99f2de60-c483-4790-9502-f44d9716800d" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Join me today for a webinar on Silverlight 5</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/08/24/Join+Me+Today+For+A+Webinar+On+Silverlight+5.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4b65820b-2c07-4444-aefd-a8c893d4707f.aspx</id>
    <published>2011-08-24T03:06:01.2964142-04:00</published>
    <updated>2011-08-24T03:06:01.2964142-04:00</updated>
    <category term="Webinars" label="Webinars" scheme="http://www.snowball.be/CategoryView,category,Webinars.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Today, Wednesday August 24th, I’ll be doing a one hour tour of the advanced
new features available in Silverlight 5</strong>. I will explain what you’ll be using
in 2012 for all your Silverlight needs! 
</p>
        <p>
          <a href="http://www.silverlightshow.net/news/Free-Silverlight-Show-Webinar-Deep-DIVE-in-Silverlight-FIVE.aspx">
            <img alt="" src="http://www.silverlightshow.net/Storage/Webinars/webinar_dive_thumb.png" />
          </a>
        </p>
        <p>
These are some of the topics that will be covered during the session: 
</p>
        <ul>
          <li>
Data binding improvements such as Ancestor RelativeSource, style setter bindings,
implicit data templates and debugging options 
</li>
          <li>
Writing custom markup extensions 
</li>
          <li>
Changes in the trusted apps area 
</li>
          <li>
Working with the composition thread 
</li>
          <li>
ICustomTypeProvider 
</li>
          <li>
Miscellaneous improvements such as combobox type-ahead, font changes 
</li>
          <li>
Some topics which are post-beta</li>
        </ul>
        <p>
The webinar is free of course and you can win a prize!
</p>
        <p>
Registration can be done <a href="http://www.silverlightshow.net/news/Tomorrow-Advanced-Silverlight-5-Webinar-with-sur-prizes-for-our-attendees.aspx">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4b65820b-2c07-4444-aefd-a8c893d4707f" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Cleaning a LightSwitch solution</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/08/22/Cleaning+A+LightSwitch+Solution.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,62bc04bf-2b1d-4a80-b3d4-3f45a116ce28.aspx</id>
    <published>2011-08-22T10:28:06.802-04:00</published>
    <updated>2011-08-22T10:31:58.5420589-04:00</updated>
    <category term="LightSwitch" label="LightSwitch" scheme="http://www.snowball.be/CategoryView,category,LightSwitch.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When developing LightSwitch applications with Visual Studio, a newly created (and
built) solution is quite heavy on disk space. We are talking of about 100 – 130MB
per solution. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CleaningaLightSwitchsolution_E640/image_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CleaningaLightSwitchsolution_E640/image_thumb.png" width="244" height="167" />
          </a>
        </p>
        <p>
While creating the course material for <a href="http://edu.ordina.be/Courses/Microsoft/Silverlight/LightSwitch2011/tabid/213/Default.aspx">Ordina’s
upcoming LightSwitch course</a>, I typically create many demo solutions, totaling
several gigs of DLLs. Luckily, I found a *.cmd file in the downloads of Wrox’s excellent
LightSwitch book: <a href="http://www.wrox.com/WileyCDA/WroxTitle/Beginning-Microsoft-Visual-Studio-LightSwitch-Development.productCd-1118021959.html">Beginning
Microsoft Visual Studio LightSwitch Development</a> by István Novák. 
</p>
        <p>
Running this file cleans all unnecessary files (which are recreated by Visual Studio)
from the solution folder, making it easier to store many solutions on your local disk.
</p>
        <p>
This is the contents of the *.CMD file:
</p>
        <p>
@echo off 
</p>
        <p>
del /Q /S /A:H &lt;solutionName&gt;.suo<br />
cd .\&lt;solutionName&gt; 
</p>
        <p>
del /Q /S Client\bin<br />
rd /Q /S Client\bin<br />
del /Q /S Client\obj<br />
rd /Q /S Client\obj 
</p>
        <p>
del /Q /S ClientGenerated\bin<br />
rd /Q /S ClientGenerated\bin<br />
del /Q /S ClientGenerated\obj<br />
rd /Q /S ClientGenerated\obj 
</p>
        <p>
del /Q /S Common\bin<br />
rd /Q /S Common\bin<br />
del /Q /S Common\obj<br />
rd /Q /S Common\obj 
</p>
        <p>
del /Q /S Server\bin<br />
rd /Q /S Server\bin<br />
del /Q /S Server\obj<br />
rd /Q /S Server\obj 
</p>
        <p>
del /Q /S bin\Debug<br />
rd /Q /S bin\Debug<br />
del /Q /S bin\Release<br />
rd /Q /S bin\Release 
</p>
        <p>
del /Q /S ServerGenerated\bin<br />
rd /Q /S ServerGenerated\bin<br />
del /Q /S ServerGenerated\obj<br />
rd /Q /S ServerGenerated\obj<br />
del /Q /S _Pvt_Extensions<br />
rd /Q /S _Pvt_Extensions<br />
cd ..<br />
echo Cleanup completed.<br />
pause 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
You can download the file from this link as well as a ZIP file: <a href="http://www.snowball.be/content/binary/Cleanup.zip">Cleanup.zip
(.36 KB)</a>. If you download the samples of the book, you’ll have the file as well.
</p>
        <p>
Cleaning your solution comes down to pasting this file in the same directory as where
the solution (*.sln) (and *.suo if present)  file are located:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CleaningaLightSwitchsolution_E640/image_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CleaningaLightSwitchsolution_E640/image_thumb_1.png" width="463" height="92" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=62bc04bf-2b1d-4a80-b3d4-3f45a116ce28" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Wrox 15 MVPs book coming closer</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/08/05/Wrox+15+MVPs+Book+Coming+Closer.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,bf714d26-dcfe-4763-a46d-37a917db762c.aspx</id>
    <published>2011-08-05T16:05:35.5196576-04:00</published>
    <updated>2011-08-05T16:05:35.5196576-04:00</updated>
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m proud to announce that the “Real World .NET 4 and C#” book on which 15 MVPs are
working together, is coming close to its release. I’ve written a chapter in this book
as well, on Silverlight 5 and MVVM development.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Wrox15MVPsbookcomingcloser_1369C/1_1118021967_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="9781118021965.pdf" border="0" alt="9781118021965.pdf" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Wrox15MVPsbookcomingcloser_1369C/1_1118021967_thumb.jpg" width="195" height="244" />
          </a>
        </p>
        <p>
          <em>Written by a group of experienced MVPs, this unparalleled book delves into the
intricate—and often daunting—world of .NET 4. Each author draws from a particular
area of expertise to provide invaluable information on using the various .NET 4, C#
4, Silverlight 4, and Visual Studio tools in the real world. The authors break down
the vast .NET 4 Framework into easily digestible portions to offer you a strong foundation
on what makes .NET such a popular and successful framework for building a wide range
of solutions. </em>
        </p>
        <ul>
          <li>
            <em>Breaks down the .NET 4 Framework into easily understandable sections </em>
          </li>
          <li>
            <em>Features more than a dozen MVPs serving as authors, each of whom focuses on a
particular area of expertise </em>
          </li>
          <li>
            <em>Covers such topics as Windows Presentation Foundation, Silverlight 4, Windows
Communication Foundation, ASP.NET performance, the entity framework, and more </em>
          </li>
          <li>
            <em>Shares C# tips and tricks and .NET architecture best practices from a team of
Microsoft MVPs</em>
          </li>
        </ul>
        <p>
          <em>Real World .NET 4 and C# is the ultimate resource for discovering and understanding
the .NET 4 Framework. </em>
        </p>
        <p>
The book can be pre-ordered already from Amazon: <a title="http://www.amazon.co.uk/Real-World-NET-Silverlight-Indispensible/dp/1118021967/ref=sr_1_1?ie=UTF8&amp;qid=1312574616&amp;sr=8-1" href="http://www.amazon.co.uk/Real-World-NET-Silverlight-Indispensible/dp/1118021967/ref=sr_1_1?ie=UTF8&amp;qid=1312574616&amp;sr=8-1">http://www.amazon.co.uk/Real-World-NET-Silverlight-Indispensible/dp/1118021967/ref=sr_1_1?ie=UTF8&amp;qid=1312574616&amp;sr=8-1</a></p>
        <p>
Meanwhile, I’m focusing on my next full Silverlight 5 book, which is due for release
end of this year or very early next year!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bf714d26-dcfe-4763-a46d-37a917db762c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My all-new ebook is published: Getting Ready for Microsoft Silverlight Exam 70-506</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/07/22/My+Allnew+Ebook+Is+Published+Getting+Ready+For+Microsoft+Silverlight+Exam+70506.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,df42e35d-aadf-472a-a7ff-b1aa1020f3f2.aspx</id>
    <published>2011-07-22T14:59:19.6302383-04:00</published>
    <updated>2011-07-22T14:59:19.6302383-04:00</updated>
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m happy to announce that a new <a href="http://www.silverlightshow.net/ebooks/silverlight_exam.aspx">ebook
of mine has been published</a>: Getting Ready for Microsoft Silverlight Exam 70-506.
</p>
        <p>
This ebook is based on SilverlightShow 7-part article series ‘<a href="http://www.silverlightshow.net/items/Getting-ready-for-the-exams-Part-1.aspx">Getting
ready for Microsoft Silverlight Exam 70-506</a>’. While the online article series
give references to many external resources, several for one topic, <strong>in this
ebook we picked the best resource covering the topic, and have included it as full
text, together with links to source code where available</strong>. Note: approximately <strong>85%
of the resources selected are available in full</strong>, the rest of the resources
are still included as links due to lack of copy permissions or inability to reach
the the respective authors. 
</p>
        <p>
          <strong>This ebook collects a total of 100+ articles in full.</strong>
        </p>
        <p>
          <strong>Download Table of Contents (<a href="http://www.silverlightshow.net/Storage/Sources/TOC_Silverlight_Exam.doc">.doc</a> / <a href="http://www.silverlightshow.net/Storage/Sources/TOC_Silverlight_Exam.docx">.docx</a>)</strong>
        </p>
        <p>
          <strong>
            <em>From the author:</em>
          </strong>Silverlight is a rapidly evolving technology.
Over a time span of 3 years, it has evolved from being a JavaScript-based platform
to a full .NET implementation. With 4 versions released and version 5 in the pipeline
at the time of writing, Silverlight has more versions than .NET! That makes it hard
for book writers such as me to keep up with new features being added. 
</p>
        <p>
It seems to me that it’s also difficult to create and manage exams about Silverlight.
For the previous versions of Silverlight, there weren’t any exams available. Silverlight
4 is the first version of which an exam is being created. It was possible to take
the beta-exam late 2010; the exam will be officially open in Q1 2011. More information
about the exam can be found here: <a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-506&amp;Locale=en-us">http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-506&amp;Locale=en-us</a></p>
        <p>
With this guide, I aim to make the preparation for the exam a bit easier. 
</p>
        <p>
          <strong>
            <p>
Goal and approach to getting ready 
</p>
            <p>
            </p>
          </strong>
        </p>
        <p>
At this point, there’s no official courseware available to study for the exam. In
any case, you should therefore be familiar already with Silverlight development. Reading
some books on Silverlight will help as well. The list below contains some links to
books available for Silverlight 4: 
</p>
        <ul>
          <li>
            <a href="http://www.silverlightshow.net/book/Silverlight-4-Unleashed.aspx">Silverlight
4 Unleashed</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/book/Silverlight-4-in-Action.aspx">Silverlight
4 In Action</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/book/Microsoft-Silverlight-4-Data-and-Services-Cookbook.aspx">Microsoft
Silverlight 4 Data and Services Cookbook</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/book/Pro-Business-Applications-with-Silverlight-3.aspx">Pro
Business Application with Silverlight 4</a>
          </li>
        </ul>
        <p>
On top of that, reading articles and blog posts will help you in passing the exam.
In this ebook, I try to create an extensive list of resources along with some explanation
on the topic at hand that contain the information you need to know. To structure this,
we’ll follow the list of topics described by Microsoft on the exam outline page (<a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-506&amp;Locale=en-us#tab2">http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-506&amp;Locale=en-us#tab2</a>): 
</p>
        <ul>
          <li>
Laying Out a User Interface (15%) 
</li>
          <li>
Enhancing the User Interface (14%) 
</li>
          <li>
Implementing Application Logic (16%) 
</li>
          <li>
Working with Data (17%) 
</li>
          <li>
Interacting with a Host Platform (11%) 
</li>
          <li>
Structuring Applications (13%) 
</li>
          <li>
Deploying Applications (13%) 
</li>
        </ul>
        <p>
(Small note: the outlined percentages total 99%, so you’ll probably get 1% for entering
your name!) 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=df42e35d-aadf-472a-a7ff-b1aa1020f3f2" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Telerik UK Tour</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/07/11/Telerik+UK+Tour.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7c2bdbe3-f3e4-48a4-93a1-c230ddefb49a.aspx</id>
    <published>2011-07-11T04:20:52.349-04:00</published>
    <updated>2011-07-11T10:12:33.034324-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, I travelled through the UK to give a total of 8 sessions for Telerik to
4 chapters of the NxtGenUg.net user groups. More specifically, I went to Hereford,
Oxford, Coventry and Cambridge. It was a pleasure being there, since we had some nice
discussions throughout the talks (which of course caused all sessions to run longer
than expected, some about 2,5-3  hours :) ). For the first time, I did everything
by train and all went well (not a single delay on the 10 trains I took in the UK.
I even had to pass through London when going from one station to another to go from
Coventry to Cambridge).
</p>
        <p>
          <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKTour_8C48/image_3.png" width="240" height="61" />
        </p>
        <p>
This tour was sponsored again by my good friends at Telerik, which help to get speakers
to user groups with the program I am in. If you have a user group yourself and want
me to come over, let me know! It’s entirely free and I can give away some nice swag
and licenses at each talk!
</p>
        <p>
Here are some pictures of last week:
</p>
        <p>
          <a href="http://www.flickr.com/photos/gillcleeren/5918028068/sizes/m/in/set-72157627024648677/">
            <img src="http://farm7.static.flickr.com/6150/5918028068_b126253a9e.jpg" width="255" height="170" />
          </a> <a href="http://www.flickr.com/photos/gillcleeren/5918027716/sizes/m/in/set-72157627024648677/"><img src="http://farm7.static.flickr.com/6135/5918027716_f498f101ea.jpg" width="255" height="170" /></a> <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKTour_8C48/WP_000217_2.jpg"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="WP_000217" border="0" alt="WP_000217" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikUKTour_8C48/WP_000217_thumb.jpg" width="257" height="194" /></a></p>
        <p>
 
</p>
        <p>
And as promised, here are all the slides and demos of all the sessions:
</p>
        <ul>
          <li>
Hereford: 
<ul><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/Databinding.zip">Databinding
in Silverlight</a></li><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/MVVM.zip">MVVM in
Silverlight and WPF</a></li></ul></li>
          <li>
Oxford: 
<ul><li><a href="http://www.snowball.be/data/presentations/TelerikUKTour/SilverlightLOB.zip">Building
a LOB application in Silverlight 4</a></li></ul></li>
          <li>
Coventry: 
<ul><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/jquery.zip">jQuery
in ASP.NET and ASP.NET MVC</a></li><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/WCFRIAServices.zip">RIA
Services in Silverlight 4</a></li></ul></li>
          <li>
Cambridge: 
<ul><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/MVVM.zip">MVVM in
Silverlight and WPF</a></li><li><a href="http://www.snowball.be/data/Presentations/TelerikUKTour/WCFRIAServices.zip">RIA
Services in Silverlight 4</a><br /></li></ul></li>
        </ul>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7c2bdbe3-f3e4-48a4-93a1-c230ddefb49a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Video of my Blend webinar online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/06/28/Video+Of+My+Blend+Webinar+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,3361ab9c-4730-4b73-822a-fd1c10e73188.aspx</id>
    <published>2011-06-28T09:27:44.8533193-04:00</published>
    <updated>2011-06-28T09:27:44.8533193-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webcasts" label="Webcasts" scheme="http://www.snowball.be/CategoryView,category,Webcasts.aspx" />
    <category term="Webinars" label="Webinars" scheme="http://www.snowball.be/CategoryView,category,Webinars.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, I did another webinar for Silverlight Show titled Expression Blend 4 for
developers. If you were unable to attend, you can view the recorded version on-demand <a href="http://www.silverlightshow.net/video/Recording-of-webinar-Blend-for-Silverlight-Developers-by-Gill-Cleeren.aspx">here</a> (it’s
free :) )
</p>
        <p>
The slides can be found <a href="http://www.silverlightshow.net/Storage/Sources/Blend_for_devs.pptx">here</a> and
the demos you can download <a href="http://www.snowball.be/data/Presentations/NDC2011/Demos.zip">here</a>.
</p>
        <p>
Enjoy!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3361ab9c-4730-4b73-822a-fd1c10e73188" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2011: the report, the slides and the pictures</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/06/27/Community+Day+2011+The+Report+The+Slides+And+The+Pictures.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7c85926e-bc18-4563-b5b7-7a29614acf32.aspx</id>
    <published>2011-06-27T07:06:36.479-04:00</published>
    <updated>2011-06-28T09:28:32.2773193-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Community Day 2011 is over (sadly)… But since we had so much fun, that isn’t a problem:
we have a great day of Belgian community at its very best! Judging from the feedback,
this was the very best edition so far, so that’s good news :)
</p>
        <p>
We had over 300 attendees seeing 32 sessions spread over 5 tracks. Most slides are
already available from <a href="http://www.communityday.be/cd/tabid/130/Default.aspx">the
agenda page</a>.
</p>
        <p>
I want to thank you all for being there. Of course, a big thank you to the team, the
sponsors and the people from BBDO!
</p>
        <p>
Here are some pictures of the event, the entire list can be seen <a href="http://www.flickr.com/photos/gillcleeren/sets/72157626912698055/">here</a>.
</p>
        <p>
          <img src="http://farm4.static.flickr.com/3209/5867422960_02357dbf85.jpg" width="267" height="179" /> <img src="http://farm4.static.flickr.com/3255/5866860725_16c2ae9abc.jpg" width="269" height="179" /></p>
        <p>
          <img src="http://farm4.static.flickr.com/3134/5866939709_d922a027b0.jpg" width="264" height="176" /> <img src="http://farm4.static.flickr.com/3199/5867533718_a47008e9a3.jpg" width="265" height="176" /></p>
        <p>
          <img src="http://farm4.static.flickr.com/3047/5866989671_41a6baa80f.jpg" width="266" height="178" /> <img src="http://farm6.static.flickr.com/5146/5867133941_023cb56d2f.jpg" width="266" height="178" /></p>
        <p>
          <img src="http://farm6.static.flickr.com/5271/5876211645_49e773cf58.jpg" width="263" height="176" /> <img src="http://farm7.static.flickr.com/6058/5867131651_b6cb116750.jpg" width="265" height="176" /></p>
        <p>
          <img src="http://farm4.static.flickr.com/3105/5866831345_da0f98319d.jpg" width="260" height="173" /> <img src="http://farm6.static.flickr.com/5104/5867367472_1abb859cf3.jpg" width="257" height="172" /></p>
        <p>
          <img src="http://farm4.static.flickr.com/3011/5866822569_6308141345.jpg" width="256" height="172" /> <img src="http://farm6.static.flickr.com/5264/5867326914_5aa76cec64.jpg" width="257" height="172" /></p>
        <p>
          <img src="http://farm4.static.flickr.com/3207/5866738327_e6cfa5defb.jpg" width="255" height="170" /> <img src="http://farm4.static.flickr.com/3161/5866680173_0628217d23.jpg" width="253" height="170" /></p>
        <p>
          <img src="http://farm6.static.flickr.com/5074/5866695957_e69beef2f9.jpg" width="250" height="168" />
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7c85926e-bc18-4563-b5b7-7a29614acf32" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Join my Expression Blend webinar on Thursday!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/06/15/Join+My+Expression+Blend+Webinar+On+Thursday.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,478c16d1-c9be-444e-b411-4e7990f01af8.aspx</id>
    <published>2011-06-15T03:01:56.7510776-04:00</published>
    <updated>2011-06-15T03:01:56.7510776-04:00</updated>
    <category term="Blend" label="Blend" scheme="http://www.snowball.be/CategoryView,category,Blend.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webinars" label="Webinars" scheme="http://www.snowball.be/CategoryView,category,Webinars.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Tomorrow, Thursday June 16th, I’ll be doing another webinar for SilverlightShow. I
think that this one if the 7th webinar I’m doing for them!
</p>
        <p>
This one is totally devoted to Expression Blend: Expression Blend for developers.
That means (sadly) that I won’t be doing any drawing or graphics-related stuff! I’m
going to talk about how I think XAML developers can be more productive with Expression
Blend instead of only using Visual Studio for their work. 
</p>
        <p>
This is the agenda:
</p>
        <ul>
          <li>
5-minute guided tour of Blend 
</li>
          <li>
Great work starts with a sketch: SketchFlow 
</li>
          <li>
Push the button: sample data generation 
</li>
          <li>
Binding with Blend: how to use data-binding 
</li>
          <li>
Customization bonanza 
<ul><li>
Styling 
</li><li>
Resources and resource dictionaries 
</li><li>
Templates 
</li><li>
A custom control 
</li></ul></li>
          <li>
Blend behaving badly: behaviors 
</li>
          <li>
Animations and other moving things 
</li>
          <li>
Blend welcomes WP7 
</li>
          <li>
The Blend-bag-of-tricks</li>
        </ul>
        <p>
The outline of the webinar is <a href="http://www.silverlightshow.net/news/Webinar-Blend-for-Silverlight-Developers.aspx">here</a> and
of course you can <a href="https://www1.gotomeeting.com/register/434252608">subscribe
for free</a>. The webinar takes about 75 minutes.
</p>
        <p>
A nice extra is that my publisher (Packt Publishing) is giving away <a href="http://www.silverlightshow.net/news/Learn-Blend-for-Silverlight-and-win-an-eBook-in-tomorrow-s-free-webinar.aspx">3
copies of the LITE edition of the book</a> I wrote together with Kevin Dockx. So by
simply attending, you could win a book!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/JoinmyExpressionBlendwebinaronThursday_7F02/CookBookLITE_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="CookBookLITE" border="0" alt="CookBookLITE" src="http://www.snowball.be/content/binary/WindowsLiveWriter/JoinmyExpressionBlendwebinaronThursday_7F02/CookBookLITE_thumb.png" width="167" height="213" />
          </a>I
hope to see you online tomorrow! 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=478c16d1-c9be-444e-b411-4e7990f01af8" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for my NDC2011 talks</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/06/12/Slides+And+Demos+For+My+NDC2011+Talks.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,84fb12d3-3aa4-4d0b-addc-4611c631668a.aspx</id>
    <published>2011-06-12T06:57:44.8206372-04:00</published>
    <updated>2011-06-12T06:57:44.8206372-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I enjoyed a lot being at NDC 2011 (Oslo, Norway) again for the second year. I gave
two sessions, one on LightSwitch and a second one on Expression Blend. I hope you
enjoyed them. If you have any questions, please don’t hesitate to contact me!
</p>
        <p>
Here are the downloads as promised<br /><br />
Switch on the LightSwitch: <a href="http://www.snowball.be/ct.ashx?id=03f47527-f275-4a88-91e4-450d44031203&amp;url=http%3a%2f%2fcid-bd64f22e01fad982.office.live.com%2fself.aspx%2fPublic%2fLightSwitch%2520-%2520Gill%2520Cleeren%2520-%2520Web.pptx">Slides</a> – <a href="http://www.snowball.be/ct.ashx?id=03f47527-f275-4a88-91e4-450d44031203&amp;url=http%3a%2f%2fcid-bd64f22e01fad982.office.live.com%2fself.aspx%2fPublic%2fLightSwitch%2520demos.zip">Demos</a><br /><br />
Expression Blend 4 for developers: <a href="http://www.snowball.be/data/presentations/ndc2011/ExpressionBlend4-Web-GillCleeren.pptx">Slides</a> - <a href="http://www.snowball.be/data/presentations/ndc2011/Demos.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=84fb12d3-3aa4-4d0b-addc-4611c631668a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>All Belgian TechDays videos are now available for free</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/05/26/All+Belgian+TechDays+Videos+Are+Now+Available+For+Free.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c876ed50-a83c-43f2-bf4b-e9211d5bb3ed.aspx</id>
    <published>2011-05-26T11:17:08.8833737-04:00</published>
    <updated>2011-05-26T11:17:08.8833737-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The passed TechDays Belgium were another great event, showing that Belgians really
know how to organize an event. If you couldn’t attend, you missed a lot to be honest. 
</p>
        <p>
 <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="570x120_techdays_watch" border="0" alt="570x120_techdays_watch" src="http://www.snowball.be/content/binary/WindowsLiveWriter/AllBelgianTechDaysvideosarenowavailablef_F313/570x120_techdays_watch_3.jpg" width="550" height="120" /></p>
        <p>
But, fear not my dear reader, as all sessions have been recorded and you can see them
for free on Channel9: <a title="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium" href="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium">http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium</a> 
</p>
        <p>
My personal favorites:
</p>
        <ul>
          <li>
            <a href="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium/KEY01">Scott
Hanselman’s keynote</a>
          </li>
          <li>
            <a href="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium/TD004">Jeff
Prosise on Silverlight 5</a>
          </li>
          <li>
            <a href="http://channel9.msdn.com/Events/TechDays/TechDays-2011-Belgium/TD005">And
my absolute favorite… LightSwitch :)</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c876ed50-a83c-43f2-bf4b-e9211d5bb3ed" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2011 registrations are open!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/05/24/Community+Day+2011+Registrations+Are+Open.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,253d43f7-5e78-4634-a178-138cc679318b.aspx</id>
    <published>2011-05-24T04:41:28.4088689-04:00</published>
    <updated>2011-05-24T04:41:28.4088689-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I haven’t had the time to blog about it, but yes, you can register for Community Day
2011 since a few days. Registrations are going fast, so the best advice I can give
you is to register quickly!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2011registrationsareopen_9653/logo_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MIC3073_logo2011jubilee_vecto" border="0" alt="MIC3073_logo2011jubilee_vecto" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2011registrationsareopen_9653/logo_thumb.png" width="209" height="70" />
          </a>
        </p>
        <p>
The event is still entirely free (including food) and we are again in Utopolis Mechelen.
The venue is completely renovated, giving us a lot more space.
</p>
        <p>
This year, we are celebrating our 5th edition. For this occasion, we are inviting
2 Dutch user groups (DotNed and Sixin) who will give sessions at the event as well.
We are also doing 30 sessions instead of 24, so you’ll have more choice than ever
to fill your free day of learning.
</p>
        <p>
Convinced? I bet you are! Go here for <a href="http://www.communityday.be/cd/tabid/58/Default.aspx">registration</a>,
check out <a href="http://www.communityday.be/cd/tabid/131/Default.aspx">our sponsors</a> or
take a look at the <a href="http://www.communityday.be/cd/tabid/130/Default.aspx">agenda</a>!
</p>
        <p>
I will see you on June 23rd!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=253d43f7-5e78-4634-a178-138cc679318b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Lite edition of my book available</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/05/16/Lite+Edition+Of+My+Book+Available.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4d7ec8b7-31c2-4e32-97a0-766190554b8d.aspx</id>
    <published>2011-05-16T17:28:42.7258803-04:00</published>
    <updated>2011-05-16T17:29:21.1486803-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <category term="Book review" label="Book review" scheme="http://www.snowball.be/CategoryView,category,BookReview.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Suppose you’re willing to start learning Silverlight enterprise development and you
want a good book to start. There are quite a few really good books on the market covering
Silverlight 4. If you’re interested mostly in getting to know how to work with data,
services and other enterprise-related topics, my <a href="http://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book">own
book</a> is a really good start (here you can read some reviews as well).
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Liteeditionofmybookavailable_14A27/lite%20book_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="lite book" border="0" alt="lite book" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Liteeditionofmybookavailable_14A27/lite%20book_thumb.jpg" width="198" height="244" />
          </a>
        </p>
        <p>
If you’re not really sure on whether my book will help you, you can purchase a lite
(light) version of it now for a mere $9.95. That’s right: you get a few relevant chapters
without spending a lot of cash. You can read more about it <a href="http://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook-lite/book">here</a>.
</p>
        <p>
Here’s what you get:
</p>
        <ul>
          <li>
Design and develop rich data-driven business applications in Silverlight 
</li>
          <li>
Rapidly interact with and handle multiple sources of data and services within Silverlight
business applications 
</li>
          <li>
Understand sophisticated techniques to work with data in your Silverlight business
applications, including displaying data in Silverlight applications, binding data
to Silverlight controls, getting data from services into Silverlight applications
and much more! 
</li>
          <li>
Packed with practical, hands-on cookbook recipes, illustrating the techniques to solve
particular data problems effectively within your Silverlight business applications</li>
          <li>
eBook available as PDF download</li>
        </ul>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4d7ec8b7-31c2-4e32-97a0-766190554b8d" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My DevDays11 session on jQuery is online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/05/16/My+DevDays11+Session+On+JQuery+Is+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7c252bf6-573d-4af2-8e07-b43132f4d173.aspx</id>
    <published>2011-05-16T17:19:22.4830803-04:00</published>
    <updated>2011-05-16T17:19:22.4830803-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Slide decks" label="Slide decks" scheme="http://www.snowball.be/CategoryView,category,SlideDecks.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just noticed that all DevDays 11 Netherlands sessions are available for online viewing.
You can see them <a href="http://channel9.msdn.com/Events/DevDays/DevDays-2011-Netherlands">here</a>.
My talk on jQuery can be found <a href="http://channel9.msdn.com/Events/DevDays/DevDays-2011-Netherlands/Devdays004#comments">here</a>.
Looking at the comments, I think attendees (around 350 I guess) liked what they saw
:)<br /><br />
All slides and demos are available <a href="http://www.snowball.be/2011/04/28/Slides+And+Demos+From+My+JQuery+Talk+At+DevDays+Netherlands+2011.aspx">here</a> in
case you want to try out what I’ve been showing in the talk!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7c252bf6-573d-4af2-8e07-b43132f4d173" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Ordina Stand out from the crowd event on May 26th</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/05/05/Ordina+Stand+Out+From+The+Crowd+Event+On+May+26th.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,29871baf-6de0-4f63-b758-19789503717e.aspx</id>
    <published>2011-05-05T08:43:32.8666604-04:00</published>
    <updated>2011-05-05T08:43:32.8666604-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On May 26th, Ordina is organizing a free technology event. Ordina’s technology specialists
will give <strong>21 sessions of 30 minutes</strong>, spread over 5 tracks. The event
is <strong>free</strong> for everyone to join, registration is required. You can register
here: <a href="http://www.ordina.be/differentiate"><strong>www.ordina.be/differentiate</strong></a>.
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/OrdinaStandoutfromthecrowdeventonMay26th_CF11/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/OrdinaStandoutfromthecrowdeventonMay26th_CF11/image_thumb.png" width="181" height="155" />
          </a>
        </p>
        <p>
We will have the following sessions for you to attend:
</p>
        <p>
          <strong>Agenda: Stand out from the crowd with Microsoft technology on May 26, 6 pm</strong>
          <br />
30-minute sessions – the choice is yours<br /><em>.Net<br /></em>    Visual Studio LightSwitch<br />
    Building a Windows Phone7 application: lessons learnt<br />
    C#5 Async<br /><em>SharePoint</em><br />
    Automated scripted deployment of SharePoint<br />
    SharePoint 2010: architectural overview<br />
    Developing against SharePoint 2010 lists<br /><em>SQL</em><br />
    Where .Net meets SQL Server: SQL CLR<br />
    Extending to multilingual reporting<br />
    Using geo data within Report Builder 3.0 
<br /><em>Application Lifecycle Management      
<br /></em>    Automate your deployment cycle with TFS Build 2010 and Workflow
4<br />
    Delivering quality software with TFS 2010<br />
    Team Explorer Everywhere: TFS and Java, better together<br /><em>Azure</em><br />
    Reporting services in the cloud<br />
    Moving a legal application in the cloud<br />
    Windows Phone7 and the cloud<br /><em>Infrastructure<br /></em>    Unified Communications: Lync<br />
    Unified Communications: Office 365<br />
    Hyper-V<br /><em>Enterprise Portfolio Management</em><br />
    Demand management using workflow in Project Server 2010<br />
    Bridging the project and work management gap
</p>
        <p>
Interested? <a href="www.ordina.be/differentiate">Join us</a>! <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=29871baf-6de0-4f63-b758-19789503717e" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for my WebMatrix talk at GeekNight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/29/Slides+And+Demos+For+My+WebMatrix+Talk+At+GeekNight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,09998493-b44e-4c47-9459-db86402372ac.aspx</id>
    <published>2011-04-29T03:05:29.816-04:00</published>
    <updated>2011-05-03T04:36:32.5811404-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
To round things up, here are the slides and demos of my WebMatrix talk at GeekNight
(DevDays) in The Netherlands.
</p>
        <p>
          <a href="http://www.snowball.be/data/Presentations/GeekNight2011/WebmatrixSlidesGeekNight2011GillCleeren.zip">Slides</a>
          <br />
          <a href="http://www.snowball.be/data/Presentations/GeekNight2011/WebMatrixDemosGeekNight2011GillCleeren.zip">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=09998493-b44e-4c47-9459-db86402372ac" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos from my jQuery talk at DevDays Netherlands 2011</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/28/Slides+And+Demos+From+My+JQuery+Talk+At+DevDays+Netherlands+2011.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c6efe970-e6d7-44e8-a816-21d68389ef99.aspx</id>
    <published>2011-04-28T10:03:25.5000411-04:00</published>
    <updated>2011-04-28T10:03:25.5000411-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
And here are the slides and demos of my jQuery talk at DevDays Netherlands 2011.
</p>
        <p>
          <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/jQuery%20Slides%20Devdays%202011.zip">Slides</a>
          <br />
          <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/jQuery%20Demos%20Devdays%202011.zip">Demos</a>
        </p>
        <p>
I hope you enjoyed the talk!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c6efe970-e6d7-44e8-a816-21d68389ef99" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos of my TechDays 11 Belgium LightSwitch talk</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/26/Slides+And+Demos+Of+My+TechDays+11+Belgium+LightSwitch+Talk.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,03f47527-f275-4a88-91e4-450d44031203.aspx</id>
    <published>2011-04-26T17:09:37.9586379-04:00</published>
    <updated>2011-04-26T17:09:37.9586379-04:00</updated>
    <category term="LightSwitch" label="LightSwitch" scheme="http://www.snowball.be/CategoryView,category,LightSwitch.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As promised, here are the slides and demos of my LightSwitch presentation at TechDays
11 Belgium. Thanks for attending (it was a full room of about 500 people!!)
</p>
        <p>
          <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/LightSwitch%20-%20Gill%20Cleeren%20-%20Web.pptx">Slides</a>
          <br />
          <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/LightSwitch%20demos.zip">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=03f47527-f275-4a88-91e4-450d44031203" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2011 is coming closer, save the date!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/21/Community+Day+2011+Is+Coming+Closer+Save+The+Date.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,9bc1aa94-39f0-4248-b700-e9a6a7636d2e.aspx</id>
    <published>2011-04-21T06:54:43.2470036-04:00</published>
    <updated>2011-04-21T06:54:43.2470036-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the great weather we’re having, it’s even more obvious that summer is approaching.
And we all know what that means, don’t we?
</p>
        <p>
Indeed, <strong>Community Day 2011 is coming closer!</strong> This <strong>fifth edition</strong> will
be the biggest one we ever did, with more sessions, the best food, great networking
opportunities and the best speakers the Belgian (and who knows…) has to offer.
</p>
        <p>
We’ve had a tremendous response from sponsors already and we’re proud to announce
the following companies as our sponsors for this year’s edition:
</p>
        <p>
          <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/avepoint.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/adamlogo.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/cap.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/combell.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/devoteam.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/hp.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/ictinus.png" /></p>
        <p>
          <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/microsoft.png" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/nrb.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/ordina.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/realdolmen.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/sdworx.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/sogeti.jpg" /> <img alt="" src="http://www.communityday.be/cd/Portals/0/smalllogos/telerik.png" /></p>
        <p>
Of course, Community Day 2011 is again a joint event of 13 Belgian user groups. The
following user groups are part of this year’s edition: 
</p>
        <li>
AZUG 
</li>
        <li>
BESUG 
</li>
        <li>
BIWUG 
</li>
        <li>
IT-Talks 
</li>
        <li>
Pro-Exchange 
</li>
        <li>
SCUG 
</li>
        <li>
SQLUG 
</li>
        <li>
ACCB.net/VBIB 
</li>
        <li>
Visug 
</li>
        <li>
WinSec 
</li>
        <li>
XNA-BUG 
</li>
        <li>
DotNetHub 
</li>
        <li>
MyTIC</li>
        <p>
We’re currently working hard on the agenda, which will be online in 2-3 weeks. At
that point, you’ll be able to register as well. Just like previous editions, Community
Day 2011 is still a <strong>free event.</strong></p>
        <p>
At this point, I suggest you add the event to your calendar by opening this <a href="http://www.communityday.be/cd/data/Community%20Day%202011.ics"><strong>*.ics
file</strong></a><strong>.</strong></p>
        <p>
To help spread the word about the event, use the following <strong>blog bling</strong>!
Thanks for helping!
</p>
        <p>
          <img alt="" src="http://www.communityday.be/CD/data/Community-Day-Blog-Bling.png" /> <img alt="" src="http://www.communityday.be/CD/data/blog-bling-speaker.png" /></p>
        <p>
          <img alt="" src="http://www.communityday.be/CD/data/blog-bling-attending.png" />
          <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=9bc1aa94-39f0-4248-b700-e9a6a7636d2e" />
          <br />
          <hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Telerik UK Tour</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/18/Telerik+UK+Tour.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,cc7d935f-5826-44f9-aec5-19b29df2dfb4.aspx</id>
    <published>2011-04-18T08:21:52.1609972-04:00</published>
    <updated>2011-04-18T08:21:52.1609972-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As part of the Telerik Insider program, I’ll be touring in the UK this summer. More
specifically, I’ll be speaking in Oxford, Hereford, Cambridge and Coventry. On each
event, attendees can win a full Telerik license!
</p>
        <p>
You can register here for the events:
</p>
        <ul>
          <li>
Hereford (July 4th 2011)<br /><a title="http://www.nxtgenug.net/ViewEvent.aspx?EventID=404" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=404">http://www.nxtgenug.net/ViewEvent.aspx?EventID=404</a></li>
          <li>
Oxford (July 5th 2011)<br /><a title="http://www.nxtgenug.net/ViewEvent.aspx?EventID=405" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=405">http://www.nxtgenug.net/ViewEvent.aspx?EventID=405</a></li>
          <li>
Coventry (July 6th 2011)<br /><a title="http://www.nxtgenug.net/ViewEvent.aspx?EventID=406" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=406">http://www.nxtgenug.net/ViewEvent.aspx?EventID=406</a></li>
          <li>
Cambridge (July 7th 2011)<br /><a title="http://www.nxtgenug.net/ViewEvent.aspx?EventID=407" href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=407">http://www.nxtgenug.net/ViewEvent.aspx?EventID=407</a></li>
        </ul>
        <p>
I hope to see a lot of you in the UK! (and while you’re at it, reserve me some nice
weather!)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=cc7d935f-5826-44f9-aec5-19b29df2dfb4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>The Telerik insider program is official (and I’m in it)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/18/The+Telerik+Insider+Program+Is+Official+And+Im+In+It.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,68491607-20be-4659-a1d4-42641cf2abb3.aspx</id>
    <published>2011-04-18T08:16:21.5813972-04:00</published>
    <updated>2011-04-18T08:16:21.5813972-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
About 2 weeks ago, the Telerik insider program has been made official (I only found
time to blog about it since we bought a house in that week, causing a lot of extra
stress and work :) ). I’m very happy that the word on the program is now official
AND that I was one of the first to be part of this fantastic initiative. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TheTelerikinsiderprogramisofficialandImi_C8B4/Telerik_Insiders_180x87_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Telerik_Insiders_180x87" border="0" alt="Telerik_Insiders_180x87" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TheTelerikinsiderprogramisofficialandImi_C8B4/Telerik_Insiders_180x87_thumb.jpg" width="184" height="91" />
          </a>
        </p>
        <p>
Let me start by explaining what the program is all about: The Insiders Program, a
speaker’s bureau for the community run by Telerik, is comprised of 14 (thus far) passionate
and influential speakers conducting a variety of sessions at community events and
user groups. Check out their <a href="http://www.telerik.com/community/insiders.aspx">profiles
and abstracts here </a>and our <a href="http://www.telerik.com/community/insiders/insiders-faq.aspx">FAQ </a>page
for detailed information. The full explanation can be found here: <a title="http://blogs.telerik.com/blogs/posts/11-04-04/telerik_insiders_are_out.aspx" href="http://blogs.telerik.com/blogs/posts/11-04-04/telerik_insiders_are_out.aspx">http://blogs.telerik.com/blogs/posts/11-04-04/telerik_insiders_are_out.aspx</a> . 
</p>
        <p>
The official press release can be found here: <a href="http://www.businesswire.com/news/home/20110404006464/en/Telerik-Emphasizes-Commitment-Developer-Community-Globally-Expanded">Telerik
Emphasizes Commitment to Developer Community with Globally Expanded Insiders Program.</a> Some
interesting quotes:<br /><em><br />
The Telerik Insiders Program delivers added value by providing entrée to influential
speakers willing to share their .NET </em><em>knowledge, insight, and expertise,”
said Svetozar Georgiev, CEO of Telerik.</em> 
</p>
        <p>
          <em>“I cannot express enough how much of a benefactor Telerik has been to our community
throughout the last several years. They support user groups and community events by
providing much-needed resources and help, but also go that extra step by providing
top-notch, quality speakers who are passionate about training and knowledge-sharing,”
says Pensacola User Group leader, Karla Landrum.</em>
        </p>
        <p>
          <em>“User groups and regional events are really the heart of the developer community
– they provide unique opportunities for peer-to-peer engagement, and facilitate sharing
of real-world development best practices,” said Emily Parker, Community Program Manager
at Telerik.</em>
        </p>
        <p>
I was “enrolled” in the program December 2009 and have done quite a few speaker engagements
since then. I went to VBUG UK, visited user groups all over Sweden and the Netherlands…
This year, I’ll be visiting the UK (5 user groups) and Ireland (5 user groups) in
the coming months.
</p>
        <p>
          <strong>What’s in it for you</strong>
        </p>
        <p>
The good news is that you can benefit from this program as well. If you have a <strong>user
group </strong>(just about anywhere), you can contact us (<a title="insidersprogram@telerik.com" href="mailto:insidersprogram@telerik.com">insidersprogram@telerik.com</a>)
to have a Telerik Insider at your next event. <strong>All for free. </strong>Just
send a mail and we can discuss things.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=68491607-20be-4659-a1d4-42641cf2abb3" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio LightSwitch webinar this week!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/18/Visual+Studio+LightSwitch+Webinar+This+Week.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,5460eece-d251-45e6-a8ea-ead63df8f6fd.aspx</id>
    <published>2011-04-18T03:26:51.9058449-04:00</published>
    <updated>2011-04-18T03:26:51.9058449-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="LightSwitch" label="LightSwitch" scheme="http://www.snowball.be/CategoryView,category,LightSwitch.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This Wednesday, April 20th, I’ll be doing a webinar on LightSwitch on SilverlightShow!
</p>
        <p>
          <em>LightSwitch is a new part of the Visual Studio family and makes it possible to
more easily create professional-quality business applications for the desktop, the
web, and the cloud. <strong>The big question of course: Is LightSwitch something for
you?</strong></em>
        </p>
        <p>
          <em>In this webinar, you’ll get the answer! </em>
          <a href="http://www.snowball.be/">
            <em>Silverlight
MVP Gill Cleeren</em>
          </a>
          <em> will show how you can <strong>build professional LOB
applications quickly using LightSwitch</strong>. We will cover <strong>why you should
look at LightSwitch, binding to data, and building out the user interface</strong>.
LightSwitch is however more than just some predefined screens: developers will love
it for its <strong>extensibility</strong>, which we’ll cover deeply.</em>
        </p>
        <p>
As always, the webinar is free but registration is required. You can register here: <a title="http://www.silverlightshow.net/news/Upcoming-SilverlightShow-Webinar-Building-LOB-Applications-with-LightSwitch.aspx" href="http://www.silverlightshow.net/news/Upcoming-SilverlightShow-Webinar-Building-LOB-Applications-with-LightSwitch.aspx">http://www.silverlightshow.net/news/Upcoming-SilverlightShow-Webinar-Building-LOB-Applications-with-LightSwitch.aspx</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=5460eece-d251-45e6-a8ea-ead63df8f6fd" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Winner of Telerik license from Techdays Sweden</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/04/01/Winner+Of+Telerik+License+From+Techdays+Sweden.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,1921187c-0b3c-43ec-aa11-14caa7a0a461.aspx</id>
    <published>2011-04-01T17:53:13.0595841-04:00</published>
    <updated>2011-04-01T17:53:13.0595841-04:00</updated>
    <category term="TechDays" label="TechDays" scheme="http://www.snowball.be/CategoryView,category,TechDays.aspx" />
    <category term="telerik" label="telerik" scheme="http://www.snowball.be/CategoryView,category,telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
At TechDays Sweden, I was able to give away a Telerik license during my talk. The
lucky winner gets a full Telerik Ultimate license, worth $1.995! All thanks to the
people at Telerik.
</p>
        <p>
And the winner is… <a href="http://www.peterf.se/">Peter Forss</a>! Congratulations!!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1921187c-0b3c-43ec-aa11-14caa7a0a461" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos from my Windows Phone 7 session at TechDays Sweden</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/29/Slides+And+Demos+From+My+Windows+Phone+7+Session+At+TechDays+Sweden.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,e3a0d1e0-6d2a-467b-a475-86152f5134b4.aspx</id>
    <published>2011-03-29T17:42:31.7538394-04:00</published>
    <updated>2011-03-29T17:42:31.7538394-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="TechDays" label="TechDays" scheme="http://www.snowball.be/CategoryView,category,TechDays.aspx" />
    <category term="Windows Phone 7" label="Windows Phone 7" scheme="http://www.snowball.be/CategoryView,category,WindowsPhone7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
And as promised, here are the slides and demos for the Windows Phone 7 presentation.
</p>
        <p>
Slides: <a href="http://cid-bd64f22e01fad982.office.live.com/view.aspx/Public/Building%20a%20Windows%20Phone%207%20app%20from%20start%20with%20template.pptx">http://cid-bd64f22e01fad982.office.live.com/view.aspx/Public/Building%20a%20Windows%20Phone%207%20app%20from%20start%20with%20template.pptx</a><br />
Demos: <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/WP7%20End%20to%20end.zip">http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/WP7%20End%20to%20end.zip</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=e3a0d1e0-6d2a-467b-a475-86152f5134b4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos from my jQuery talk at TechDays Sweden</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/29/Slides+And+Demos+From+My+JQuery+Talk+At+TechDays+Sweden.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a237c31d-68fc-4a2c-8490-8cc12f02e4bb.aspx</id>
    <published>2011-03-29T10:49:22.9330424-04:00</published>
    <updated>2011-03-29T10:49:22.9330424-04:00</updated>
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="ASP.net AJAX" label="ASP.net AJAX" scheme="http://www.snowball.be/CategoryView,category,ASPnetAJAX.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <category term="TechDays" label="TechDays" scheme="http://www.snowball.be/CategoryView,category,TechDays.aspx" />
    <category term="jQuery" label="jQuery" scheme="http://www.snowball.be/CategoryView,category,jQuery.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just finished my first talk at TechDays Sweden 2011 on jQuery. As promised, you
can find the slides and demos here.
</p>
        <p>
I hope you enjoyed the session (sadly not everyone could get in the room) although
it was extremely hot in the room. If you have any comments/questions, please send
them to me.
</p>
        <p>
Slides: <a href="http://cid-bd64f22e01fad982.office.live.com/view.aspx/Public/jQuery.pptx">http://cid-bd64f22e01fad982.office.live.com/view.aspx/Public/jQuery.pptx</a><br />
Demos: <a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/jQueryDemos.zip">http://cid-bd64f22e01fad982.office.live.com/self.aspx/Public/jQueryDemos.zip</a> 
</p>
        <p>
Enjoy!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a237c31d-68fc-4a2c-8490-8cc12f02e4bb" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Upcoming UK Telerik Tour</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/29/Upcoming+UK+Telerik+Tour.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,48a72812-c6d9-4945-b79b-c6d067bd2148.aspx</id>
    <published>2011-03-29T07:15:20.4358424-04:00</published>
    <updated>2011-03-29T07:15:20.4358424-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Telerik" label="Telerik" scheme="http://www.snowball.be/CategoryView,category,Telerik.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
News update for all UK .NET/Silverlight/Windows Phone 7 developers: I'll be touring
the UK in the summer, giving quite a few sessions. This new tour is again sponsored
by Telerik, meaning that attendees can win licenses of Telerik!
</p>
        <p>
The following cities are currently on my schedule:
</p>
        <p>
Hereford - 4th July<br /><a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=404">http://www.nxtgenug.net/ViewEvent.aspx?EventID=404</a><br />
 <br />
Oxford - 5th July<br /><a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=405">http://www.nxtgenug.net/ViewEvent.aspx?EventID=405</a><br />
 <br />
Coventry - 6th July<br /><a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=406">http://www.nxtgenug.net/ViewEvent.aspx?EventID=406</a><br />
 <br />
Cambridge - 7th July<br /><a href="http://www.nxtgenug.net/ViewEvent.aspx?EventID=407">http://www.nxtgenug.net/ViewEvent.aspx?EventID=407</a><br />
 <br />
The exact content will be announced soon. Hope to meet many of you at one of these
events!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=48a72812-c6d9-4945-b79b-c6d067bd2148" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>A great way to start WP7 development</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/29/A+Great+Way+To+Start+WP7+Development.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,8a249e53-9d45-4a9f-9d80-816e61c0d861.aspx</id>
    <published>2011-03-29T07:12:09.6634424-04:00</published>
    <updated>2011-03-29T07:12:09.6634424-04:00</updated>
    <category term="Windows Phone 7" label="Windows Phone 7" scheme="http://www.snowball.be/CategoryView,category,WindowsPhone7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Have you been willing to start WP7 development but haven't had the time? Well, maybe
this will make you creating some spare time!
</p>
        <p>
Microsoft just took the wraps of a new challenge for WP7 development called WP7 Challenge.
More can be found on it via <a href="http://wp7challenge.com/">http://wp7challenge.com/</a>. 
</p>
        <p>
Basically, it's a contest in which you build an app and if it's selected as the winner,
you as the developer can go to WPC 2011 for free. Not a bad deal just to build a Windows
Phone application :) All apps should be entered before June 6th 2011.
</p>
        <p>
May the best app win!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8a249e53-9d45-4a9f-9d80-816e61c0d861" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Learn more about Silverlight and Azure</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/29/Learn+More+About+Silverlight+And+Azure.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4aa1017f-a8c9-4fa3-a652-c348a5992fa8.aspx</id>
    <published>2011-03-29T07:05:26.9182424-04:00</published>
    <updated>2011-03-29T07:05:26.9182424-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webcasts" label="Webcasts" scheme="http://www.snowball.be/CategoryView,category,Webcasts.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="html">&lt;p&gt;
Last week, I did a webinar where I showed quite a few scenarios on where Silverlight
and Windows Azure can be a very powerful combination. The webinar can be seen on-demand
for free via &lt;a href="http://www.silverlightshow.net/shows/Recording-of-webinar-Switching-on-the-Cloud-for-Silverlight-by-Gill-Cleeren.aspx"&gt;http://www.silverlightshow.net/shows/Recording-of-webinar-Switching-on-the-Cloud-for-Silverlight-by-Gill-Cleeren.aspx&lt;/a&gt;.
In this webinar, I covered the following items:
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE"&gt;&lt;span style="mso-list: Ignore"&gt;1.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Parts
of Windows Azure&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;span style="mso-list: Ignore"&gt;2.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE; mso-ansi-language: EN-US" lang=EN-US&gt;Why
does a Silverlight developer need to care?&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE"&gt;&lt;span style="mso-list: Ignore"&gt;3.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Developing
for Windows Azure&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Required
tools&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Emulators
(“local cloud”)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Azure
Portal&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE; mso-ansi-language: EN-US" lang=EN-US&gt;&lt;span style="mso-list: Ignore"&gt;4.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE; mso-ansi-language: EN-US" lang=EN-US&gt;Moving
Silverlight applications to the cloud&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Database
only&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;WCF&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;REST&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Entire
Silverlight applications&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;RIA
Services&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-ansi-language: EN-US; mso-bidi-font-size: 10.5pt" lang=EN-US&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE; mso-ansi-language: EN-US" lang=EN-US&gt;Azure
as intermediate layer for Twitter&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE"&gt;&lt;span style="mso-list: Ignore"&gt;5.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Using
blob storage&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Silverlight/Azure
video player&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 73.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: Arial; mso-fareast-language: NL-BE"&gt;&lt;span style="mso-list: Ignore"&gt;6.&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Windows
Phone and Azure&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;Accessing
services in the cloud&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p style="LINE-HEIGHT: 15pt; TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 10pt 109.5pt; BACKGROUND: white; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt" class=MsoNormal&gt;
&lt;span style="FONT-FAMILY: 'Courier New'; COLOR: #535353; FONT-SIZE: 10pt; mso-fareast-font-family: 'Courier New'; mso-fareast-language: NL-BE; mso-bidi-font-size: 10.5pt"&gt;&lt;span style="mso-list: Ignore"&gt;o&lt;span style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: 'Arial','sans-serif'; COLOR: #535353; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: NL-BE"&gt;WP7
Push Notification services 
&lt;o:p&gt;&lt;/o:p&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Also, I started writing some articles on this topic as well. The first one can be
found here: &lt;a href="http://www.silverlightshow.net/items/Silverlight-in-the-Azure-cloud-Part-1.aspx"&gt;http://www.silverlightshow.net/items/Silverlight-in-the-Azure-cloud-Part-1.aspx&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The next and last part will be published soon.
&lt;/p&gt;
&lt;p&gt;
Hope you like them and learn something from both of these resources.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4aa1017f-a8c9-4fa3-a652-c348a5992fa8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </content>
  </entry>
  <entry>
    <title>Upcoming sessions all over Europe</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/25/Upcoming+Sessions+All+Over+Europe.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,998b4507-b5f9-44f9-9973-9c903af588f4.aspx</id>
    <published>2011-03-25T03:30:43.9779225-04:00</published>
    <updated>2011-03-25T03:30:43.9779225-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the coming months, I’ll be travelling through Europe and doing sessions in quite
a few locations. Here’s when and where you can catch me.
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="698">
          <tbody>
            <tr>
              <td valign="top" width="150">
Event</td>
              <td valign="top" width="150">
Date</td>
              <td valign="top" width="150">
Location</td>
              <td valign="top" width="246">
Sessions</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.techdays.se/">TechDays Sweden</a>
              </td>
              <td valign="top" width="150">
March 29-30</td>
              <td valign="top" width="150">
Orebrö, Sweden</td>
              <td valign="top" width="246">
                <ul>
                  <li>
What you, as an ASP.NET developer, need to know about jQuery</li>
                  <li>
Building a Windows Phone 7 application in 60 minutes</li>
                </ul>
              </td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.microsoft.com/switzerland/msdn/fr/techdays/">TechDays Switzerland</a>
              </td>
              <td valign="top" width="150">
April 5-6</td>
              <td valign="top" width="150">
Zürich, Switzerland</td>
              <td valign="top" width="246">
To jQuery or to Ajax Client Library, that is the question</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.techdays.be/">TechDays Belgium</a>
              </td>
              <td valign="top" width="150">
April 26-28</td>
              <td valign="top" width="150">
Antwerp, Belgium</td>
              <td valign="top" width="246">
Switch on the LightSwitch</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.techdays.nl">TechDays Netherlands</a>
              </td>
              <td valign="top" width="150">
April 27-29</td>
              <td valign="top" width="150">
Den Haag, The Netherlands</td>
              <td valign="top" width="246">
                <p>
What you, as an ASP.NET developer, need to know about jQuery 
</p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.techdays.nl/GeekNight">GeekNight at TechDays</a>
              </td>
              <td valign="top" width="150">
April 28</td>
              <td valign="top" width="150">
Den Haag, The Netherlands</td>
              <td valign="top" width="246">
Introduction to the WebMatrix</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://edu.ordina.be">Windows Phone 7 Tour Norway</a>
              </td>
              <td valign="top" width="150">
May 4-6</td>
              <td valign="top" width="150">
Oslo, Norway</td>
              <td valign="top" width="246">
3 day intensive training on Windows Phone 7</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://edu.ordina.be/">Windows Phone 7 Tour Belgium</a>
              </td>
              <td valign="top" width="150">
May 11-13</td>
              <td valign="top" width="150">
Brussels, Belgium</td>
              <td valign="top" width="246">
3 day intensive training on Windows Phone 7</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://edu.ordina.be/">Silverlight Tour Belgium</a>
              </td>
              <td valign="top" width="150">
May 16-20</td>
              <td valign="top" width="150">
Brussels, Belgium</td>
              <td valign="top" width="246">
5 day intensive training on Silverlight 4</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://uktechdays.cloudapp.net/home.aspx">TechDays UK</a>
              </td>
              <td valign="top" width="150">
May 26th</td>
              <td valign="top" width="150">
London, UK</td>
              <td valign="top" width="246">
WCF RIA Services for Productive Silverlight App Development</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.ndc2011.no">NDC 2011</a>
              </td>
              <td valign="top" width="150">
June 8-10</td>
              <td valign="top" width="150">
Oslo, Norway</td>
              <td valign="top" width="246">
                <ul>
                  <li>
Switch on the LightSwitch 
</li>
                  <li>
Blend for Developers</li>
                </ul>
              </td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://edu.ordina.be/">Silverlight Tour Norway</a>
              </td>
              <td valign="top" width="150">
June 15-17</td>
              <td valign="top" width="150">
Oslo, Norway</td>
              <td valign="top" width="246">
5 day intensive training on Silverlight 4</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://www.communityday.be">Community Day Belgium</a>
              </td>
              <td valign="top" width="150">
June 23</td>
              <td valign="top" width="150">
Mechelen, Belgium</td>
              <td valign="top" width="246">
TBD</td>
            </tr>
            <tr>
              <td valign="top" width="150">
                <a href="http://edu.ordina.be/">Windows Phone 7 Tour The Netherlands</a>
              </td>
              <td valign="top" width="150">
27-29 June</td>
              <td valign="top" width="150">
Utrecht, The Netherlands</td>
              <td valign="top" width="246">
3 day intensive training on Windows Phone 7</td>
            </tr>
            <tr>
              <td valign="top" width="150">
Telerik Tour UK (TBC)</td>
              <td valign="top" width="150">
July 4-8</td>
              <td valign="top" width="150">
All over the UK</td>
              <td valign="top" width="246">
TBD</td>
            </tr>
            <tr>
              <td valign="top" width="150">
Telerik Tour Ireland (TBC)</td>
              <td valign="top" width="150">
September 19-23</td>
              <td valign="top" width="150">
All over Ireland</td>
              <td valign="top" width="246">
TBD</td>
            </tr>
          </tbody>
        </table>
        <p>
It’s going to be a very busy couple of months. I hope to see many of you on one of
these events!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=998b4507-b5f9-44f9-9973-9c903af588f4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Upcoming webinar on Azure and Silverlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/03/21/Upcoming+Webinar+On+Azure+And+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,e3264913-b329-420b-ac31-b7506b91b766.aspx</id>
    <published>2011-03-21T04:22:10.0987716-04:00</published>
    <updated>2011-03-21T04:22:10.0987716-04:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.snowball.be/CategoryView,category,Azure.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Webcasts" label="Webcasts" scheme="http://www.snowball.be/CategoryView,category,Webcasts.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just a small reminder that this Wednesday, I’m doing another SilverlightShow webinar
titled “Switching on the cloud for Silverlight”. 
</p>
        <p>
          <strong>What happens if you combine 2 of the hottest technologies for your applications?</strong>
          <strong>Find
out in this very session! 
<br /></strong>
          <br />
If we combine the capabilities of <strong>Windows Azure</strong> with the rich <strong>UX
of Silverlight</strong>, we are capable of building great... what am I saying: <strong>exceptional
web applications</strong>. We'll look at building an app in Silverlight running from
Azure and we'll look at the topics of interest that you'll encounter when hosting
services in the cloud to be consumed from Silverlight, considerations for Windows
Azure Storage if used from Silverlight etc. 
</p>
        <p>
          <strong>Webinar agenda:</strong>
        </p>
        <ol>
          <li>
            <p>
Parts of Windows Azure
</p>
          </li>
          <li>
            <p>
Why does a Silverlight developer need to care?
</p>
          </li>
          <li>
            <p>
Developing for Windows Azure 
</p>
            <ul>
              <li>
                <p>
Required tools
</p>
              </li>
              <li>
                <p>
Emulators (“local cloud”)
</p>
              </li>
              <li>
                <p>
Azure Portal
</p>
              </li>
            </ul>
          </li>
          <li>
            <p>
Moving Silverlight applications to the cloud 
</p>
            <ul>
              <li>
                <p>
Database only
</p>
              </li>
              <li>
                <p>
WCF
</p>
              </li>
              <li>
                <p>
REST
</p>
              </li>
              <li>
                <p>
Entire Silverlight applications
</p>
              </li>
              <li>
                <p>
RIA Services
</p>
              </li>
              <li>
                <p>
Azure as intermediate layer for Twitter
</p>
              </li>
            </ul>
          </li>
          <li>
            <p>
Using blob storage 
</p>
            <ul>
              <li>
                <p>
Silverlight/Azure video player
</p>
              </li>
            </ul>
          </li>
          <li>
            <p>
Windows Phone and Azure 
</p>
            <ul>
              <li>
                <p>
Accessing services in the cloud
</p>
              </li>
              <li>
                <p>
WP7 Push Notification services 
</p>
              </li>
            </ul>
          </li>
        </ol>
        <p>
As always, these webinars are free and you can register here: <a title="http://www.silverlightshow.net/news/Upcoming-Silverlight-Show-Webinar-Switching-on-the-Cloud-for-Silverlight.aspx" href="http://www.silverlightshow.net/news/Upcoming-Silverlight-Show-Webinar-Switching-on-the-Cloud-for-Silverlight.aspx">http://www.silverlightshow.net/news/Upcoming-Silverlight-Show-Webinar-Switching-on-the-Cloud-for-Silverlight.aspx</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=e3264913-b329-420b-ac31-b7506b91b766" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Planned trainings in Norway</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/02/25/Planned+Trainings+In+Norway.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,270a6118-981a-47dc-8534-1a391e53ca2a.aspx</id>
    <published>2011-02-25T15:47:36.0919153-05:00</published>
    <updated>2011-02-25T15:47:36.0919153-05:00</updated>
    <category term="WP7" label="WP7" scheme="http://www.snowball.be/CategoryView,category,WP7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you are one of my Norwegian readers (or any other reader willing to visit the great
city of Oslo while learning WP7 :) ), I’ll be teaching Silverlight and Windows Phone
7 at ProgramUtvikling in Oslo, Norway in the coming months. 
</p>
        <p>
You can register now for the Windows Phone 7 training already using <a href="http://www.programutvikling.no/nyheter.aspx?mid_1=1346&amp;mid=2046&amp;id=1024912">this
link</a>.
</p>
        <p>
          <b>
            <em>Writing Apps for a phone was never so easy. With Silverlight you can build
applications for the Windows Phone 7 as easy as you can build a web widget. When youre
ready to dive into building applications for phones, this is the course for you.</em>
          </b>
        </p>
        <p>
          <em>Silverlight for Windows Phone 7 is a three–day course on Windows Phone 7 Series
development using Silverlight. It divides the content into three distinct areas: Design,
Development and the Server–Side. Students should be able to develop applications for
the phone once they have attended the course. The Course is structured with a mix
of didactic lessons, demonstrations and hands–on labs. Each student will leave the
course having created several small Silverlight applications. This variety of learning
techniques will ensure that all students become proficient in the technology quickly
and in an exciting way.</em>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=270a6118-981a-47dc-8534-1a391e53ca2a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight exam guide ready</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/02/25/Silverlight+Exam+Guide+Ready.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ffb1706d-6104-49b3-8aad-8ce0af2b1883.aspx</id>
    <published>2011-02-25T15:42:29.2399153-05:00</published>
    <updated>2011-02-25T15:42:29.2399153-05:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The reason I haven’t been blogging here is that I was busy writing the Silverlight
exam guide. The good news is that the entire guide is now ready and available at SilverlightShow!
Here are all the parts for you to explore
</p>
        <ul>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-the-exams-Part-1.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 1)</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-2.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 2) </a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-3.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 3)</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-4.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 4)</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-5.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 5)</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-6.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 6)</a>
          </li>
          <li>
            <a href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-7.aspx">Getting
ready for Microsoft Silverlight Exam 70-506 (Part 7)</a>
          </li>
        </ul>
        <p>
Enjoy!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ffb1706d-6104-49b3-8aad-8ce0af2b1883" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Part 2 of Silverlight exam preparation online!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/25/Part+2+Of+Silverlight+Exam+Preparation+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,9511fa2f-8ecc-4028-8c19-4cc7bc748f3e.aspx</id>
    <published>2011-01-25T16:23:56.7493499-05:00</published>
    <updated>2011-01-25T16:23:56.7493499-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was notified that part 2 of my Silverlight exam preparation guide was made available
at SilverlightShow. You can read part 2 here: <a title="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-2.aspx" href="http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-2.aspx">http://www.silverlightshow.net/items/Getting-ready-for-Microsoft-Silverlight-Exam-70-506-Part-2.aspx</a> .<br />
Enjoy!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=9511fa2f-8ecc-4028-8c19-4cc7bc748f3e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Send me to Vegas to speak at Mix!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/25/Send+Me+To+Vegas+To+Speak+At+Mix.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,1505aafc-ec38-4880-958f-d4eb432c857e.aspx</id>
    <published>2011-01-25T16:06:53.8885499-05:00</published>
    <updated>2011-01-25T16:06:53.8885499-05:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Mix 11" label="Mix 11" scheme="http://www.snowball.be/CategoryView,category,Mix11.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, I got some great news: some of my sessions that I proposed for Mix 11 in Las
Vegas made the first cut! That means that you can now all vote for them via the <a href="http://live.visitmix.com/OpenCall">OpenCall</a> page
on the Mix 11 site! 
</p>
        <p>
          <strong>So, want me out of here? This is your chance to send me to Vegas, baby!! Voting
can be done here: </strong>
          <a title="http://live.visitmix.com/OpenCall" href="http://live.visitmix.com/OpenCall">
            <strong>http://live.visitmix.com/OpenCall</strong>
          </a>
          <strong> .
All votes are really appreciated, thanks in advance!</strong>
        </p>
        <p>
          <a href="http://live.visitmix.com/OpenCall">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="300x250_Mix11_011011_US_b" border="0" alt="300x250_Mix11_011011_US_b" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SendmetoVegastospeakatMix_136FC/300x250_Mix11_011011_US_b_3.gif" width="244" height="204" />
          </a> 
</p>
        <p>
These are my sessions that made the first selection:
</p>
        <ul>
          <li>
            <a href="http://live.visitmix.com/OpenCall/Vote/Session/30">Data access from Windows
Phone 7</a>
            <br />
Gill Cleeren<br />
Windows Phone 7 apps need access to data, that's a sure thing. In this session, we'll
look at what of our knowledge from Silverlight we can leverage into the Windows Phone
platform. We'll look at what we need to keep track of on the service side and what
actions we need to do on the phone platform itself. 
<br />
Level 300<br />
Technology: Silverlight, Windows Phone 7, Services</li>
          <li>
            <a href="http://live.visitmix.com/OpenCall/Vote/Session/27">The session where Hello
World is forbidden: Advanced Silverlight</a>
            <br />
Gill Cleeren<br />
Byebye 'Hello World'. We've all had the time to play with Silverlight by now so it's
time to switch gears. In this advanced Silverlight session, Gill Cleeren will show
you advanced topics in Silverlight, such as unit testing, profiling, MEF, security
and authentication, advanced printing scenarios, sockets etc... You'll learn stuff
that you were afraid to ask about before!<br />
Level 400/Silverlight experience required. 
<br />
Technologies: Silverlight 4</li>
          <li>
            <a href="http://live.visitmix.com/OpenCall/Vote/Session/29">Advanced WCF RIA Services</a>
            <br />
Gill Cleeren<br />
Since Silverlight 4, WCF RIA Services has been part of the platform. We all had some
time to experiment with RIA Services a bit, didn't we? So now it's time for the serious
work. In this session, we won't be creating your basic "Hello RIA Services" application!
Instead, we'll take a deeper look at RIA services by answering questions such as:How
should we architect our applications around them?What patterns and best practices
can be applied? How can RIA Services be used in an MVVM scenario?How can I do validation
with RIA services?And much more!<br />
Level 300<br />
Technologies: Silverlight 4, WCF RIA Services</li>
          <li>
            <a href="http://live.visitmix.com/OpenCall/Vote/Session/28">Building custom controls
in Silverlight 4</a>
            <br />
Gill Cleeren<br />
While Silverlight has a rich set of controls on board, sometimes you still need a
control that does not exist. In Silverlight, there are more options than you ever
considered possible to do this. Varying from templating a control to building a control
from scratch, we'll cover it all. We'll also look at building a container from scratch!Level
300<br />
Technologies: Silverlight 4</li>
        </ul>
        <p>
Love one (or more) of these sessions? Please vote! Thanks!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1505aafc-ec38-4880-958f-d4eb432c857e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Part 1 of Silverlight exam preparation online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/18/Part+1+Of+Silverlight+Exam+Preparation+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,bdf70902-bdb1-4392-b032-ca85c7c6b9df.aspx</id>
    <published>2011-01-18T04:58:07.7969777-05:00</published>
    <updated>2011-01-18T04:58:07.7969777-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Silverlight exam (70-506) is being released soon. Together with the people of
SilverlightShow, I decided to create a guide to help with the exam preparation. The
first part is online now, you can find it <a href="http://www.silverlightshow.net/items/Getting-ready-for-the-exams-Part-1.aspx">here</a>.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Part1ofSilverlightexampreparationonline_9A3B/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Part1ofSilverlightexampreparationonline_9A3B/image_thumb_1.png" width="244" height="100" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bdf70902-bdb1-4392-b032-ca85c7c6b9df" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Microsoft Monday at Packt publishing</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/13/Microsoft+Monday+At+Packt+Publishing.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ae20eb21-5383-45f7-b26d-37f2957b3706.aspx</id>
    <published>2011-01-13T09:30:24.6776616-05:00</published>
    <updated>2011-01-13T09:32:11.804235-05:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here’s something interesting from my publisher, Packt Publishing: Microsoft Monday.
On Monday 24th of January, Packt is set to release 5 books on Microsoft technologies.
To celebrate this, they are giving away a year’s subscription on their entire library
of Microsoft books. More info can be found <a href="https://www.packtpub.com/article/microsoft-books-competition">here</a>.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MicrosoftMondayatPacktpublishing_DA0D/MicrosoftMonday_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MicrosoftMonday" border="0" alt="MicrosoftMonday" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MicrosoftMondayatPacktpublishing_DA0D/MicrosoftMonday_thumb.png" width="228" height="228" />
          </a>
        </p>
        <p>
Additionally, all Packt books get a 25% discount if you buy 2 books! That includes <a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book?utm_source=packtpub.com&amp;utm_medium=article&amp;utm_content=other&amp;utm_campaign=mdb_005642">my
book</a> as well!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ae20eb21-5383-45f7-b26d-37f2957b3706" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Show Eco Contest has begun: Win 3 passes for Mix 2011!!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/13/Silverlight+Show+Eco+Contest+Has+Begun+Win+3+Passes+For+Mix+2011.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0f0a3733-e757-492e-aee1-195a0489add8.aspx</id>
    <published>2011-01-13T04:14:33.8172582-05:00</published>
    <updated>2011-01-13T04:14:33.8172582-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
My good friends from SilverlightShow have announced their 2011 contest: the Eco Contest!
I am selected to be one of the five judges this year!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightShowEcoContesthasbegunWin3pas_9002/eco_badge_150_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="eco_badge_150" border="0" alt="eco_badge_150" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightShowEcoContesthasbegunWin3pas_9002/eco_badge_150_thumb.png" width="154" height="154" />
          </a>
          <br />
          <strong>
            <br />
What is this contest about?<br /></strong>2011 has been declared the <a href="http://www.un.org/en/events/iyof2011/">International
Year of Forests</a><strong></strong> by the United Nations. We at SilverlightShow
would like to join the worldwide efforts to promote a broader understanding of sustainable
forest management and generate ideas to participate in the celebration of forests
throughout 2011 and beyond.
</p>
        <p>
We initiate this year's <strong>Forests Eco Contest</strong> to show the power that
Silverlight technologies have in conveying an idea, and reach a huge audience in no
time with striking visual and interactive features. Be a part of this year's challenge; <strong>tiny
individual steps can lead us to a greener and sustainable future on this planet we
all share</strong>.<br /></p>
        <p>
          <em>
            <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightShowEcoContesthasbegunWin3pas_9002/banner400_forest_rounded_2.png">
              <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="banner400_forest_rounded" border="0" alt="banner400_forest_rounded" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightShowEcoContesthasbegunWin3pas_9002/banner400_forest_rounded_thumb.png" width="463" height="63" />
            </a>
          </em>
        </p>
        <p>
          <strong>The Contest</strong>
        </p>
        <p>
We invite you to take part in our contest by creating a Silverlight application that
informs about the critical situation with forests preservation, or urges to take actions
in protecting this resource. We, on our end, will make sure, that your applications
reached as many people as possible.  Please read the <a href="http://contest.silverlightshow.net/ContestRules.aspx">Official
Rules</a> of our green contest! 
</p>
        <p>
          <strong>The Judges<br /></strong>
          <a href="http://crocusgirl.com">Cigdem Patlak</a> - community vote winner
in <a href="http://contest2010.silverlightshow.net/">SilvelightShow Eco Contest 2010</a>,
Silveright MVP 
<br /><a href="http://emil.silverlightshow.net/">Emil Stoychev</a> - founder of SilverlightShow,
Silverlight MVP 
<br /><a href="http://www.snowball.be">Gill Cleeren</a> - Microsoft Regional Director, SilverlightShow
Webinar Presenter, Silverlight MVP 
<br /><a href="http://briannoyes.net/">Brian Noyes</a> - Microsoft Regional Director, Silverlight
MVP 
<br /><a href="http://timheuer.com/blog/">Tim Heuer</a> - Microsoft program manager for
Microsoft Silverlight 
</p>
        <p>
        </p>
        <p>
          <strong>All the information can be found here: </strong>
          <a title="http://contest.silverlightshow.net/" href="http://contest.silverlightshow.net/">
            <strong>http://contest.silverlightshow.net/</strong>
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0f0a3733-e757-492e-aee1-195a0489add8" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Ordina NL session on Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/13/Ordina+NL+Session+On+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,38e4cde1-67aa-4d9d-b575-ebdee2e0fa96.aspx</id>
    <published>2011-01-13T04:08:27.6961644-05:00</published>
    <updated>2011-01-13T04:08:27.6961644-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ll be at Ordina Netherlands (Nieuwegein) for the ”Innoveer jij mee” event on February
7th.<br /><strong><em>SilverLight 4 door Gill Cleeren</em></strong><b><br /></b><em>Op maandag 7 februari a.s. geeft Gill Cleeren een masterclass. Gedurende het
programma is er aandacht voor de positionering van Silverlight met name in het licht
van desktops en mobile devices (als Windows Phone 7). Natuurlijk is er aansluitend
veel aandacht voor de technische in’s and out’s van Silverlight 4 en de wijze waarop
applicaties met Silverlight 4 ontwikkeld kunnen worden.</em></p>
        <p>
          <em>Silverlight is Microsoft’s platform voor het ontwikkelen van Rich Internet Applications
(RIA’s) op desktops en mobile devices als Windows Phone 7, Microsoft’s nieuwe mobiele
platform.</em>
        </p>
        <p>
          <em>Microsoft heeft veel geïnvesteerd in Silverlight en Silverlight is inmiddels toe
aan zijn vierde iteratie (Silverlight 4) en daarmee klaar voor de ontwikkeling van
business applicaties.</em>
        </p>
        <p>
Registration is free but obligatory at <a title="https://www.ordina.nl/nieuws/evenementen/kennissessie/20110207%20-%20innoveer%20jij%20mee%20-%20silverlight%204%20door%20gill%20cleeren.aspx" href="https://www.ordina.nl/nieuws/evenementen/kennissessie/20110207%20-%20innoveer%20jij%20mee%20-%20silverlight%204%20door%20gill%20cleeren.aspx">https://www.ordina.nl/nieuws/evenementen/kennissessie/20110207%20-%20innoveer%20jij%20mee%20-%20silverlight%204%20door%20gill%20cleeren.aspx</a>. 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=38e4cde1-67aa-4d9d-b575-ebdee2e0fa96" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>First Visug events of 2011 online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/13/First+Visug+Events+Of+2011+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,febba1d5-18d4-4dfd-b04f-3c4e6c8a233b.aspx</id>
    <published>2011-01-13T04:05:25.7822322-05:00</published>
    <updated>2011-01-13T04:05:25.7822322-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Visug" label="Visug" scheme="http://www.snowball.be/CategoryView,category,Visug.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
With the new year now almost 2 weeks old, we have put online the first Visug events
of 2011 (and we have a great list of upcoming ones as well, more on that soon).
</p>
        <p>
To start with a bang, we have Scott Hanselman doing a session on January 24th! The
final session content will be available soon, but it will be in the MVC/NuGet area.
As we expect this to be fully booked very soon, register quickly via <a title="http://visug.be/Eventdetails/tabid/95/EventId/37/Default.aspx" href="http://visug.be/Eventdetails/tabid/95/EventId/37/Default.aspx">http://visug.be/Eventdetails/tabid/95/EventId/37/Default.aspx</a></p>
        <p>
Secondly, Bart Wullems will be doing a session on Caliburn.Micro. 
<br /><em>You've heard a lot about Model-View-ViewModel (MVVM), but you've struggled to
see how it can help you in your day-to-day work. Or, you're experienced at implementing
MVVM, but looking for some ways to maximize your investment in this methodology. In
this session, we explore Caliburn.Micro(</em><a href="http://caliburnmicro.codeplex.com/"><em>http://caliburnmicro.codeplex.com/</em></a><em>),
a simple MVVM framework, by iteratively identifying pain points in our UI development
and eliminating them with simple solutions. You'll walk away with code, but more importantly
with an understanding of how to apply some simple ideas to improve productivity with
MVVM in your own projects.</em></p>
        <p>
Register here: <a title="http://visug.be/Eventdetails/tabid/95/EventId/36/Default.aspx" href="http://visug.be/Eventdetails/tabid/95/EventId/36/Default.aspx">http://visug.be/Eventdetails/tabid/95/EventId/36/Default.aspx</a></p>
        <p>
It will be another great Visug year!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=febba1d5-18d4-4dfd-b04f-3c4e6c8a233b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Updates to Web Camp calendar</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/07/Updates+To+Web+Camp+Calendar.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4e173be4-e3f9-43c1-83bb-3b6a5807d3ee.aspx</id>
    <published>2011-01-07T03:31:20.9791753-05:00</published>
    <updated>2011-01-07T03:31:20.9791753-05:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="ASP.net AJAX" label="ASP.net AJAX" scheme="http://www.snowball.be/CategoryView,category,ASPnetAJAX.aspx" />
    <category term="ASP.NET MVC" label="ASP.NET MVC" scheme="http://www.snowball.be/CategoryView,category,ASPNETMVC.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On January 24th, the first Belgian Web Camp takes place. Some updates have been done
to the agenda, including another speaker being added. 
</p>
        <p>
          <a href="http://bit.ly/gVWONY">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="WebCamps_signature_v2" border="0" alt="WebCamps_signature_v2" src="http://www.snowball.be/content/binary/WindowsLiveWriter/UpdatestoWebCampcalendar_85E8/WebCamps_signature_v2_3.jpg" width="467" height="191" />
          </a>
        </p>
        <p>
This is the final agenda:
</p>
        <p>
          <b>8:30 - 9:00 </b>
          <i>Welcome and registration</i>
        </p>
        <p>
          <b>9:00 - 11:00 </b>
          <b>Opening Keynote – What’s new in the Microsoft Web Platform </b>
          <b>(Scott
Hanselman, Principle Program Manager, Microsoft)<br /></b>Just recently, Microsoft have released a bunch of new products that web developers
can use to build websites and web applications.  Scott, Drew and Jonathan will
take you on a whirlwind tour of what’s new in the Microsoft Web Platform, including
ASP.NET MVC 3, NuGet and more.<b></b></p>
        <p>
          <b>11:00 - 11:30 </b>
          <i>Coffee Break</i>
        </p>
        <p>
          <b>11:30 - 12:30 </b>
          <b>HTML5: How about today? </b>
          <b>(Katrien De Graeve, Developer
Evangelist, Microsoft)<br /></b>What is HTML5? With more and more browsers supporting HTML5, ECMAScript 5 and
other web standards, developers now have a strong web platform they can use to create
a new class of web application that is more powerful and interactive than ever before. 
What's in HTML5 that lets us take our sites to the next level?<br />
Expect demos and code! 
</p>
        <p>
          <b>12:30 - 13:30 </b>
          <i>Lunch</i>
        </p>
        <p>
          <b>13:30 - 14:45 </b>
          <b>Come in as jQuery zero, go out as jQuery hero </b>
          <b>(Gill
Cleeren)<br /></b>jQuery is the web developers’ new favorite. This lightweight JavaScript library
has developers writing JavaScript code again, and loving it! What previously needed
20 lines of code can now be done in just 3 lines. Who wouldn’t be enthusiastic? Microsoft
showed its love for the library by fully integrating it in Visual Studio. I dare to
ask: should you stay behind? In this session, we’ll take a look at jQuery and we’ll
teach you what you need to know to get you on your way. More specifically, we’ll look
at selectors, attributes, working with WCF, jQuery UI, and much more. You could easily
walk out of this session wearing a sticker: “I love jQuery”! 
</p>
        <p>
          <b>14:45 - 15:15 </b>
          <i>Coffee Break</i>
        </p>
        <p>
          <b>15:15 - 16:30 </b>
          <b>OData: Open Data for the Open Web </b>
          <b>(Jonathan Carter,
Senior Technical Evangelist, Microsoft)<br /></b>There is no shortage of valuable data being generated by applications, reports,
tools, Web sites, etc. Unfortunately, this leaves many of us wishing we could programmatically
access the data and logic behind an app, report, or Web site. To break down data silos
and increase the shared value of data and its associated business logic through the
Web, Microsoft has recently announced the Open Data Protocol which enables exposing
any data source as a Web-friendly data feed. Join this session to understand what
the Open Data Protocol (OData) is and how it adds end-user and developer value to
many of Microsoft's leading products and services (such as SharePoint Server 2010,
Microsoft Codename "Dallas", Windows Azure, SQL Server Reporting Services, SQL Server
PowerPivot for Excel, Visual Studio, .NET, Silverlight, AJAX, etc.), as well as being
accessible from a range of platforms such as Java and PHP. " 
</p>
        <p>
          <b>16:30 - 17:30 </b>
          <i>Closing drink</i>
        </p>
        <p>
Registration can be completed <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032472434&amp;Culture=en-US">here</a> (there
are a few seats left!!)<br />
Location: 
<br /><strong>Business Faculty 
<br /></strong>St. Lendriksborre 6 / Font Saint Landry 6<br />
Brussel - Neder over Heembeek 1120<br />
Belgium<br /><br />
You can also watch the live stream but you need to register from <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032472819&amp;Culture=en-US">here</a>.
And if you want to view the event from within your company, you can get a free breakfast
(Register <a href="http://blogs.msdn.com/b/belux/archive/2011/01/06/web-camp-belgium-join-online-and-breakfast-is-on-us.aspx">here</a>) <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4e173be4-e3f9-43c1-83bb-3b6a5807d3ee" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>We’re hiring!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/04/Were+Hiring.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,1c135572-9448-491d-aa9b-02858abefef9.aspx</id>
    <published>2011-01-04T04:43:15.0493196-05:00</published>
    <updated>2011-01-04T04:43:15.0493196-05:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If in this new year, you want to hop onto a new job, why not try Ordina Air? We’re
hiring talented people!
</p>
        <p>
Go to <a title="http://ordina-air.ordina.be/" href="http://ordina-air.ordina.be/">ordina-air.ordina.be</a> and
check in for your new job!
</p>
        <p>
          <a href="http://ordina-air.ordina.be/">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Werehiring_96C0/image_3.png" width="462" height="348" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1c135572-9448-491d-aa9b-02858abefef9" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My new book is on Amazon (sort of)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/04/My+New+Book+Is+On+Amazon+Sort+Of.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a25427bf-7d8e-4af4-a0dd-e5dbff3ad207.aspx</id>
    <published>2011-01-04T03:33:12.2824858-05:00</published>
    <updated>2011-01-04T03:33:12.2824858-05:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just noticed that the book I’m writing a chapter for these days is announced on
Amazon already, although the release is still some time away. The book is titled <strong>Real
World .NET 4 and C#: Indispensible Experiences from 15 .NET and C# MVPs </strong> and
can be pre-ordered from <a href="http://www.amazon.co.uk/Real-World-NET-Indispensible-Experiences/dp/1118021967/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1294129665&amp;sr=8-1">Amazon</a> from
now.
</p>
        <p>
          <a href="http://www.amazon.co.uk/Real-World-NET-Indispensible-Experiences/dp/1118021967/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1294129665&amp;sr=8-1">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="51n-40EviKL__SS500_" border="0" alt="51n-40EviKL__SS500_" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MynewbookisonAmazonsortof_8658/51n-40EviKL__SS500__3.jpg" width="244" height="244" />
          </a>(That’s
me on the right there on the cover… ;-) ) 
</p>
        <p>
They did completely misspell my name though (I got renamed to Gil Gleeren for some
reason), I’m looking into getting this fixed.
</p>
        <p>
Meanwhile, my very first book I wrote with Kevin Dockx still keeps doing great and
getting great reviews, both at <a href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?ie=UTF8&amp;qid=1294129963&amp;sr=8-1">Amazon.com</a> and <a href="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1294129939&amp;sr=1-1">Amazon.co.uk</a>! 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a25427bf-7d8e-4af4-a0dd-e5dbff3ad207" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>MVP for the 4th year, Silverlight MVP for the first year!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2011/01/01/MVP+For+The+4th+Year+Silverlight+MVP+For+The+First+Year.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ada79b47-5f0a-4ec8-bc08-b96244b4bcd9.aspx</id>
    <published>2011-01-01T10:23:05.693443-05:00</published>
    <updated>2011-01-01T10:23:05.693443-05:00</updated>
    <category term="MVP" label="MVP" scheme="http://www.snowball.be/CategoryView,category,MVP.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
After checking my mailbox frantically for the last couple of hours, I just got my
confirmation mail that I’m awarded MVP for the 4th year!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MVPforthe4thyearSilverlightMVPforthefirs_E665/MVP_Horizontal_FullColor_2.gif">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="MVP_Horizontal_FullColor" border="0" alt="MVP_Horizontal_FullColor" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MVPforthe4thyearSilverlightMVPforthefirs_E665/MVP_Horizontal_FullColor_thumb.gif" width="324" height="133" />
          </a>
        </p>
        <p>
          <strong>This one was a bit special though, as I’m changed from ASP.NET MVP to Silverlight
MVP!</strong>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ada79b47-5f0a-4ec8-bc08-b96244b4bcd9" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Working with the RaiseCanExecuteChanged in MVVM Light (Silverlight)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/31/Working+With+The+RaiseCanExecuteChanged+In+MVVM+Light+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4fa5a410-2ca0-4fc9-a8a3-d416c52e5f3f.aspx</id>
    <published>2010-12-31T05:19:12.0955473-05:00</published>
    <updated>2010-12-31T05:19:12.0955473-05:00</updated>
    <category term="mvvm" label="mvvm" scheme="http://www.snowball.be/CategoryView,category,mvvm.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When working with MVVM, the Command pattern is used to bind actions (such as a Click
on a Button) in the View with commands in the ViewModel. The ICommand interface in
Silverlight has 3 members:
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Summary:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Defines the contract for commanding, using the same contract as used in WPF.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">interface</span> ICommand</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Summary:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Occurs when changes occur that affect whether the command should execute.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">event</span> EventHandler
CanExecuteChanged;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Summary:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Defines the method that determines whether the command can execute in its</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
current state.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Parameters:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
parameter:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Data used by the command. If the command does not require data to be passed,</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
this object can be set to null.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Returns:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
true if this command can be executed; otherwise, false.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">bool</span> CanExecute(<span style="color: #0000ff">object</span> parameter);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Summary:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Defines the method to be called when the command is invoked.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Parameters:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
parameter:</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
Data used by the command. If the command does not require data to be passed,</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//
this object can be set to null.</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">void</span> Execute(<span style="color: #0000ff">object</span> parameter);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
The fact whether or not the command can be executed (read: a Button is enabled or
not) depends on the boolean value returned by the CanExecute. By default, this value
is evaluated on first load of the View: a Save button should initially be disabled.
However, during user input, this value has to be re-evaluated: after the user has
filled in a field, we need to check if the Save button should be enabled. For this
purpose, the CanExecuteChanged event exist. This event should be raised whenever the
value of CanExecute should be evaluated once again.
</p>
        <p>
In MVVM Light, the lightwork MVVM framework by Laurent Bugnion, a method called RaiseCanExecuteChanged
exists on the RelayCommand class for this very purpose. Let’s take a look at how we
can use this method.
</p>
        <p>
I have a very basic view, containing some TextBox fields. Note that initially, the
Save button is disabled:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/WorkingwiththeRaiseCanExecuteChangedinMV_9C56/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/WorkingwiththeRaiseCanExecuteChangedinMV_9C56/image_thumb.png" width="347" height="140" />
          </a>
        </p>
        <p>
The XAML code is shown below. The fields are bound to a Person object, that I expose
in the ViewModel (shown further).
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Grid</span>
              <span style="color: #ff0000">Width</span>
              <span style="color: #0000ff">="450"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Grid.RowDefinitions</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="50"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="40"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="40"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="40"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="40"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">RowDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Grid.RowDefinitions</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Grid.ColumnDefinitions</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ColumnDefinition</span>
              <span style="color: #ff0000">Width</span>
              <span style="color: #0000ff">="*"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">ColumnDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">ColumnDefinition</span>
              <span style="color: #ff0000">Width</span>
              <span style="color: #0000ff">="*"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">ColumnDefinition</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Grid.ColumnDefinitions</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBlock</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="FirstNameTextBlock"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="1"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">Text</span><span style="color: #0000ff">="First
name"</span><span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Center"</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBlock</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="LastNameTextBlock"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="2"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">Text</span><span style="color: #0000ff">="Last
name"</span><span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Center"</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBlock</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="EmailTextBlock"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="3"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">Text</span><span style="color: #0000ff">="Email"</span><span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Center"</span><span style="color: #ff0000">Margin</span><span style="color: #0000ff">="3"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">TextBlock</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="FirstNameTextBox"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="1"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">VerticalAlignment</span><span style="color: #0000ff">="Center"</span><span style="color: #ff0000">HorizontalAlignment</span><span style="color: #0000ff">="Left"</span><span style="color: #ff0000">Width</span><span style="color: #0000ff">="200"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Margin</span>
              <span style="color: #0000ff">="3"</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="{Binding
Person.FirstName, Mode=TwoWay}"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="LastNameTextBox"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="1"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">VerticalAlignment</span>
              <span style="color: #0000ff">="Center"</span>
              <span style="color: #ff0000">HorizontalAlignment</span>
              <span style="color: #0000ff">="Left"</span>
              <span style="color: #ff0000">Width</span>
              <span style="color: #0000ff">="200"</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Margin</span>
              <span style="color: #0000ff">="3"</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="{Binding
Person.LastName, Mode=TwoWay}"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="EmailTextBox"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="3"</span><span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="1"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">VerticalAlignment</span>
              <span style="color: #0000ff">="Center"</span>
              <span style="color: #ff0000">HorizontalAlignment</span>
              <span style="color: #0000ff">="Left"</span>
              <span style="color: #ff0000">Width</span>
              <span style="color: #0000ff">="200"</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Margin</span>
              <span style="color: #0000ff">="3"</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="{Binding
Person.Email, Mode=TwoWay}"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">TextBox</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Button</span>
              <span style="color: #ff0000">Content</span>
              <span style="color: #0000ff">="Save"</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="4"</span><span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Column</span><span style="color: #0000ff">="1"</span></pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Command</span>
              <span style="color: #0000ff">="{Binding
SaveCommand}"</span>
              <span style="color: #ff0000">VerticalAlignment</span>
              <span style="color: #0000ff">="Center"</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">HorizontalAlignment</span>
              <span style="color: #0000ff">="Right"</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">Button</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">Grid</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
The ViewModel called MainPageViewModel is set as the DataContext for this View. This
ViewModel exposes a Person instance (a Model class) and a RelayCommand for the View
to bind to.
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> MainPageViewModel:
ViewModelBase</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> Person
Person { get; set; }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> RelayCommand
SaveCommand { get; set; }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
The SaveCommand is initialized as follows:
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> InitializeCommands()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    SaveCommand = <span style="color: #0000ff">new</span> RelayCommand(OnSave,
OnCanSave);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> OnSave()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #008000">//Perform
save to database</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> OnCanSave()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.FirstName) </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        &amp;&amp; !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.LastName) </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        &amp;&amp; !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.Email);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Note that the OnCanSave (the implementation of the CanExecuteChanged) will at this
point only be called upon binding of the ViewModel. However, I need this to be evaluated
every time a value of the bound Person changes: only after all 3 fields have a value,
the Save should be enabled.
</p>
        <p>
To implement this, I changed the Person class as follows. It implements the INotifyPropertyChanged
interface.
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> Person
: INotifyPropertyChanged</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> _firstName;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> _lastName;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">string</span> _email;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">event</span> PropertyChangedEventHandler
PropertyChanged;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> FirstName</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        get</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> _firstName;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        set</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (_firstName
!= <span style="color: #0000ff">value</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                _firstName = <span style="color: #0000ff">value</span>;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (PropertyChanged
!= <span style="color: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                    PropertyChanged(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">new</span> PropertyChangedEventArgs(<span style="color: #006080">"FirstName"</span>));</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> LastName</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        get</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> _lastName;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        set</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (_lastName
!= <span style="color: #0000ff">value</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                _lastName = <span style="color: #0000ff">value</span>;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (PropertyChanged
!= <span style="color: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                    PropertyChanged(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">new</span> PropertyChangedEventArgs(<span style="color: #006080">"LastName"</span>));</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">string</span> Email</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        get</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> _email;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        set</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (_email
!= <span style="color: #0000ff">value</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                _email = <span style="color: #0000ff">value</span>;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (PropertyChanged
!= <span style="color: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                    PropertyChanged(<span style="color: #0000ff">this</span>, <span style="color: #0000ff">new</span> PropertyChangedEventArgs(<span style="color: #006080">"Email"</span>));</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
In the constructor of the ViewModel, I register for the PropertyChanged event being
raised from the Person model.
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> MainPageViewModel()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    InitializeCommands();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    Person = <span style="color: #0000ff">new</span> Model.Person();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    Person.PropertyChanged += </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> System.ComponentModel.PropertyChangedEventHandler(Person_PropertyChanged);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
In this event handler, I now call the RaiseCanExecuteChanged method, part of the RelayCommand
class of MVVM Light.
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">void</span> Person_PropertyChanged(<span style="color: #0000ff">object</span> sender,
System.ComponentModel.PropertyChangedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    SaveCommand.RaiseCanExecuteChanged();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
This causes the CanExecuteChanged to be raised, causing Silverlight to evaluate again
if the Command should be enabled or not. In this particular case, I do this as follows
(this code was already shown and executed also on the initial binding):
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> OnCanSave()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.FirstName) </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        &amp;&amp; !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.LastName) </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        &amp;&amp; !<span style="color: #0000ff">string</span>.IsNullOrEmpty(Person.Email);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Whenever a value is provided for all 3 fields, the Button will be enabled.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/WorkingwiththeRaiseCanExecuteChangedinMV_9C56/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/WorkingwiththeRaiseCanExecuteChangedinMV_9C56/image_thumb_1.png" width="382" height="157" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4fa5a410-2ca0-4fc9-a8a3-d416c52e5f3f" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>SketchFlow: should I be starting from my prototype for my final application or not?</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/30/SketchFlow+Should+I+Be+Starting+From+My+Prototype+For+My+Final+Application+Or+Not.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,12095703-bf5b-496e-8df0-60403476e50a.aspx</id>
    <published>2010-12-30T16:22:48.8129283-05:00</published>
    <updated>2010-12-30T16:22:48.8129283-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m a fan of SketchFlow, definitely. I really like the tool, part of Expression Blend,
to create prototypes of applications I’m building. It gives me a means of talking
with the stake holders about how I see the application and change where needed. Because
of the support for iterative feedback of the prototype, it’s easy to come to a prototype
that is a reflection of what the application will look like in the end. At Ordina,
we made sure that our analysts know SketchFlow and use it instead of Visio or PowerPoint
during the analysis and requirements gathering phase.
</p>
        <p>
One of the questions I do get a lot is whether it is a good idea to start the development
of the “real” application with the code created by SketchFlow. I tend to say no on
this question. Why you may ask? Well, here are the reasons for this:
</p>
        <ul>
          <li>
The application prototype is not designed with the real application in mind. Things
like where can I create a user control (re-using parts) or a custom control are neglected
during the prototyping phase. This is logical: during this phase, you should not be
worrying about these things at all.</li>
          <li>
In some occasions, the prototype is created by an analyst. Chances are that your analyst
will not think about the code you need to write…</li>
          <li>
SketchFlow uses styles to create the sketchy look of the controls. You need to remove
these manually, which can take some time.</li>
        </ul>
        <p>
While I say no to reusing the prototype for the final application, I do say yes to
perhaps using a part of the generated code.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=12095703-bf5b-496e-8df0-60403476e50a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Merry Christmas!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/24/Merry+Christmas.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,79d4da02-683d-4fb3-85e4-c9ebbfef991c.aspx</id>
    <published>2010-12-24T04:09:56.4237122-05:00</published>
    <updated>2010-12-24T04:09:56.4237122-05:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MerryChristmas_8EEE/MerryChristmas_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="MerryChristmas" border="0" alt="MerryChristmas" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MerryChristmas_8EEE/MerryChristmas_thumb.jpg" width="669" height="420" />
          </a>
        </p>
        <p>
Enjoy these magical days with your family and loved ones and have a great 2011!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=79d4da02-683d-4fb3-85e4-c9ebbfef991c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My Microsoft predictions for 2011</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/23/My+Microsoft+Predictions+For+2011.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,34049bdd-3c40-4828-8b1a-c2e52fded635.aspx</id>
    <published>2010-12-23T08:11:42.2914619-05:00</published>
    <updated>2010-12-23T08:11:42.2914619-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Microsoft" label="Microsoft" scheme="http://www.snowball.be/CategoryView,category,Microsoft.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
It’s the time of the year again when we everyone starts reflecting on the year that
has gone by. While 2010 was great, 2011 is certainly another great one coming up.
So instead of thinking of what has been, let’s take a look into 2011… from a Microsoft
developer perspective that it :) 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/Visual-Studio-2010-Ultimate_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Visual-Studio-2010-Ultimate" border="0" alt="Visual-Studio-2010-Ultimate" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/Visual-Studio-2010-Ultimate_thumb.png" width="202" height="244" />
          </a>
        </p>
        <p>
While 2010 was the launch year of Visual Studio 2010, in 2011 we’ll get several new
things on our plate. No Visual Studio 2011, that’s true, although when thinking about
the 18-24 month release cycle of Visual Studio, chances are that we’ll see the first
alphas or betas late in 2011. Nothing is disclosed on this at the moment though, so
that’s a pure guess of mine. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/Microsoft_Silverlight_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Microsoft_Silverlight" border="0" alt="Microsoft_Silverlight" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/Microsoft_Silverlight_thumb.jpg" width="219" height="244" />
          </a>
        </p>
        <p>
Silverlight will definitely see a new release in 2011. In H1 2011, we’ll have the
beta and in the second half of the year, we’ll have a released version. Silverlight
5 brings many new features, you can watch Scott Guthrie’s keynote on the new version
right <a href="http://www.silverlight.net/news/events/firestarter/">here</a>. 
</p>
        <p>
The statement that was put out with showing the early version of Silverlight 5 put
all the blown-out-of-proportion-rumors about Silverlight’s death to rest. It clearly
shows that any investment in Silverlight is a safe one, future-proof for years to
come. I’m looking forward to doing many sessions on this new version in the new year,
that’s for sure!
</p>
        <p>
Heavily related to Silverlight is of course the further development of Windows Phone
7. Released late 2010, the new kid on the block has caused quite a lot of stir in
the mobile world. Microsoft created a new, refreshing interface for their devices.
Some things are missing, definitely, but due to the easy updating model that is in
place, Microsoft can create and distribute updates easily, which is entirely different
from previous versions of the mobile OS. Heck, comparing WP7 with Windows Mobile…
I should not be doing that! Several (unconfirmed as of yet) updates have been rumored,
the first one coming already in January, adding copy/paste functionality as a core
function of the phone. Later updates are rumored as well, including a v7.5 in the
second half of the year and even Windows Phone 8 in 2012. While these are based on
rumors, it shows that Microsoft is both committed to the platform AND investing heavily
in creating new, updated version of the OS.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/windows-phone-7-logo_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="windows-phone-7-logo" border="0" alt="windows-phone-7-logo" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Mypredictionsfor2011_C3B9/windows-phone-7-logo_thumb.jpg" width="244" height="244" />
          </a>
        </p>
        <p>
For me as a Silverlight developer, Windows Phone 7 was a gift. I practically didn’t
have to learn anything new to become a mobile developer. The tooling around Windows
Phone development is by far the best there is, just install the tools in Visual Studio
and you’re good to go. 
</p>
        <p>
I now personally have a Samsung Omnia 7 (coming from an iPhone 3Gs) and I love the
phone. It’s fast, stable (I didn’t restart it since I have it I think)… True, applications
are still lacking a bit, but consider that the phone is only here for a couple of
months and consider also there are already over 4000 apps in the store and you’ll
understand that we’ll have an interesting year there as well. Oh and yes, Angry Birds
will be coming to Windows Phone 7 as well (as said by Rovio on Twitter).
</p>
        <p>
Speaking of mobile, 2011 certainly will be the year of the tablet. At CES, taking
place in January, there will be a flood of tablets coming out. Small, large, somewhere
in between, running Android or Windows 7, we’ll see them all. I do hope here on a
strong answer from Microsoft, but there’s nothing confirmed yet. I’m sure we’ll see
some really interesting stuff there as well. 
</p>
        <p>
To finish off with, let’s hope we’ll see in the new year the next version of Windows
(Windows 8??) in some form. There’s very little known currently about the new OS though.
</p>
        <p>
Enjoy these last days of 2010!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=34049bdd-3c40-4828-8b1a-c2e52fded635" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Video recording for my latest webinar posted</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/19/Video+Recording+For+My+Latest+Webinar+Posted.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,153fed60-10e7-4113-90b1-1c885939883c.aspx</id>
    <published>2010-12-19T06:32:56.2558395-05:00</published>
    <updated>2010-12-19T06:32:56.2558395-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I noticed the video recording of my webinar “Building an end-to-end Silverlight 4
application” is now online (90 minutes). I hope you enjoy it and if you have questions,
please contact me via mail or comments.<br /><a href="http://www.silverlightshow.net/shows/Build-a-Silverlight-Application.aspx">Video</a><br /><a href="http://www.snowball.be/2010/12/16/Slides+And+Demos+For+SilverlightShow+Webinar.aspx">Slides
and demos were posted here</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=153fed60-10e7-4113-90b1-1c885939883c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>The INavigationContentLoader interface in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/19/The+INavigationContentLoader+Interface+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a1b8aa72-8f44-4d66-9811-ddcb82fda7fc.aspx</id>
    <published>2010-12-19T06:20:17.700977-05:00</published>
    <updated>2010-12-19T06:20:17.700977-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since Silverlight 3, we have had the Navigation Application template available. Using
this template, we did not need any tricks anymore to do navigation between “pages”
(which did not exist in Silverlight 2, we only had the UserControl). In SL3, a Navigation
Application was however rather locked down: developers had little to none options
available to hook into the navigation process itself. 
</p>
        <p>
With Silverlight 4, the INavigationContentLoader interface was introduced. This interface
provides a means for us to override how the navigation framework works: we can provide
our own logic for the page-loading process. Based on the target URI that is passed
in, we can load the page, but we can do other actions as well first. Let’s first look
at this interface: 
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">interface</span> INavigationContentLoader</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    IAsyncResult BeginLoad(Uri targetUri, Uri currentUri, </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        AsyncCallback userCallback, <span style="color: #0000ff">object</span> asyncState);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">void</span> CancelLoad(IAsyncResult
asyncResult);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">bool</span> CanLoad(Uri
targetUri, Uri currentUri);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    LoadResult EndLoad(IAsyncResult asyncResult);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
Because we can provide whatever functionality we want, this simple interface does
much more, we can practically do whatever we want when a user clicks on a link. Think
of actions such as the following: 
</p>
        <ul>
          <li>
The target URI could contain the name of the XAP file in which the XAML view can be
found (ex. MyXap.xap/View1.xaml). Our custom logic could check if this XAP file is
already available/downloaded on the client. If not, it can be downloaded on-demand. 
</li>
          <li>
Check that the user has permissions to see the requested URL.</li>
          <li>
Load the ViewModel corresponding to the View that is navigated to.</li>
          <li>
Pass parameters to the constructor of a page</li>
          <li>
…</li>
        </ul>
        <p>
The flow to load a page (and the corresponding calls can be seen in the interface): 
</p>
        <ul>
          <li>
A check is done using the CanLoad method if the requested page can be found. This
can be a location to handle in our own way how errors resulting from navigating to
a non-existing page are shown to the user.</li>
          <li>
The page loading process is using a cancellable asynchronous way to load pages, starting
with the BeginLoad. In the BeginLoad, we, quite logically, start the loading process. 
</li>
          <li>
Once BeginLoad started the loading process, the navigation framework waits for the
loading to be complete. Once complete, the Endload is called. In normal circumstances,
the LoadResult is a fully initialized Page that can now be displayed to the user.</li>
        </ul>
        <p>
Let’s now look at a small sample. Assume we have a service that returns, based on
the role name of the logged-in user, a list of pages the user has access to. 
</p>
        <p>
  
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">[OperationContract]</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> List&lt;SitePermission&gt;
GetAccesiblePages(<span style="color: #0000ff">string</span> roleName)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">switch</span> (roleName)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"user"</span>:</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">new</span> List&lt;SitePermission&gt;() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Home.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/About.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Products.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Admin.xaml"</span>,Allowed= <span style="color: #0000ff">false</span>}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            };</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">case</span>
              <span style="color: #006080">"administrator"</span>:</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">new</span> List&lt;SitePermission&gt;() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Home.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/About.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Products.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Admin.xaml"</span>,Allowed= <span style="color: #0000ff">true</span>}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            };</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">default</span>:</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">new</span> List&lt;SitePermission&gt;() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Home.xaml"</span>,Allowed= <span style="color: #0000ff">false</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/About.xaml"</span>,Allowed= <span style="color: #0000ff">false</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Products.xaml"</span>,Allowed= <span style="color: #0000ff">false</span>},</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> SitePermission(){PageName=<span style="color: #006080">"/Views/Admin.xaml"</span>,Allowed= <span style="color: #0000ff">false</span>}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            };</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
In our Silverlight code, we download this list upon start of the application and which
each navigation action, we check if the target URI is allowed to be accessed by the
user. Because we want to do this using the navigation application template, we need
to write a custom implementation of the page loading. 
</p>
        <p>
To do this, we start by adding a class that implements the INavigationContentLoader
interface. 
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">class</span> AutorizedPageContentLoader:INavigationContentLoader</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    ...</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
To keep things simple initially, we’ll use the default instance for the page loading
process, we’ll only change the CanLoad implementation. In the CanLoad, we need to
access the list of SitePermissions, downloaded from the service. The following code
is the service call, which was placed here in the App.xaml.cs (could be placed in
a custom bootstrapper as well):
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> ObservableCollection&lt;SitePermission&gt;
SitePermissions { get; set; }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> Application_Startup(<span style="color: #0000ff">object</span> sender,
StartupEventArgs e)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    LoadSitePermissions();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span>
              <span style="color: #0000ff">void</span> LoadSitePermissions()</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    AuthorizedPageService.AuthorizedPageLoadServiceClient client = </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">new</span> AuthorizedPageService.AuthorizedPageLoadServiceClient();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    client.GetAccesiblePagesCompleted += (s, e) =&gt;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        SitePermissions = e.Result;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">this</span>.RootVisual
= <span style="color: #0000ff">new</span> MainPage();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    };</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    client.GetAccesiblePagesAsync(<span style="color: #006080">"user"</span>);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
The CanLoad now checks this list and returns true or false based on the requested
Uri. 
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">bool</span> CanLoad(Uri
targetUri, Uri currentUri)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    var item = ((App)Application.Current).SitePermissions.</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        Where(s =&gt; s.PageName == targetUri.ToString()).FirstOrDefault();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">if</span> (item
!= <span style="color: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> item.Allowed;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">false</span>;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
The BeginLoad, EndLoad and CancelLoad can be handled using the default instance of
the page loading process: 
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">private</span> PageResourceContentLoader
_loader = <span style="color: #0000ff">new</span> PageResourceContentLoader();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> IAsyncResult
BeginLoad(Uri targetUri, Uri currentUri, </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    AsyncCallback userCallback, <span style="color: #0000ff">object</span> asyncState)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> _loader.BeginLoad(targetUri,
currentUri, userCallback, asyncState);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}        </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">void</span> CancelLoad(IAsyncResult
asyncResult)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    _loader.CancelLoad(asyncResult);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">public</span> LoadResult
EndLoad(IAsyncResult asyncResult)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">return</span> _loader.EndLoad(asyncResult);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
The final thing we need to do is of course making sure that our content loader implementation
is used by the navigation frame. 
</p>
        <p>
 
</p>
        <div id="codeSnippetWrapper">
          <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">navigation:Frame</span>
              <span style="color: #ff0000">x:Name</span>
              <span style="color: #0000ff">="ContentFrame"</span>
              <span style="color: #ff0000">Style</span>
              <span style="color: #0000ff">="{StaticResource
ContentFrameStyle}"</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">Source</span>
              <span style="color: #0000ff">="/Home"</span>
              <span style="color: #ff0000">Navigated</span>
              <span style="color: #0000ff">="ContentFrame_Navigated"</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #ff0000">NavigationFailed</span>
              <span style="color: #0000ff">="ContentFrame_NavigationFailed"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">navigation:Frame.UriMapper</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">uriMapper:UriMapper</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">uriMapper:UriMapping</span>
              <span style="color: #ff0000">Uri</span>
              <span style="color: #0000ff">=""</span>
              <span style="color: #ff0000">MappedUri</span>
              <span style="color: #0000ff">="/Views/Home.xaml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">uriMapper:UriMapping</span>
              <span style="color: #ff0000">Uri</span>
              <span style="color: #0000ff">="/{pageName}"</span>
              <span style="color: #ff0000">MappedUri</span>
              <span style="color: #0000ff">="/Views/{pageName}.xaml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">uriMapper:UriMapper</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">navigation:Frame.UriMapper</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">navigation:Frame.ContentLoader</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">local:AutorizedPageContentLoader</span>
              <span style="color: #0000ff">&gt;&lt;/</span>
              <span style="color: #800000">local:AutorizedPageContentLoader</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">navigation:Frame.ContentLoader</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">navigation:Frame</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
When the user now navigates to the Admin page (which is not allowed), the navigation
will not be allowed. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TheINavigationContentLoaderinterfaceinSi_AD74/clip_image002_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TheINavigationContentLoaderinterfaceinSi_AD74/clip_image002_thumb.jpg" width="440" height="211" />
          </a>
          <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a1b8aa72-8f44-4d66-9811-ddcb82fda7fc" />
          <br />
          <hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>First web camp being organized in Belgium on January 24th</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/16/First+Web+Camp+Being+Organized+In+Belgium+On+January+24th.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,8616b56e-5664-44ee-be91-3ba0094102b0.aspx</id>
    <published>2010-12-16T04:01:38.473-05:00</published>
    <updated>2010-12-16T04:03:35.1451942-05:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
OK, now what is a webcamp then? 
<br /><a href="http://www.webcamps.ms/">Microsoft Web Camps</a> are free events that allow
you to learn and build on the Microsoft Web Platform. Good news: <strong>Web Camps
are coming to Belgium!</strong></p>
        <p>
The Belgian Web Camp event on 24th of January 2011 is a full-day event where will
hear from Microsoft experts on the latest components of the platform, including <a href="http://www.asp.net/mvc">ASP.NET
MVC 3</a>, jQuery, <a href="http://msdn.microsoft.com/scriptjunkie/">HTML5</a>, <a href="http://www.odata.org/developers">OData</a> and <a href="http://www.microsoft.com/web/webmatrix/">WebMatrix</a>. 
<br /><strong>Scott Hanselman</strong> is doing a two-hour keynote together with <strong>James
Senior. I’ll be doing the oData and JQuery sessions and Katrien De Graeve is doing
the HTML5 talk</strong>. 
</p>
        <p>
          <strong>Two options to registering for the event:</strong>
        </p>
        <ol>
          <li>
Register to attend in-person: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032472434&amp;Culture=en-US">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032472434&amp;Culture=en-US</a></li>
          <li>
Register for the keynote live stream and see how you <strong>could have free breakfast</strong> delivered
to your company: <a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032472819&amp;EventCategory=2&amp;culture=en-US&amp;CountryCode=US">https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032472819&amp;EventCategory=2&amp;culture=en-US&amp;CountryCode=US</a></li>
        </ol>
        <p>
          <strong>Location:</strong> Business Faculty 
<br /><a href="http://www.bing.com/maps/explore/?org=aj#5003/0.6002=q:Font+Saint+Landry+6,+Brussels:nelat:50.9168893442459:nelong:4.41648563507079:swlat:50.9006786557541:swlong:4.37657436492919:nosp:0:adj:0/5872/style=auto&amp;lat=50.908784&amp;lon=4.39653&amp;z=16&amp;pid=5874">St.
Lendriksborre 6 / Font Saint Landry 6</a><br />
Brussel - Neder over Heembeek 1120 
<br />
Belgium 
<br /><strong>Timing:</strong> Monday 24 January 2011 – 8:30 to 17:00 
</p>
        <p>
          <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032472434&amp;Culture=en-US">
            <img title="WebCamps_signature_v2 (2)" border="0" alt="WebCamps_signature_v2 (2)" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-95-94-metablogapi/4745.WebCamps_5F00_signature_5F00_v2-_2800_2_29005F00_3.jpg" width="451" height="183" />
          </a>
        </p>
        <p>
          <strong>
            <em>Full agenda:</em>
          </strong>
        </p>
        <p>
          <b>8:30 </b>
          <b>9:00</b>
        </p>
        <p>
Welcome and registration 
</p>
        <p>
          <b>9:00-</b>
          <b>11:00</b>
        </p>
        <p>
          <b>Opening Keynote by Scott Hanselman and James Senior on ASP.NET MVC 3 and WebMatrix</b>
        </p>
        <p>
          <b>11:00-</b>
          <b>11:30</b>
        </p>
        <p>
          <i>Coffee Break</i>
        </p>
        <p>
          <b>11:30-</b>
          <b>12:30</b>
        </p>
        <p>
          <b>HTML5: How about today? (Katrien De Graeve)</b>
        </p>
        <p>
What is HTML5? With more and more browsers supporting HTML5, ECMAScript 5 and other
web standards, developers now have a strong web platform they can use to create a
new class of web application that is more powerful and interactive than ever before.
What's in HTML5 that lets us take our sites to the next level? 
<br />
Expect demos and code! 
</p>
        <p>
          <b>12:30-</b>
          <b>13:30</b>
        </p>
        <p>
          <i>Lunch</i>
        </p>
        <p>
          <b>13:30-</b>
          <b>14:45</b>
        </p>
        <p>
          <b>Come in as jQuery zero, go out as jQuery hero (Gill Cleeren)</b>
        </p>
        <p>
jQuery is the web developers’ new favorite. This lightweight JavaScript library has
developers writing JavaScript code again, and loving it! What previously needed 20
lines of code can now be done in just 3 lines. Who wouldn’t be enthusiastic? Microsoft
showed its love for the library by fully integrating it in Visual Studio. I dare to
ask: should you stay behind? In this session, we’ll take a look at jQuery and we’ll
teach you what you need to know to get you on your way. More specifically, we’ll look
at selectors, attributes, working with WCF, jQuery UI, and much more. You could easily
walk out of this session wearing a sticker: “I love jQuery”! 
</p>
        <p>
          <b>14:45-</b>
          <b>15:15</b>
        </p>
        <p>
          <i>Coffee Break</i>
        </p>
        <p>
          <b>15:15-</b>
          <b>16:30</b>
        </p>
        <p>
          <b>Oh, look at that data: using oData to expose your data over the web (Gill Cleeren)</b>
        </p>
        <p>
While applications, sites, tools all generate tons of useful data, it is sometimes
hard to access that data from your own application. To increase the shared value of
data, Microsoft has introduced the Open Data protocol. Using Open Data, we can expose
any data source as a web-friendly data feed. 
<br />
In this session, we'll start by looking at oData, to make sure that everyone is on
board with all the concepts. We'll see how it adds value for the developer and the
end user for many of Microsoft's products and services. We'll then look at how we
can build our own oData services using WCF Data Services, from working with the basic
concepts to more advanced features such as query interceptors and service operations. 
<br />
Come and learn about information and entity services that are stunning in their simplicity! 
</p>
        <p>
          <b>16:30-</b>
          <b>17:30</b>
        </p>
        <p>
          <i>Closing drink</i>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8616b56e-5664-44ee-be91-3ba0094102b0" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for SilverlightShow webinar</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/12/16/Slides+And+Demos+For+SilverlightShow+Webinar.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ad3c07f0-f9fb-4525-b9a1-40983899aef7.aspx</id>
    <published>2010-12-16T03:32:39.565-05:00</published>
    <updated>2010-12-16T03:49:17.6875942-05:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I did another webinar for SilverlightShow titled “Building a Silverlight
application end-to-end”. During the presentation (which took about 90 minutes), we
had over 200 people attending which was great!
</p>
        <p>
The goal of the presentation was giving an overview of topics that developers will
encounter when building real world applications with the Silverlight platform:
</p>
        <ol>
          <li>
SketchFlow 
</li>
          <li>
WCF RIA Services 
</li>
          <li>
Data binding &amp; DataGrid 
</li>
          <li>
MVVM 
</li>
          <li>
MEF 
</li>
          <li>
Commanding &amp; behaviors 
</li>
          <li>
Messaging, navigation &amp; dialogs 
</li>
          <li>
Custom controls &amp; third party controls 
</li>
          <li>
OOB 
</li>
          <li>
Printing 
</li>
        </ol>
        <p>
A video will be available shortly, meanwhile, you can already download the slides
and demos here:<br /><a href="http://www.snowball.be/data/presentations/silverlightshow/EndToEndSlides.zip">Slides</a> - <a href="http://www.snowball.be/data/presentations/silverlightshow/DemoEndToEnd.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ad3c07f0-f9fb-4525-b9a1-40983899aef7" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos from my very first TechEd talk</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/11/11/Slides+And+Demos+From+My+Very+First+TechEd+Talk.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,445c3a52-e62c-4416-9855-fa49e809177e.aspx</id>
    <published>2010-11-11T03:00:11.1348171-05:00</published>
    <updated>2010-11-11T03:00:11.1348171-05:00</updated>
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="TechEd" label="TechEd" scheme="http://www.snowball.be/CategoryView,category,TechEd.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I got to do my very first presentation ever at TechEd Europe. The title
of the session was "What you as an ASP.NET developer need to know about jQuery". The
focus of the talk was of course jQuery and where it can be used in combination with
the ASP.NET platform, both WebForms and ASP.NET MVC. More specifically, I covered
the following topics:
</p>
        <p>
Why jQuery? 
<br />
jQuery fundamentals 
<br />
Creating and manipulating elements 
<br />
Events 
<br />
Animations and effects 
<br />
Talking to the server 
<br />
jQuery UI 
<br />
Writing plugins 
<br />
Breaking news around new releases 
<br />
Using the CDN
</p>
        <p>
The room was full with over 350 attendees and I got some great feedback. Thanks to
all people that visited my talk, really appreciated. 
</p>
        <p>
As promised, here are the slides and ALL the demos (including the ones I did not talk
about in the session):<br /><a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/TechEd/Slides.zip">Slides</a><br /><a href="http://cid-bd64f22e01fad982.office.live.com/self.aspx/TechEd/Demos.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=445c3a52-e62c-4416-9855-fa49e809177e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>And they lived happily ever after: Silverlight is here to stay (Part 2)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/11/01/And+They+Lived+Happily+Ever+After+Silverlight+Is+Here+To+Stay+Part+2.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,283a8d34-4767-4b8a-a3bd-6f133bde5a4b.aspx</id>
    <published>2010-11-01T16:27:19.2518715-04:00</published>
    <updated>2010-11-01T16:27:19.2518715-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Now that PDC10 is over and after rumors (mostly because people saw “things” in an
article that weren’t there at all by the way), Microsoft has officially made clear
to the world that it is fully committed to Silverlight, that it keeps investing heavily
in the platform, that there will be future versions, that Belgium finally has a government
(got you there ;) ) and thus Silverlight is all but dead! 
</p>
        <p>
          <strong>Don’t take it from me of course, but start by reading the statements made
by </strong>
          <a href="http://team.silverlight.net/announcement/pdc-and-silverlight/">
            <strong>Bob
Muglia</strong>
          </a>
          <strong> and </strong>
          <a href="http://www.microsoft.com/presspass/press/2010/nov10/11-01Statement.mspx">
            <strong>Steve
Ballmer</strong>
          </a>
          <strong>. </strong>
        </p>
        <p>
In short, we can easily say (as mentioned in my previous post) and confirm once again
that all your investments in Silverlight are safe. If you planned (part of) your career
betting on Silverlight, it’s a great bet and one that won’t let you down. In fact,
you’ll start seeing more and more return of your investments in the coming time. Take
for example Windows Phone 7, which is (almost) here. Over a 1000 (!) apps are already
in the store and many more are on their way. Most of them being Silverlight of course! 
</p>
        <p>
Back to my statements around HTML5 and Silverlight. Taking a look at the final paragraph
in Bob Muglia’s post:<br /><em>The purpose of Silverlight has never been to replace HTML, but rather to do the
things that HTML (and other technologies) can’t, and to do so in a way that’s easy
for developers to use.  Silverlight enables great client app and media experiences. 
<br /></em>As said, Silverlight is aimed at things HTML is not intended for: business apps.
Sites are great with HTML, and can be built with Silverlight. Apps are great with
Silverlight but can be built (most of the time…) with HTML. Each has its function
and they will co-exist. 
</p>
        <p>
I really hope that all this clarifies things for everyone, including developers and
customers. Should you have questions, please don’t hesitate to contact me.
</p>
        <p>
Some other interesting articles on this: 
</p>
        <ul>
          <li>
            <a title="http://johnpapa.net/silverlight/silverlight-tv-50-scott-guthrie-discusses-the-state-of-silverlight/" href="http://johnpapa.net/silverlight/silverlight-tv-50-scott-guthrie-discusses-the-state-of-silverlight/">http://johnpapa.net/silverlight/silverlight-tv-50-scott-guthrie-discusses-the-state-of-silverlight/</a>
          </li>
          <li>
            <a title="http://timheuer.com/blog/archive/2010/11/01/silverlight-is-dead-long-live-silverlight.aspx" href="http://timheuer.com/blog/archive/2010/11/01/silverlight-is-dead-long-live-silverlight.aspx">http://timheuer.com/blog/archive/2010/11/01/silverlight-is-dead-long-live-silverlight.aspx</a>
          </li>
        </ul>
        <p>
(More added later)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=283a8d34-4767-4b8a-a3bd-6f133bde5a4b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight will stay, don’t worry</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/31/Silverlight+Will+Stay+Dont+Worry.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f593435e-612f-473f-88e7-4d6225b23171.aspx</id>
    <published>2010-10-30T20:29:50.846-04:00</published>
    <updated>2010-11-01T05:19:23.6589285-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been quite late reading all the buzz that appeared after Mary-Jo Foley wrote
an article titled “<a href="http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834">Microsoft:
Our strategy with Silverlight has shifted</a>”. Basically, if you don’t want to read
it, it comes down to a few things:
</p>
        <ul>
          <li>
No Silverlight being shown in the PDC keynote, only HTML5 
</li>
          <li>
She asking Bob Muglia how Microsoft sees Silverlight evolving 
</li>
          <li>
Bob Muglia responding 
<p><em>“</em><em>Silverlight is our development platform for Windows Phone</em><em>,”
he said. Silverlight also has some “sweet spots” in media and line-of-business applications,
he said.</em></p><p><em>But when it comes to touting Silverlight as Microsoft’s vehicle for delivering
a cross-platform runtime, “our strategy has shifted,” Muglia told me.</em></p><p><em>Silverlight will continue to be a cross-platform solution, working on a variety
of operating system/browser platforms, going forward, he said. “But HTML is the only
true cross platform solution for everything, including (Apple’s) iOS platform,” Muglia
said.<br /></em></p></li>
        </ul>
        <p>
Of course, this triggered a lot of reaction and it’s quite funny to follow on Twitter
(#silverlight). But more about that in a minute, first some background is in place
I guess.
</p>
        <p>
          <strong>HTML 5 and Silverlight<br /></strong>You won’t hear me denying that HTML5 will be big… some day. While most browsers
are starting to implement HTML5 features, the standard is far far (x100) away. It
could take years before there’s a standard. Years you say? Yes indeed. Years in this
sector is like decades in other industries. That means things will change. Denying
that would be foolish. While betting early is a good thing, there’s something like
too early as well. That said, HTML5, like HTML4 is still a markup language. Yes it
can now create games where dozens of fish swim around (that won’t be my next LOB app
probably but anyway). Yes it has the Canvas and a lot of other goodness. Did I say
it will be great?
</p>
        <p>
On the other hand, we have Silverlight. Today in version 4, so that’s mature. It is
today helping thousands of developers building great (LOB) applications (without swimming
fish). It will evolve (why wouldn’t it) and there’s no need to wait years for an updated
version (Microsoft has released 4 versions of Silverlight in 3 years!), so if changing
needs come around, it’s easy to add them to the platform.
</p>
        <p>
          <strong>And then came PDC2010<br /></strong>While not many where creating an issue out of the fact that several technologies
(Silverlight, Flash, HTML5) were growing steadily next to one another, a few weeks
back, things started to shake a bit and then all of a sudden, PDC2010 came along and
now everyone thinks Microsoft will abandon Silverlight.
</p>
        <p>
In fact, Microsoft is saying that some stuff they previously thought you should do
in Silverlight, you should do in HTML5. That’s not a big deal. I’ve always (like many
other Silverlight developers) been of the idea that Silverlight should not (in many
cases) be used to build entire internet sites with (I haven’t built my blog in Silverlight,
did I?). When using Silverlight (and the same goes for Flash here) in internet scenarios,
it’s often better to have “islands of Silverlight”, parts of the page in Silverlight
that is. Look at what Shawn says <a href="http://wildermuth.com/2010/10/30/Post-PDC_HTML5_v_Silverlight_Debate">here</a>: 
</p>
        <blockquote>
          <p>
            <strong>Silverlight is good for Apps; HTML is good for sites.</strong>
          </p>
        </blockquote>
        <p>
I totally agree. It depends on what you need to build, but that’s just what makes
that we need all the technologies, not one! Are you going to build real business apps
using JavaScript? OK, you CAN do it (there are some large ones out there, I’ve been
on the internet…). But by the time you are done writing your app with JavaScript,
I’ll be enjoying some vacation probably, because I could enjoy the strengths of my
managed language that sits behind Silverlight. 
</p>
        <p>
Also, Microsoft is pushing Silverlight for devices and WP7. It’s brother, WPF, is
alive and kicking (although again a small group thinks it’s dead as well). 
</p>
        <p>
          <strong>Where does that leave us now?<br /></strong>If you invested in Silverlight, don’t worry. Silverlight is here today and
it will be here tomorrow as well. Never done any Silverlight yet, well then there’s <strong>no
better time to start than now</strong>. Silverlight is <strong>mature</strong> and
can be the next best thing to build your apps with. Learn HTML5 as well, as that will
be big as well. And perhaps, you can combine both to build <strong>even better sites
AND apps</strong>. 
</p>
        <p>
          <strong>The only thing that changed is how Microsoft positions Silverlight. But we
knew that already months ago with the Team Silverlight article: </strong>
          <a href="http://team.silverlight.net/announcement/the-future-of-silverlight/">
            <strong>http://team.silverlight.net/announcement/the-future-of-silverlight/</strong>
          </a>
          <strong> .
No one said Microsoft is quitting on Silverlight. Please remember that!</strong>
        </p>
        <p>
There’s a lot of people trying to put Silverlight in a bad situation. Most of these
have no idea what Silverlight is or they are afraid of the power of Silverlight. I
do think it’s funny how some magazines also bend the words from MJF’s article even
more and come up with titles that are just there to make some more money from their
advertising contract (One known site I won't mention by name even deleted my
nuanced reply, so far for honest journalism!).
</p>
        <p>
Some other interesting articles:
</p>
        <ul>
          <li>
            <a title="http://csharperimage.jeremylikness.com/2010/10/so-whats-fuss-about-silverlight.html" href="http://csharperimage.jeremylikness.com/2010/10/so-whats-fuss-about-silverlight.html">http://csharperimage.jeremylikness.com/2010/10/so-whats-fuss-about-silverlight.html</a>
          </li>
          <li>
            <a title="http://blog.nerdplusart.com/archives/silverlight-and-html5-and-your-future" href="http://blog.nerdplusart.com/archives/silverlight-and-html5-and-your-future">http://blog.nerdplusart.com/archives/silverlight-and-html5-and-your-future</a>
          </li>
          <li>
            <a title="http://wildermuth.com/2010/10/30/Post-PDC_HTML5_v_Silverlight_Debate" href="http://wildermuth.com/2010/10/30/Post-PDC_HTML5_v_Silverlight_Debate">http://wildermuth.com/2010/10/30/Post-PDC_HTML5_v_Silverlight_Debate</a>
          </li>
          <li>
            <a href="http://blog.galasoft.ch/archive/2010/10/30/my-position-on-the-silverlight-debate.aspx">http://blog.galasoft.ch/archive/2010/10/30/my-position-on-the-silverlight-debate.aspx</a>
          </li>
        </ul>
        <p>
Feel free to comment (I won’t delete your comment ;-) ) !
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f593435e-612f-473f-88e7-4d6225b23171" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for Silverlight Show webinar</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/27/Slides+And+Demos+For+Silverlight+Show+Webinar.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0b76f867-a3a6-486e-b866-cd7a3fc5ea6c.aspx</id>
    <published>2010-10-27T16:23:57.782-04:00</published>
    <updated>2010-10-27T16:45:22.4486306-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On Wednesday October 27th, I gave a webinar for SilverlightShow.net. The topic in
this webinar was 10 tips in Silverlight 4. The video will be online soon. Meanwhile,
you can already take a look at the slides and demos below.
</p>
        <p>
          <a href="http://www.snowball.be/data/presentations/silverlightshow/SilverlightShow10TipsinSilverlight4.zip">Slides</a> – <a href="http://www.snowball.be/data/presentations/sdc2010/10Tips.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0b76f867-a3a6-486e-b866-cd7a3fc5ea6c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My slides and demos for SDC2010</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/27/My+Slides+And+Demos+For+SDC2010.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,cff76d77-d7ae-4615-8246-6027f91ecbfb.aspx</id>
    <published>2010-10-27T16:23:42.728-04:00</published>
    <updated>2010-10-27T16:43:30.7547786-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last Monday, I was for the very first time at SDC in The Netherlands, the conference
organized by the people behind SDN. I gave 2 presentations there, you can download
the slides and demos below.
</p>
        <p>
Silverlight 4 Tour de Force with a little WPF 4 sauce on top: <a href="http://www.snowball.be/data/presentations/sdc2010/Silverlight4WPF.zip">Slides</a> – <a href="http://www.snowball.be/data/presentations/sdc2010/SL4WP4demos.zip">Demos</a></p>
        <p>
Silverlight 4 Tips and tricks: <a href="http://www.snowball.be/data/presentations/sdc2010/10TipsinSilverlight4.zip">Slides</a> – <a href="http://www.snowball.be/data/presentations/sdc2010/10Tips.zip">Demos</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=cff76d77-d7ae-4615-8246-6027f91ecbfb" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>PDC 10: watch the keynote live</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/27/PDC+10+Watch+The+Keynote+Live.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,071cc5e4-cd29-4357-bc54-30f345be59ff.aspx</id>
    <published>2010-10-27T15:54:09.5885252-04:00</published>
    <updated>2010-10-27T15:54:09.5885252-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="PDC" label="PDC" scheme="http://www.snowball.be/CategoryView,category,PDC.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The upcoming PDC, which starts tomorrow, is probably the most unique one ever. While
there are only a 1000 attendees possible AND the event is taking place in Redmond,
more people than even will be able to watch it live. This is truly the first world-wide
PDC.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/PDC10watchthekeynotelive_13401/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/PDC10watchthekeynotelive_13401/image_thumb.png" width="204" height="62" />
          </a>
        </p>
        <p>
If you want to watch the keynote live, you can do so using <b><a href="http://bit.ly/akeK7Q">http://bit.ly/akeK7Q</a></b> . 
<br />
Also, you can join us at the Microsoft building where we are holding a local PDC event
(Visug and Microsoft). Still a few seats open here so register if you want to join
via <a title="EventDetail.aspx-EventID=1032463933&amp;Culture=en-US" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032463933&amp;Culture=en-US">EventDetail.aspx-EventID=1032463933&amp;Culture=en-US</a> . 
<br />
More on PDC here in the coming days of course!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=071cc5e4-cd29-4357-bc54-30f345be59ff" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Firestarter on December 2nd</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/25/Silverlight+Firestarter+On+December+2nd.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a866dca3-e710-4749-8b38-84fa4e87b934.aspx</id>
    <published>2010-10-25T18:04:35.296816-04:00</published>
    <updated>2010-10-25T18:04:35.296816-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>Light up your Silverlight skills with the all-new Global Silverlight Firestarter!</strong>
        </p>
        <p>
          <strong>
            <a href="http://jpapa.me//slfs10">
              <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="SLFirestarter_300X250" border="0" alt="SLFirestarter_300X250" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightFirestarteronDecember2nd_113/SLFirestarter_300X250_3.jpg" width="244" height="204" />
            </a>
          </strong>
        </p>
        <p>
          <strong>
            <em>
            </em>
          </strong>
        </p>
        <p>
          <strong>
            <em>What is the Silverlight Firestarter?</em>
          </strong>
        </p>
        <p>
-          <strong>An Event: </strong>A
one day, global, live streamed and on demand event keynoted by Scott Guthrie 
</p>
        <p>
-          <strong>Training:</strong> New
self-paced labs and walk through videos 
</p>
        <p>
-          <strong>Interactive: </strong>Got
questions? Get your answers! Watch live and ask the Silverlight product team questions
during the event. 
</p>
        <p>
-          <strong>Why Silverlight? </strong>Silverlight
is Microsoft’s strategic development platform for building interactive applications
across desktop, phone, and the browser. 
</p>
        <p>
          <strong>
            <em>
            </em>
          </strong>
        </p>
        <p>
          <strong>
            <em>Something for Everyone</em>
          </strong>
        </p>
        <p>
-          <strong>Just starting out
with Silverlight?</strong> Watch our On-Ramp sessions and work on hands on labs to
get you started. 
</p>
        <p>
-          <strong>Already Building business
applications?</strong> Watch the event live and learn how to create compelling business
applications with Silverlight. 
</p>
        <p>
-          <strong>Got questions?</strong> Engage
with the Silverlight product team live or in person with our interactive chat. 
</p>
        <p>
          <strong>
            <em>When</em>
          </strong>
          <br />
          <strong>
            <em>Register</em>
          </strong>
          <br />
          <strong>
            <em>How Much?</em>
          </strong>
        </p>
        <p>
December 2, 2010 8am to 5pm PT<em></em><br /><a href="http://jpapa.me/slfs10"><strong>Register Online, Now!</strong></a><br />
Nothing! This is a free event<strong><em></em></strong></p>
        <p>
          <strong>
            <em>After the live event keep fueling the fire! </em>
          </strong>
        </p>
        <p>
Dive deeper with additional hands on labs and videos that build on the live session
content, accelerating you ahead of the crowd. 
</p>
        <p>
-          Watch the entire event on
demand! 
</p>
        <p>
-          Plus, new self-paced labs
and walk through videos 
</p>
        <p>
-          On Ramp Labs (100 level) 
</p>
        <ul>
          <li>
Hands on labs specifically focused on helping new developers get up to speed quickly
on Silverlight 
</li>
          <li>
Do you know WinForms? HTML? ASP.NET? Want to learn Silverlight? We have a lab for
you!</li>
        </ul>
        <p>
-          Building Better Business Apps
(200-300 level) 
</p>
        <ul>
          <li>
Hands on labs focused on taking advantage of Silverlight to build real world business
applications 
</li>
          <li>
Apply Data Strategies, Patterns, Out of Browser, RIA Services, and much more using
Silverlight</li>
        </ul>
        <p>
-          <strong>Turnabout is fair
play</strong>! Watch a video of our experts doing the labs themselves. 
</p>
        <p>
          <strong>
            <em>
            </em>
          </strong>
        </p>
        <p>
          <strong>F I R E S T A R T E R     L I V E    
A G E N D A </strong>
        </p>
        <p>
          <strong>8:00 am<br /></strong>Silverlight Firestarter Keynote<br />
Scott Guthrie 
</p>
        <p>
          <strong>9:00 am<br /></strong>Masterful Data Strategies with Silverlight and WP7<br />
Jesse Liberty 
</p>
        <p>
          <strong>10:00 am<br /></strong>15 minute break 
</p>
        <p>
          <strong>10:15 am<br /></strong>Roll Out Your Business Apps Today with RIA Services<br />
Pete Brown 
</p>
        <p>
          <strong>11:15 am<br /></strong>MVVM: Why and How? Tips and Patterns using MVVM and Service Patterns<br />
John Papa 
</p>
        <p>
          <strong>12:15 pm<br /></strong>Lunch break 
</p>
        <p>
          <strong>1:00 pm<br /></strong>Silverlight Today and Tomorrow (Special Guest Panel)<br />
Panel 
</p>
        <p>
          <strong>1:30 pm<br /></strong>Building Real World Silverlight Apps<br />
Tim Heuer 
</p>
        <p>
          <strong>2:30 pm<br /></strong>15 minute break 
</p>
        <p>
          <strong>2:45 pm<br /></strong>Tune Your Application: Profiling and Performance Tips<br />
Mike Cook &amp; Jossef Goldberg 
</p>
        <p>
          <strong>3:45 pm<br /></strong>Killer Performance Tips for Silverlight Windows Phone 7<br />
Jaime Rodriguez 
</p>
        <p>
After Party! 
</p>
        <p>
        </p>
        <p>
          <strong>
            <em>
            </em>
          </strong>
        </p>
        <strong>
          <em>Spread the Word! </em>
        </strong>
        <p>
-          Blog and tweet to spread the
word about the Firestarter! 
</p>
        <p>
-          Ask people to add the Twitter
hash tag <strong>#slfs10</strong> to their tweets 
</p>
        <p>
-          Use the banners and blog bling
(attached) 
</p>
        <p>
          <strong>
            <em>Questions</em>
          </strong>
        </p>
        <p>
Got questions? Ask <a href="mailto:slfs@microsoft.com"><strong>slfs@microsoft.com</strong></a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a866dca3-e710-4749-8b38-84fa4e87b934" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Upcoming webinar: 10 tips in Silverlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/25/Upcoming+Webinar+10+Tips+In+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,bcb2a2c7-7aa7-4845-8031-135ce109b221.aspx</id>
    <published>2010-10-25T17:47:24.312643-04:00</published>
    <updated>2010-10-25T17:47:24.312643-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This Wednesday, on October 27th, I’ll be doing another webinar for SilverlightShow.net.
Like always, these are free to attend. The topic for this webinar is <strong>“10 Tips
in Silverlight”</strong>. If you attend, you can win a copy of my book, <a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" target="_blank">Silverlight
4 data and services cookbook</a> (which keeps getting <a href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844" target="_blank">great
reviews</a> by the way :) ).
</p>
        <p>
The tips that you’ll see are the following:
</p>
        <ol>
          <li>
Behaviors 
</li>
          <li>
PathListBox 
</li>
          <li>
Binding tricks 
</li>
          <li>
INavigationContentLoader 
</li>
          <li>
Debugging services 
</li>
          <li>
Securing service communication 
</li>
          <li>
Leveraging ASP.NET membership 
</li>
          <li>
Uploading and downloading files 
</li>
          <li>
Downloading functionality on-demand 
</li>
          <li>
Bag of tricks</li>
        </ol>
        <p>
Registration is free but required, you can register <a href="http://www.silverlightshow.net/news/Upcoming-Webinar-with-Gill-Cleeren-10-things-you-didn-t-know-about-Silverlight-4.aspx" target="_blank">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bcb2a2c7-7aa7-4845-8031-135ce109b221" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Show: MEF webcast view on-demand</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/20/Silverlight+Show+MEF+Webcast+View+Ondemand.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c8d17fcd-16d7-45bd-8ac6-25e24119cf06.aspx</id>
    <published>2010-10-20T02:35:44.6939608-04:00</published>
    <updated>2010-10-20T02:35:44.6939608-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, I did a webcast on MEF (Managed Extensibility Framework) for SilverlightShow.net,
one of the largest Silverlight communities. The webcast is now online and can be viewed
on-demand <a href="http://www.silverlightshow.net/shows/MEF-Webinar.aspx" target="_blank">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c8d17fcd-16d7-45bd-8ac6-25e24119cf06" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>View the REMIX10 sessions and interviews online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/20/View+The+REMIX10+Sessions+And+Interviews+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,58005694-e69e-4f67-a90a-3c6d4a837705.aspx</id>
    <published>2010-10-20T02:30:41.607-04:00</published>
    <updated>2010-10-20T02:32:48.1677556-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Haven’t had the chance to attend the Belgian REMIX10 this year? Or you were there
but of course could see all the parallel sessions at once? Then, I have the ideal
solution for you: all sessions and interviews can now be watched online from <a href="http://www.remix10.be">www.remix10.be</a>. 
</p>
        <p>
Here are my interview and session:<br /><a href="http://channel9.msdn.com/Blogs/katriendg/REMIX10-Interview-Gill-Cleeren-on-Building-a-Silverlight-4-Application-End-to-End">Interview</a><br /><a href="http://channel9.msdn.com/Blogs/katriendg/REMIX10-Building-a-Silverlight-4-Application-End-to-End">Session</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=58005694-e69e-4f67-a90a-3c6d4a837705" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Announcing: Silverlight Tour is coming to European countries now!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/11/Announcing+Silverlight+Tour+Is+Coming+To+European+Countries+Now.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,24a05479-aa4d-4a76-a3dd-7d510119c63c.aspx</id>
    <published>2010-10-11T09:10:14.97-04:00</published>
    <updated>2010-10-11T09:13:13.3093749-04:00</updated>
    <category term=".net 3.5" label=".net 3.5" scheme="http://www.snowball.be/CategoryView,category,net35.aspx" />
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
After some time, I’m glad to announce that the official, <strong>world-renowned </strong><a href="http://www.silverlight-tour.com/" target="_blank"><strong>Silverlight
Tour</strong></a> is coming to <strong>Belgium, the Netherlands, the UK and more countries</strong>,
organized by<strong></strong><a href="http://www.ordina.be" target="_blank"><strong>Ordina
Belgium</strong></a>. The second thing I’m glad about is that<strong> I’ll be the
instructor for this training! </strong></p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/AnnouncingSilverlightTouriscomingtoEurop_D556/SilverlightTour_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="SilverlightTour" border="0" alt="SilverlightTour" src="http://www.snowball.be/content/binary/WindowsLiveWriter/AnnouncingSilverlightTouriscomingtoEurop_D556/SilverlightTour_thumb.png" width="238" height="104" />
          </a>
        </p>
        <p>
The most important link for all this: <a href="http://bit.ly/SilverlightTour"><strong>http://bit.ly/SilverlightTour</strong></a>,
where you can find all <strong>information, registration and prices</strong>. Currently,
we have an <strong>early bird</strong> offering ending in a few weeks for the first
batch of sessions. 
</p>
        <p>
          <strong>What is Silverlight Tour?</strong>
        </p>
        <p>
The Silverlight Tour Workshop is a three-day course on Silverlight 4, given all around
the world throughout the USA, Asia and South-America. Ordina will organize the training
in several European countries starting Q4 2010. 
</p>
        <p>
The training divides the content into three distinct areas: Design, Development and
the Server-Side. Students should be able to develop Silverlight 4 applications once
attending the workshop. The Workshop is structured with a mix of didactic lessons,
demonstrations and hands-on labs. 
</p>
        <p>
Each student will leave the workshop having created several small Silverlight applications.
This variety of learning techniques will ensure that all students become proficient
in the technology quickly and in an exciting way. 
</p>
        <p>
          <strong>Key values of Silverlight Tour</strong>
        </p>
        <ul>
          <li>
Learning Silverlight from an expert in the technology 
</li>
          <li>
Hands-on labs with Visual Studio and Blend make sure you get to apply your acquired
knowledge 
</li>
          <li>
Architect Silverlight applications 
</li>
          <li>
Learn about LOB features such as data access and data binding 
</li>
        </ul>
        <p>
          <strong>Why Silverlight?</strong>
        </p>
        <p>
Silverlight is Microsoft's approach to building RIA (Rich Internet Applications).
The platform has since its introduction, taken the world by storm. Now at its fourth
iteration, Silverlight is ready for building Line-Of-Business applications, building
on the strong foundation of .NET. 
</p>
        <p>
Now is the time to learn Silverlight! Not only is Microsoft investing heavily in the
platform, but Silverlight is also the base for Windows Phone 7, Microsoft's new mobile
platform. And with WPF as the desktop variant, you can apply your knowledge on the
web, on the desktop and on mobile devices. 
</p>
        <p>
The Silverlight Tour can help you achieve the knowledge you need to start building
Silverlight applications today! 
</p>
        <p>
          <strong>Our offering</strong>
        </p>
        <p>
The Silverlight Tour comes in 2 flavors, depending on your Silverlight knowledge. 
</p>
        <p>
If you don't have any experience with Silverlight yet, the Silverlight 4 Tour workshop
is ideal for you. In this 3 day course, we are starting from scratch, teaching you
the foundation for your Silverlight endeavours. After this training, you'll feel comfortable
with the technology and can start building your own applications. 
</p>
        <p>
If you already have some experience with the platform, or you just followed the Silverlight
4 Tour, we advise you the Advanced Silverlight 4 workshop. In this 2 day training,
we'll tackle the more advanced concepts such as MVVM, advanced data access and IOC. 
</p>
        <p>
We offer the combined course (Silverlight 4 Tour Workshop + Advanced Silverlight 4
workshop) at a reduced price. <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=24a05479-aa4d-4a76-a3dd-7d510119c63c" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Telerik Silverlight Sweden roadshow was a success!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/10/11/Telerik+Silverlight+Sweden+Roadshow+Was+A+Success.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7ef87c78-e5a5-453d-9a52-dea91f2d1596.aspx</id>
    <published>2010-10-11T08:58:33.2509749-04:00</published>
    <updated>2010-10-12T09:30:43.845227-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I arrived back home after touring Sweden for a week. I gave presentations
in Malmö, Stockholm, Örebro and Götherborg. Each session was attended by a great number
of developers, all members of Swenug. The sessions were sponsored by the people at
Telerik: at each session, I got to give away some cool prices from Telerik, including
in each city a Telerik Ultimate Collection!
</p>
        <p>
Malmo pictures
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0405.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0405" border="0" alt="IMG_0405" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0405_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0406.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0406" border="0" alt="IMG_0406" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0406_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
Stockholm pictures
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0407.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0407" border="0" alt="IMG_0407" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0407_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0408.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0408" border="0" alt="IMG_0408" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0408_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0409.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0409" border="0" alt="IMG_0409" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0409_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0410.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0410" border="0" alt="IMG_0410" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0410_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
Örebro pictures
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0422.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0422" border="0" alt="IMG_0422" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0422_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0423.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0423" border="0" alt="IMG_0423" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0423_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0424.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0424" border="0" alt="IMG_0424" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0424_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0425.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0425" border="0" alt="IMG_0425" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0425_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0426.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0426" border="0" alt="IMG_0426" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0426_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0427.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0427" border="0" alt="IMG_0427" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0427_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
Göthenburg pictures
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0438.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0438" border="0" alt="IMG_0438" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0438_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0440.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0440" border="0" alt="IMG_0440" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0440_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0441.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0441" border="0" alt="IMG_0441" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0441_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0442.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0442" border="0" alt="IMG_0442" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0442_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0443.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0443" border="0" alt="IMG_0443" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0443_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0444.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0444" border="0" alt="IMG_0444" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0444_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0445.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0445" border="0" alt="IMG_0445" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0445_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0446.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0446" border="0" alt="IMG_0446" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TelerikSilverlightSwedenroadshowwasasucc_D299/IMG_0446_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
In the meantime, here are the <a href="http://www.snowball.be/data/presentations/SilverlightSweden/SilverlightRoadshow.zip" target="_blank">downloads
for the sessions</a>, including all demos and slide decks.
</p>
        <p>
I hope to be back in Sweden very soon! If you have any questions or remarks, please
let me know!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7ef87c78-e5a5-453d-9a52-dea91f2d1596" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>SiXin slide decks and demos</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/29/SiXin+Slide+Decks+And+Demos.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,066b1150-d0e7-405f-a52b-87e84514737f.aspx</id>
    <published>2010-09-29T04:43:21.6276158-04:00</published>
    <updated>2010-09-29T04:43:21.6276158-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I totally forgot to upload these to my blog :)
</p>
        <p>
Anyway, this is the <a href="http://www.snowball.be/data/presentations/sixin/Sixin.zip" target="_blank">slide
deck and the demos</a> for my talks at SiXin (the Silverlight and User Experience
user group) in the Netherlands two weeks back.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=066b1150-d0e7-405f-a52b-87e84514737f" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>ReMix 2010 demo and slide deck</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/29/ReMix+2010+Demo+And+Slide+Deck.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,19597a9a-f3a4-4959-8677-e66cc5d10a55.aspx</id>
    <published>2010-09-29T04:20:40.044-04:00</published>
    <updated>2010-09-29T04:30:42.4692158-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="ppt" label="ppt" scheme="http://www.snowball.be/CategoryView,category,ppt.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I gave a presentation at ReMix 2010 in Belgium, the third edition of this
annual Microsoft event. My talk, Building an end-to-end Silverlight 4 application
– Writing your Christmas Cards with Silverlight, was focused around the new and existing
features in Silverlight 4, helping developers building Silverlight Line-Of-Business
applications. These included data access, data binding, hardware access, drag and
drop, right-clicking, Out-Of-Browser and Trusted applications.
</p>
        <p>
The slide deck can be downloaded <a href="http://www.snowball.be/data/Presentations/ReMix2010/ReMix 2010 - Building an end-to-end Silverlight 4 application.pptx" temp_href="http://www.snowball.be/data/Presentations/ReMix2010/ReMix 2010 - Building an end-to-end Silverlight 4 application.pptx">here</a> and
the entire demo can be found <a href="http://www.snowball.be/data/presentations/ReMix2010/TDD.ChristmasCreator.zip">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=19597a9a-f3a4-4959-8677-e66cc5d10a55" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Announcing .NET Show, the Belgian podcast for .NET developers</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/26/Announcing+NET+Show+The+Belgian+Podcast+For+NET+Developers.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,2b930ec4-f371-4a35-91ad-ae1091dfacc7.aspx</id>
    <published>2010-09-26T17:50:36.8178383-04:00</published>
    <updated>2010-09-26T17:50:36.8178383-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term=".NET Show" label=".NET Show" scheme="http://www.snowball.be/CategoryView,category,NETShow.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <category term="Windows Azure" label="Windows Azure" scheme="http://www.snowball.be/CategoryView,category,WindowsAzure.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/image_3.png" width="656" height="186" />
        </p>
        <p>
Dear readers, I’m excited to announce the launch of <a href="http://www.dotnetshow.be/" target="_blank"><strong>.NET
Show</strong></a>, the <strong>Belgian podcast for .NET developers</strong>. I’ve
been working on this project for some time now and today, we are launching <a href="http://www.dotnetshow.be/" target="_blank">the
site</a> AND <a href="http://www.dotnetshow.be/post/Show-1-The-one-with-Maarten-Balliauw-and-Windows-Azure.aspx" target="_blank">the
first episode</a>!
</p>
        <p>
          <strong>What is .NET Show?</strong>
        </p>
        <p>
Together with Katrien De Graeve, I’ll be recording podcasts on .NET development (in
the broad sense of the word, so everything related to .NET) from now on. Our goal
is bringing you in contact with all corners of the Microsoft development stack, from
Silverlight to Azure, from COM interop to ALM... In our podcasts, we are focusing
(initially at least) on local guests and we will be doing most shows in Dutch. This
way, we can differentiate ourselves from the numerous podcasts already available.
The topics, while on .NET of course, can be something that the guests has been working
on (a professional project, a hobby project), a technology you have been investigating,
something you think that can be interesting for others to hear about etc.
</p>
        <p>
The first first episode can be downloaded already. In this first episode, we are talking
with Maarten Balliauw on Windows Azure and the Microsoft cloud strategy in general.<br />
In episode 2, which we’ll put online in the coming week, I’m talking with Pieter Gheysens
on ALM (Application Lifecycle Management) in Visual Studio 2010. And in episode 3,
I’m sitting down with my co-author Kevin Dockx and we will be discussing WCF RIA Services
in real-life projects.
</p>
        <p>
If you are interested in doing a podcast, let me know! Send me a mail at <a href="mailto:dotnetshow@snowball.be">dotnetshow@snowball.be</a> and
I’ll contact you. If you have any remarks or questions, send them to that address
as well!
</p>
        <p>
So, with that, I hope you’ll enjoy our podcasts! Head over to <a href="http://www.dotnetshow.be"><strong>www.dotnetshow.be</strong></a> where
you can find the first episode. If you want (and I know you will) to subscribe via
iTunes or another podcast downloader, use this link: <a href="http://www.dotnetshow.be/syndication.axd" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="podcastIcon" border="0" alt="podcastIcon" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/podcastIcon_3.jpg" width="105" height="88" /></a>To
add .NET Show to iTunes, go to Advanced – Subscribe to Podcast:<br /><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/image_5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/image_thumb_1.png" width="244" height="74" /></a></p>
        <p>
In the window that appears, enter the following URL: <a title="http://www.dotnetshow.be/syndication.axd" href="http://www.dotnetshow.be/syndication.axd">http://www.dotnetshow.be/syndication.axd</a>:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/SNAGHTML304f17f.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTML304f17f" border="0" alt="SNAGHTML304f17f" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/SNAGHTML304f17f_thumb.png" width="244" height="124" />
          </a>
        </p>
        <p>
.NET Show will now appear in your subscribed podcasts!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/image_7.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Announcing.NETShowtheBelgi.NETdevelopers_14F3D/image_thumb_2.png" width="244" height="180" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2b930ec4-f371-4a35-91ad-ae1091dfacc7" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>PDC 2010 Live Stream on October 28th</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/24/PDC+2010+Live+Stream+On+October+28th.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b58f951d-3b9e-4375-ba4d-7350c9d1b238.aspx</id>
    <published>2010-09-24T03:38:43.2735654-04:00</published>
    <updated>2010-09-24T03:38:43.2735654-04:00</updated>
    <category term="PDC" label="PDC" scheme="http://www.snowball.be/CategoryView,category,PDC.aspx" />
    <category term="Visug" label="Visug" scheme="http://www.snowball.be/CategoryView,category,Visug.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="" src="http://www.visug.be/Portals/0/86529562-00d7-420a-8ac9-732fc5c30202.jpg" width="654" height="350" />
        </p>
        <p>
I’m happy to announce that Microsoft, Visug and Azug are teaming up to bring you the
PDC 2010 event in Belgium! We'll have live-stream of the 2 keynotes, a Windows 7 demo
fest and great fun in al all-American style! 
</p>
        <p>
Agenda:<br />
17u30 – Welcome and drink<br />
18u00 – 20u -  Watch the PDC keynote live stream on big screen<br />
20u – 20u30 – Dinner<br />
20u30 – 21u30 – Demofest<br />
21u30 - 22u30 – Networking 
</p>
        <p>
Registration only via this link: <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032463933&amp;Culture=en-US">https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032463933&amp;Culture=en-US</a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b58f951d-3b9e-4375-ba4d-7350c9d1b238" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Roadshow in Sweden coming up</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/24/Silverlight+Roadshow+In+Sweden+Coming+Up.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,6890efb4-5368-4bb5-8e33-4812b909f995.aspx</id>
    <published>2010-09-24T03:35:41.4711654-04:00</published>
    <updated>2010-09-24T03:35:41.4711654-04:00</updated>
    <category term="Community" label="Community" scheme="http://www.snowball.be/CategoryView,category,Community.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
From October 4th until October 8th, I’ll be touring through Sweden, visiting 4 user
groups in 4 cities to do a mini-Silverlight roadshow. During the 4 evenings, I’ll
be giving sessions on data-related stuff using Silverlight.
</p>
        <p>
If you’re in the neighborhood (or live in Sweden :) ), you’re welcome to join of course.
All events are free and start at 6pm. Here are the details of where I’ll be on which
day:
</p>
        <p>
          <strong>October 4th: Malmö<br /></strong>Registration: <a href="http://www.swenug.se/events/skaane-silverlight-4-tour-de">http://www.swenug.se/events/skaane-silverlight-4-tour-de</a><br />
Address:<br />
Cornerstone Malmö,  
<br />
Norra Vallgatan 100<br />
Malmö<br /><br /><strong>October 6th: Stockholm</strong><br />
Registration: <a href="http://www.swenug.se/events/sthlm-silverlight-4-tour-de">http://www.swenug.se/events/sthlm-silverlight-4-tour-de</a><br />
Address:<br />
.Net Akademien<br />
Dalagatan 100<br />
STOCKHOLM<br /><br /><strong>October 7th: Örebro</strong><br />
Registration: <a href="http://www.swenug.se/events/oerebro-silverlight-4-tour-de">http://www.swenug.se/events/oerebro-silverlight-4-tour-de</a><br />
Address:<br />
Cityconferencecenter<br />
Klostergatan 23<br />
Örebro<br /><br /><strong>October 8th: Göteborg</strong><br />
Registration: <a href="http://www.swenug.se/events/gbg-silverlight-4-tour-de">http://www.swenug.se/events/gbg-silverlight-4-tour-de</a><br />
Address: 
<br />
Sigma<br />
Lindholmspiren 9<br />
Göteborg
</p>
        <p>
I hope to meet you there!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=6890efb4-5368-4bb5-8e33-4812b909f995" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Building an app marketplace with MEF (MEF/Silverlight 4 tutorial)</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/04/Building+An+App+Marketplace+With+MEF+MEFSilverlight+4+Tutorial.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b8fb7d8f-65db-40d2-9f15-917da0677d56.aspx</id>
    <published>2010-09-04T17:25:11.753-04:00</published>
    <updated>2010-09-27T15:59:06.7743056-04:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="VS2010" label="VS2010" scheme="http://www.snowball.be/CategoryView,category,VS2010.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In April, I was in the UK for speaking at the VBUG conference and I was impressed
by a demo given by <a href="http://www.thejoyofcode.com/">Josh Twist</a>. He built
using MEF and WPF a “marketplace” application. The goal of the application was mainly
showing the dynamic capabilities of adding new functionality to an application through
MEF (or in full, the Managed Extensibility Framework for Silverlight 4).
</p>
        <p>
For a presentation I’m giving shortly, I rebuilt something similar but in Silverlight:
the MEF Marketplace in Silverlight. The setup is the following: a user gets an overview
of apps he purchased in the market place and can run these on demand. The market place
app will download the applications available to the user after the application has
started, so this app mainly is a hosting shell for the other ‘purchased” applications
to run in. Of course, the sample is a demo and can be extended quite a lot. For example,
in the current implementation, I hard-coded the list of purchased apps and there’s
no option to buy new ones. Also, it could be extended so that when new apps are purchased,
a duplex service notifies the client of this and MEF downloads the new app in the
background. 
</p>
        <p>
But, instead of talking of what could be added, let’s take a look at what I currently
built already! Here’s a screenshot of the application showing the "purchased” applications.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/SNAGHTMLaf6bd.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="SNAGHTMLaf6bd" border="0" alt="SNAGHTMLaf6bd" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/SNAGHTMLaf6bd_thumb.png" width="244" height="185" />
          </a>
        </p>
        <p>
And here’s one of the apps (the Flickr Image search) running inside the "market place
shell”.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/SNAGHTMLb8796.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="SNAGHTMLb8796" border="0" alt="SNAGHTMLb8796" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/SNAGHTMLb8796_thumb.png" width="244" height="185" />
          </a>
        </p>
        <p>
Time for some code. Let’s begin with the market place itself.
</p>
        <p>
I defined a contract interface for all applications that can be loaded in the market
place, IMarketPlaceApplication.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">interface</span> IMarketPlaceApplication</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> ApplicationName
{ get; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    FrameworkElement MarketPlaceIcon { get; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    FrameworkElement MainView { get; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
This interface defines that all my apps will (of course) have a name, a default view
which will load as the landing screen when the app is loaded (MainView.xaml) and an
icon to show in the list (MarketPlaceIcon.xaml). As these 2 latest ones are XAML files,
you can put in whatever you like. 
<p>
A very easy application that will be possible to load from MEF is the HelloWorldApplication.
The project structure of this app is as follows:
</p><p><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_2.png"><img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_thumb.png" width="244" height="118" /></a></p><p>
As you can see, there’s a class called HelloWorldApplication, which implements the
IMarketPlaceApplication and 2 xaml files. The HelloWorldApplication code is shown
below:
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[Export(<span style="COLOR: #0000ff">typeof</span>(IMarketPlaceApplication))]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">class</span> HelloWorldApplication:
IMarketPlaceApplication</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #cc6633">#region</span> IMarketPlaceApplication
Members</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">string</span> ApplicationName</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get { <span style="COLOR: #0000ff">return</span><span style="COLOR: #006080">"Hello
MEF world"</span>; }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [Import(<span style="COLOR: #0000ff">typeof</span>(Icon))]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> FrameworkElement
MarketPlaceIcon</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [Import(<span style="COLOR: #0000ff">typeof</span>(HelloWorldView))]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> FrameworkElement
MainView</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #cc6633">#endregion</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
This is our first encounter with MEF. The first line uses the Export attribute. This
class is saying that it is available for someone to use, when someone requests an
instance of IMarketPlaceApplication. A bit further, we are using the Import attribute
on both the MarketPlaceIcon and the MainView. Here we are saying: MEF, search us a
class that’s exporting itself as type Icon and HelloWorldView respectively. 
</p><p>
These 2 latter instances will be inserted by MEF upon executing the application, that
is, if MEF finds the corresponding export. These exports can be found in the 2 XAML
files (in the code-behind). The HelloWorldView.xaml.cs code is shown next. Note the
Export attribute: we’re telling to MEF that this type can be used where an Import
is requested of the HelloWorldView type.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[Export]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">partial</span><span style="COLOR: #0000ff">class</span> HelloWorldView
: UserControl</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> HelloWorldView()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        InitializeComponent();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The Icon.xaml.cs is pretty similar code-behind-wise (I think I invented that term
here): here alse we are adding an Export attribute.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[Export]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">partial</span><span style="COLOR: #0000ff">class</span> Icon
: UserControl</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> Icon()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        InitializeComponent();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The HelloWorldApplication is at this point a stand-alone application (it compiles
to its own XAP file), but we’ll now build the Market Place shell that will host this
app. The code download at the end of the article contains several sample applications
(a Flickr app and a Facebook app). 
</p><p>
Similar to a real market place application, our implementation will get a list of
apps you purchased previously. Only these are available to you and will be shown.
To get this list, I wrote a basic Silverlight-enabled WCF service that fetches this
list of available applications. This service is hosted in this case in the hosting
website. The code below shows this service, which in this case returns a hard-coded
list of apps (note that I have some more apps already added here).
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[ServiceContract(Namespace = <span style="COLOR: #006080">""</span>)]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[AspNetCompatibilityRequirements(RequirementsMode = </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    AspNetCompatibilityRequirementsMode.Allowed)]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">class</span> MarketPlaceService</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [OperationContract]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> List&lt;MefApplication&gt;
GetAvailableApplicationsForUser()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span><span style="COLOR: #0000ff">new</span> List&lt;MefApplication&gt;()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> MefApplication(){ApplicationName=<span style="COLOR: #006080">"Flickr
Image Search"</span>, </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                XapFileName=<span style="COLOR: #006080">"FlickImageSearch.xap"</span>}, </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> MefApplication(){ApplicationName=<span style="COLOR: #006080">"Hello
World"</span>, </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                XapFileName=<span style="COLOR: #006080">"HelloWorldApplication.xap"</span>},</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> MefApplication(){ApplicationName=<span style="COLOR: #006080">"MEFacebook"</span>, </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                XapFileName=<span style="COLOR: #006080">"FacebookApplication.xap"</span>}</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        };</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #008000">//
Add more operations here and mark them with [OperationContract]</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[DataContract]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">class</span> MefApplication</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [DataMember]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">string</span> ApplicationName
{ get; set; }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [DataMember]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span><span style="COLOR: #0000ff">string</span> XapFileName
{ get; set; }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The service uses the MefApplication class as a helper class: it contains the name
of the application and more importantly, the name of the XAP file (this could easily
be replaced with a Uri to the XAP file).
</p><p>
In the MefMarketPlace, the Silverlight Market Place application, we can create a web
reference to this service. In the App.xaml.cs, I add a call to a new method, DownloadMyApplicationList():
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">private</span><span style="COLOR: #0000ff">void</span> Application_Startup(<span style="COLOR: #0000ff">object</span> sender,
StartupEventArgs e)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    DownloadMyApplicationsList();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">this</span>.RootVisual
= <span style="COLOR: #0000ff">new</span> MainPage();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p></p><p>
This new method makes the service call to get a list of available XAPs that I can
use (apps that I purchased).
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">void</span> DownloadMyApplicationsList()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    AggregateCatalog = <span style="COLOR: #0000ff">new</span> AggregateCatalog();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    container = <span style="COLOR: #0000ff">new</span> CompositionContainer(<span style="COLOR: #0000ff">this</span>.AggregateCatalog);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    CompositionHost.Initialize(container);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    MarketPlaceService.MarketPlaceServiceClient client = </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> MarketPlaceService.MarketPlaceServiceClient();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client.GetAvailableApplicationsForUserCompleted += </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> EventHandler&lt;MarketPlaceService.GetAvailableApplicationsForUserCompletedEventArgs&gt;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            (client_GetAvailableApplicationsForUserCompleted);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client.GetAvailableApplicationsForUserAsync();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">void</span> client_GetAvailableApplicationsForUserCompleted(<span style="COLOR: #0000ff">object</span> sender, </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    MarketPlaceService.GetAvailableApplicationsForUserCompletedEventArgs e)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (e.Error
== <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        AvailableApplicationsForUser = e.Result;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        InitializeCatalog();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
In the callback method of the service, I call InitializeCatalog(). MEF has the concept
of Catalogs: a Catalog can be used to tell MEF where it has to look for Parts. Several
types of catalogs exist in MEF for Silverlight: the TypeCatalog, the AssemblyCatalog,
the DeploymentCatalog and the AggregateCatalog. A TypeCatalog basically allows us
to register a specific type with MEF: if I want MEF to know about a certain Export,
I can register it in a TypeCatalog. An AssemblyCatalog tells MEF to look for parts
in a specific assembly. The DeploymentCatalog allows us to specify a XAP file and
MEF will look in the assemblies therein for parts. It also allows us to asynchronously
download a XAP file. An AggregateCatalog can contain any number of other catalogs
and more catalogs can be added at any time.
</p><p>
By default, if we don’t specify a Catalog for our application, MEF looks at the current
XAP file and for each assembly it finds, it creates an AssemblyCatalog. It then combines
these with an AggregateCatalog. That means that we can omit creating a catalog in
our application: in this case, MEF will create a default one for us, with something
similar to this code:
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">void</span> InitializeCatalog()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    AggregateCatalog catalog = <span style="COLOR: #0000ff">new</span> AggregateCatalog();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">foreach</span> (var
deployedPart <span style="COLOR: #0000ff">in</span> Deployment.Current.Parts)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        StreamResourceInfo resourceInfo = </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            Application.GetResourceStream(<span style="COLOR: #0000ff">new</span> Uri(deployedPart.Source,
UriKind.Relative));</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        Assembly assembly = deployedPart.Load(resourceInfo.Stream);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        catalog.Catalogs.Add(<span style="COLOR: #0000ff">new</span> AssemblyCatalog(assembly));</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    CompositionHost.Initialize(catalog);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
Back to our application. If we look at the available catalogs in MEF, we can see that
the DeploymentCatalog is a good candidate for what we need: we can use it to download
a XAP file (the application that we want to load). After that, we can add each DeploymentCatalog
to an AggregateCatalog. MEF will then make these available in our application and
we can run the downloaded applications.
</p><p>
In code, this gives the following:
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">private</span> CompositionContainer
container;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">void</span> InitializeCatalog()</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">foreach</span> (var
item <span style="COLOR: #0000ff">in</span> AvailableApplicationsForUser)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        DeploymentCatalog deploymentCatalog = </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">new</span> DeploymentCatalog(item.XapFileName);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">this</span>.AggregateCatalog.Catalogs.Add(deploymentCatalog);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        deploymentCatalog.DownloadCompleted += (s, e) =&gt;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #008000">//extend
to give meaningful error handling</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (e.Error
!= <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                MessageBox.Show(e.Error.Message);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        };</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        deploymentCatalog.DownloadAsync();</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    container.ComposeParts(<span style="COLOR: #0000ff">this</span>);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
You can see that I use a CompositionContainer here. The container is well, like the
word says it, a container where MEF puts all the parts, shakes it up and creates/composes
parts.
</p><p>
We now have the code that runs when we start the application: it gets a list of all
the applications we can use over the service and then it downloads the XAP files of
these apps asynchronously. Each XAP file is downloaded using a DeploymentCatalog and
these are added to an AggregateCatalog. This now makes our downloaded applications
available to run.
</p><p>
Let’s now take a look at the UI where we’ll run the apps from. The following screenshot
shows the UI:
</p><p><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_thumb_2.png" width="244" height="240" /></a></p><p>
The “Load my apps'” button on the top right will execute a command on the viewmodel
that will load all available applications in the ListBox on the left.
</p><p><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_8.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_thumb_3.png" width="244" height="142" /></a></p><p>
When clicking on the “Load app” button, the selected application (here the Flickr
app) is loaded:
</p><p><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_10.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BuildinganappmarketplacewithMEF_867E/image_thumb_4.png" width="244" height="127" /></a></p><p>
Clicking the “Home” button unloads the app and returns us to the list screen.
</p><p>
The complete XAML listing can be found in the code download. The most important part
is shown below. Note that there’s a ContentPresenter used here and it’s bound to the
MainView property of the SelectedApplication. The latter is a property exposed on
the viewmodel (see further). If no view/app is selected, this ContentPresenter won’t
be visible and we’ll see the default UI again.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Grid</span><span style="COLOR: #ff0000">x:Name</span><span style="COLOR: #0000ff">="LayoutRoot"</span><span style="COLOR: #ff0000">Background</span><span style="COLOR: #0000ff">="Black"</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Grid.RowDefinitions</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">RowDefinition</span><span style="COLOR: #ff0000">Height</span><span style="COLOR: #0000ff">="*"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">RowDefinition</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">RowDefinition</span><span style="COLOR: #ff0000">Height</span><span style="COLOR: #0000ff">="60"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">RowDefinition</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Grid.RowDefinitions</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Grid</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ...</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Grid</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ContentPresenter</span><span style="COLOR: #ff0000">Content</span><span style="COLOR: #0000ff">="{Binding
SelectedApplication.MainView}"</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ContentPresenter</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Button</span><span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">Content</span><span style="COLOR: #0000ff">="Home"</span><span style="COLOR: #ff0000">Margin</span><span style="COLOR: #0000ff">="10"</span><span style="COLOR: #ff0000">Background</span><span style="COLOR: #0000ff">="#FFABE3FF"</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #ff0000">Command</span><span style="COLOR: #0000ff">="{Binding
HomeCommand}"</span><span style="COLOR: #ff0000">BorderBrush</span><span style="COLOR: #0000ff">="#FF00AAFF"</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #ff0000">Style</span><span style="COLOR: #0000ff">="{StaticResource
ButtonStyle1}"</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #ff0000">Width</span><span style="COLOR: #0000ff">="130"</span><span style="COLOR: #ff0000">Height</span><span style="COLOR: #0000ff">="40"</span><span style="COLOR: #ff0000">HorizontalAlignment</span><span style="COLOR: #0000ff">="Center"</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #ff0000">VerticalAlignment</span><span style="COLOR: #0000ff">="Center"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">Button</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Grid</span><span style="COLOR: #0000ff">&gt;</span></pre><!--CRLF--></div></div><p>
Time to look at the viewmodel now. Probably the most important part here is the ObservableCollection&lt;IMarketPlaceApplication&gt;:
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[ImportMany(AllowRecomposition=<span style="COLOR: #0000ff">true</span>)]</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> ObservableCollection&lt;IMarketPlaceApplication&gt;
Applications</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span> _applications;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The ListBox in the UI is bound to this collection and since it’s an ObservableCollection,
the UI will reflect changes to this collection. That’s important here, since the list
of available apps won’t be known after the shell contacted the service. Note that
the collection property is attributed with the ImportMany attribute. This is a sign
for MEF that more than one part that is exposing itself with the same Export attribute
(same type) is allowed. By default, this isn’t allowed since MEF wouldn’t know which
one to use. Here, we want the ImportMany since we know that more than one app will
be available and they all need to be exported as an IMarketPlaceApplication. Another
important thing to note here is the AllowRecomposition option we used here. AllowRecomposition
tells MEF that if during the run of the app more Exports become available for this
Import, it’s OK to add them, in other words, to <strong>re</strong>build the <strong>composition</strong>. 
</p><p>
The ContentPresenter in the UI bound to SelectedApplication.MainView. The SelectedApplication
property is shown next.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">private</span> IMarketPlaceApplication
_selectedApplication;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> IMarketPlaceApplication
SelectedApplication </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span> _selectedApplication;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    set</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        _selectedApplication = <span style="COLOR: #0000ff">value</span>;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        NotifyPropertyChanged(<span style="COLOR: #006080">"SelectedApplication"</span>);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
NotifyPropertyChanged is a simple method that raises the PropertyChanged event of
the INotifyPropertyChanged interface. 
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">private</span><span style="COLOR: #0000ff">void</span> NotifyPropertyChanged(<span style="COLOR: #0000ff">string</span> p)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (PropertyChanged
!= <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        PropertyChanged(<span style="COLOR: #0000ff">this</span>, <span style="COLOR: #0000ff">new</span> PropertyChangedEventArgs(p));</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The “Load apps” button in the UI is bound to the LoadAppsCommand. I use the MVVM Light
RelayCommand here. In the execute code of the ICommand, I ask MEF to satisfy the Imports
of the current class (the viewmodel). This basically tells MEF to look at the catalogs
and bring all the Export(typeof(IMarketPlaceApplication)) into the ImportMany.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> RelayCommand
LoadAppsCommand</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (_loadAppsCommand
== <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            _loadAppsCommand = <span style="COLOR: #0000ff">new</span> RelayCommand(</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    () =&gt;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                        CompositionInitializer.SatisfyImports(<span style="COLOR: #0000ff">this</span>);</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                        loaded = <span style="COLOR: #0000ff">true</span>;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    },</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    () =&gt;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (loaded)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span><span style="COLOR: #0000ff">false</span>;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span><span style="COLOR: #0000ff">true</span>;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                );</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span> _loadAppsCommand;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p>
The LoadSelectedApplicationCommand and the HomeCommand respectively set the SelectedApplication
property to the selected application in the list or null.
</p><div id="codeSnippetWrapper"><div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> RelayCommand&lt;IMarketPlaceApplication&gt;
LoadSelectedAppCommand</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (_loadSelectedAppCommand
== <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            _loadSelectedAppCommand = <span style="COLOR: #0000ff">new</span> RelayCommand&lt;IMarketPlaceApplication&gt;(</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    (a) =&gt; </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    { </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                        SelectedApplication = a; </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                );</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span> _loadSelectedAppCommand;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">public</span> RelayCommand
HomeCommand</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">if</span> (_homeCommand
== <span style="COLOR: #0000ff">null</span>)</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            _homeCommand = <span style="COLOR: #0000ff">new</span> RelayCommand(</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    () =&gt;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    {</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                        SelectedApplication = <span style="COLOR: #0000ff">null</span>;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                );</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"><span style="COLOR: #0000ff">return</span> _homeCommand;</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre><!--CRLF--><pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre><!--CRLF--></div></div><p></p><p>
With that, we have successfully implemented the MEF Marketplace. As said in the very
beginning, this can be extended quite a lot. Add a duplex service and a buying system
that pushes a message to the client and trigger the client to download the linked
XAP file is a nice way to start. The complete file can be downloaded below.
</p><p>
Enjoy!
</p><p>
Code download: <a href="http://www.snowball.be/content/binary/MefMarketPlace.zip">MefMarketPlace.zip
(868.99 KB)</a></p><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b8fb7d8f-65db-40d2-9f15-917da0677d56" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>We’re in the TechNet Magazine!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/03/Were+In+The+TechNet+Magazine.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ab31aaaf-df82-4a34-918d-b51d2103c860.aspx</id>
    <published>2010-09-03T14:11:17.4928679-04:00</published>
    <updated>2010-09-03T14:11:17.4928679-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last month, together with my “writing-buddy” Kevin Dockx, we wrote an article on Silverlight
LOB development for TechNet Magazine. I noticed that it was published today on the
TechNet site for reading as well as in printed format in the TechNet Magazine.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MyTechNetarticlepostedandprintedaswell_1176F/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MyTechNetarticlepostedandprintedaswell_1176F/image_thumb_1.png" width="456" height="375" />
          </a>
        </p>
        <p>
Interested? Read it here: <a title="http://technet.microsoft.com/en-us/magazine/ff955754.aspx" href="http://technet.microsoft.com/en-us/magazine/ff955754.aspx">http://technet.microsoft.com/en-us/magazine/ff955754.aspx</a> .
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ab31aaaf-df82-4a34-918d-b51d2103c860" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>More praise for my Silverlight 4 book</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/09/03/More+Praise+For+My+Silverlight+4+Book.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,aedce2c8-6f47-4078-9db6-8183d7d368f2.aspx</id>
    <published>2010-09-03T04:09:44.1786557-04:00</published>
    <updated>2010-09-03T04:09:44.1786557-04:00</updated>
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was looking at Amazon today and noticed that there were now already 12 reviews on
our (Kevin and myself) book, giving the book a whopping 5 star rating, which is of
course great!
</p>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MorepraiseformySilverlight4book_8EE4/9843_Mockupcover_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="9843_Mockupcover" border="0" alt="9843_Mockupcover" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MorepraiseformySilverlight4book_8EE4/9843_Mockupcover_thumb.jpg" width="198" height="244" />
          </a>
        </p>
        <p>
Here are some of the excerpts: 
</p>
        <p>
          <b>Ideal for those who prefer a tutorial-oriented writing style</b>, August 30, 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
HOW THIS COOKBOOK WORKED FOR ME: In contrast, this book ("Microsoft Silverlight 4
Data and Services Cookbook" from PACKT) certainly proved valuable to me by appealing
to my learning style, and delivering what was advertised on the cover. I was able
to learn a reasonable amount of SL4 specifically for handling business data, using
"Microsoft Silverlight 4 Data and Services Cookbook". The format and approach is ideal
for those among us who prefer to "cut to the chase" instead of wading through lengthy
tirades. The examples build on one another which served to reinforce key concepts
through out the book-- money well spent from my perspective. 
</p>
        <p>
          <b>Great Book for Silverlight App Development</b>, June 22, 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
*Getting ready 
<br />
*How to do it... 
<br />
*How it works... 
<br />
*There's more... 
<br />
*See also 
<br />
The ample pictures of both the Visual Studio 2010 GUI and running Silverlight applications
augment the many code samples. The section that I have appreciated the most has been
the chapter on "Talking to WCF RIA Services" as I am working on developing a better
understanding of it. 
<br />
Now that the summer is here, it's a great time to pick up a book or two to read when
you're away from your computer. If you are building or want to build applications
with Silverlight, I highly recommend this book and suggest that you get a copy for
your summer reading.
</p>
        <p>
        </p>
        <p>
          <b>Best book for Developers.</b>, July 18, 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
Best book for beginner / intermediate developers who have prior knowledge about basics
of Silverlight.
</p>
        <p>
          <b>Best Silverlight 4 Book To Date</b>, June 19, 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
I have read through every well-known Silverlight 4 book on the market. I have even
read part of Microsoft Step by Step Silverlight 4 (released yesterday 2010-06-18 on
Safari and via ebook) - In my humble opinion, this is the best Silverlight 4 book
on the market to date. Most of what I have read from the other Silverlight books is
covered in Ian Griffith's Silverlight 4 labs up on the Microsoft Silverlight 4 page.
If you want a fast track to learn Silverlight 4 and are already familiar with C# .NET,
I would recommend picking up a top rated Silverlight 3 book (I personally like books
from the Apress series - "Pro Silverlight 3" and the Silverlight 3 Business Intelligence
one (forget the exact title) - then the labs on the official Silverlight 4 website
and this book.
</p>
        <p>
          <b>life savor</b>, August 25, 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
I had to write a web-application to demo the WCF Data Service I was writing on a very
short time budget. This book was a life savor; it had all the answers I needed for
consuming the service and displaying in the datagrid. For server side programming,
both Effective REST Services and Essential WCF are great.
</p>
        <p>
          <b>The best silverlight book i've seen...</b>, 24 Aug 2010<img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
This is an excellent book, packed with step by step exercises so you learn by doing
rather than just having reading a book as thick as a house brick. Personally I would
buy this book to learn Silverlight from scratch, while its true you wont learn a great
deal about the controls but you WILL learn the most important aspects which are accessing
and displaying data. 
<br />
I've been a software developer for 6 years after University and bought so many IT
books, so far, this has been the best and most readable. I enjoyed reading and practicing
the examples in it unlike so many 20 inch thick programming beasts that you dread
opening because they just send you to sleep! 
<br />
Dont hesitate, just buy it. 
<br />
My only gripe about this book is that when I brought it I thought it was a tad expensive
at £35... But, worth it though.
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
          <b>Concise and relevant</b>, 11 Aug 2010 <img border="0" alt="5.0 out of 5 stars" src="http://g-ecx.images-amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-0._V192240867_.gif" width="64" height="12" /><br />
This book covers the essentials of Silverlight and WPF with practical examples that
you are going to follow when building your real world applications. It explains WPF
binding and DataTemplates well, and what interfaces your business layer objects need
to implement to notify when changes occur. 
<br />
The recipies on WCF communication (sockets, WCF, net.tcp) are great and give examples
of when you would best use them, and cover the config file changes needed too. 
<br />
A refreshingly slim book too - lets face it, who wants a 1000+ page book covering
everything and the kitchen sink. You want a straight to the point book that covers
the essentials you would use at work and touches all the major areas. Highly recommended.
</p>
        <p>
 
</p>
        <p>
If you want to read more reviews or order my Silverlight 4 Data and services cookbook,
head to <a href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=pd_sim_b_4" target="_blank">Amazon.com</a> or <a href="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1283501115&amp;sr=8-1" target="_blank">Amazon.co.uk</a> or
alternatively you can order via the <a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" target="_blank">Packt
website</a> as well!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=aedce2c8-6f47-4078-9db6-8183d7d368f2" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for DotNed.nl Silverlight session</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/27/Slides+And+Demos+For+DotNednl+Silverlight+Session.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d587c7de-404d-4187-9c44-75fba5763453.aspx</id>
    <published>2010-08-27T03:54:17.813-04:00</published>
    <updated>2010-08-27T04:35:55.5916379-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Slide decks" label="Slide decks" scheme="http://www.snowball.be/CategoryView,category,SlideDecks.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I gave a talk for <a href="http://www.dotned.nl/" target="_blank">DotNed.nl</a>,
the Dutch usergroup at the Ordina offices in Nieuwegein. 55 people attended the sold-out
talk, I hope you enjoyed it. Any feedback is of course welcome via mail.
</p>
        <p>
The talk, Building an end-to-end Silverlight application consisted out of 10 topics
that we often encounter when building LOB applications:
</p>
        <ul>
          <li>
1.SketchFlow 
</li>
          <li>
2.WCF RIA Services 
</li>
          <li>
3.Data binding &amp; DataGrid 
</li>
          <li>
4.MVVM 
</li>
          <li>
5.MEF 
</li>
          <li>
6.Commanding &amp; behaviors 
</li>
          <li>
7.Messaging, navigation &amp; dialogs 
</li>
          <li>
8.Custom controls &amp; third party controls 
</li>
          <li>
9.OOB 
</li>
          <li>
10.Printing</li>
        </ul>
        <p>
The ZIP file below contains the PPTX and the demos (also of the 2 topics we didn’t
cover). 
</p>
        <p>
Remember that in 2 weeks, on September 14th, I’ll be again in the Netherlands for
2 sessions for SiXin, the Silverlight usergroup. Registration for this event is free
and can be done <a href="http://www.sixin.nl/Home.aspx" target="_blank">here</a>.
</p>
        <p>
          <strong>
            <a href="http://www.snowball.be/data/presentations/dotnednl/DotNed.NL.zip" target="_blank">PPTX
&amp; demos</a>
          </strong>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d587c7de-404d-4187-9c44-75fba5763453" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My ReMix 2010 session announced</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/25/My+ReMix+2010+Session+Announced.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0670f072-e32d-49dc-bc38-b578615eda1e.aspx</id>
    <published>2010-08-25T03:01:00.3897656-04:00</published>
    <updated>2010-08-25T03:01:00.3897656-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Mark Tuesday 28th in your calendar, as it will be the day that we have the third edition
of ReMix in Belgium. 
</p>
        <p>
          <em>With this third edition we continue our tradition to invite thought-leaders of
design and web who show us their craft. In addition you can take the opportunity to
discover how newer ways of working might enable you and your organization to be more
productive in translating ideas into Web. Discover how you can prototype your design
with SketchFlow and Expression Blend, how Silverlight 4 and Silverlight for Windows
Phone make it easy to deliver the experience, and discover the near future of Internet
Explorer and HTML5, all of them allowing you to innovatively design and develop for
the Cloud. Because after all, <strong>We're all in!</strong></em>
        </p>
        <p>
          <em>REMIX10 has a User Experience and a Web Developer track with eight sessions ranging
from pure inspirational UX content to Web developer sessions thus marrying the best
of both worlds: Make Web Not War.</em>
        </p>
        <p>
I will be giving a session at ReMix as well. I can say that this will be a very special
talk, you really need to come and see it. The abstract is the following:
</p>
        <p>
          <em>
            <strong>Building a Silverlight 4 Application End to End</strong>
            <br />
When you’re asked to build a new Silverlight application from scratch, it may be a
bit hard to know where to start exactly. What would you say if you spend 75 minutes
of your day and I show you the steps involved in creating a complete business application?
Sounds neat, doesn’t it?! In the scenario, we are following a company that wants to
set up a campaign site in Silverlight 4 that makes it possible to send Christmas cards.
Among others, we’ll be spending some time with printing and webcam interaction, data
binding, COM interop, out-of-browser features and data service access. Indeed, Christmas
does come early this year!</em>
        </p>
        <p>
Interested? Join the conference for free: <a title="http://msdn.microsoft.com/nl-be/ff923221.aspx" href="http://msdn.microsoft.com/nl-be/ff923221.aspx">http://msdn.microsoft.com/nl-be/ff923221.aspx</a>.
See you there!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0670f072-e32d-49dc-bc38-b578615eda1e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>If you like my blog, vote me as a hero!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/24/If+You+Like+My+Blog+Vote+Me+As+A+Hero.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,fe44b86c-ed20-41cf-9787-27186eee4af0.aspx</id>
    <published>2010-08-24T08:45:11.771-04:00</published>
    <updated>2010-08-24T08:51:20.0409108-04:00</updated>
    <category term="Community" label="Community" scheme="http://www.snowball.be/CategoryView,category,Community.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Today, I got a mail from Combell, the hosting
company, stating that together with Vacature and Unizo, they were launching a new
campaign: Helden van IT (Heroes in IT). 
<p></p><p></p><p align="center"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="logohelden" border="0" alt="logohelden" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Ifyoulikemyblogvotemyasahero_CF74/logohelden_5.png" width="315" height="163" /></p><p>
With this campaign, they want to put the people that are in the IT-trenches every
day on a stand. I registered myself as well, so if you think that the community work
I do (Visug, Community Day, my blog, sessions…) is worth a vote, click on me on this
page: <a title="http://www.heldenvanit.be/nl/profiel/gill-cleeren" href="http://www.heldenvanit.be/nl/profiel/gill-cleeren">http://www.heldenvanit.be/nl/profiel/gill-cleeren</a></p><p>
Thanks!
</p><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=fe44b86c-ed20-41cf-9787-27186eee4af0" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Upcoming DotNed.nl session: Building an end-to-end Silverlight application with me!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/19/Upcoming+DotNednl+Session+Building+An+Endtoend+Silverlight+Application+With+Me.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a536b0b6-b408-4c65-a52a-8bce06db3d11.aspx</id>
    <published>2010-08-19T16:06:53.415-04:00</published>
    <updated>2010-08-22T16:55:39.9792936-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
hNext week Thursday (August 26th 2010), I’ll be presenting at DotNed.nl. The presentation
is titled <em>Building an end-to-end Silverlight 4 application</em>. As the title
says, we’ll be looking at some of the common questions (and of course answers) you’ll
have when you are faced with the challenge of building a Line-of-Business application
from scratch. 
</p>
        <p>
          <img alt="" align="left" src="http://www.dotned.nl/userfiles/image/SilverlightLogo.jpg" width="210" height="169" />
        </p>
        <p>
          <em>Bring your demo hat today, as we’ll be building an end-to-end, real life Silverlight
application during this session! Looking at Silverlight today, we easily see that
the platform is getting larger and larger, with more frameworks such as MEF being
developed on the side. Advanced features such as COM interop and printing make the
Silverlight story complete. In this session, we’ll take a look at how we can use all
members of the Silverlight family to build an end-to-end application, based on MVVM
principles.</em>
        </p>
        <p>
 
</p>
        <p>
Registration is free but mandatory and can be done on the <a href="http://www.dotned.nl/" target="_blank">DotNed.nl</a> site.
And since it’s taking place in the Ordina.NL offices, I won’t be feeling all that
strange ;-) (FYI, I work at Ordina.BE!)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a536b0b6-b408-4c65-a52a-8bce06db3d11" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Slides and demos for the SilverlightShow webinar</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/19/Slides+And+Demos+For+The+SilverlightShow+Webinar.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7bbf558e-8612-49d1-ac31-25ebc13a6c2c.aspx</id>
    <published>2010-08-19T16:02:04.768-04:00</published>
    <updated>2010-08-19T17:02:25.6534279-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Slide decks" label="Slide decks" scheme="http://www.snowball.be/CategoryView,category,SlideDecks.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, I gave a webinar for the readers of SilverlightShow. The video recording will
be online soon. You can get the slides and demo from <a href="http://www.snowball.be/data/presentations/silverlightshow/Databindinginaction.zip" target="_blank">here</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7bbf558e-8612-49d1-ac31-25ebc13a6c2c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Patch released for growing Find and Replace window</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/12/Patch+Released+For+Growing+Find+And+Replace+Window.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,bb67036e-1c8a-45cd-8ad4-7162a3588e69.aspx</id>
    <published>2010-08-12T14:45:29.1236678-04:00</published>
    <updated>2010-08-12T14:45:29.1236678-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Have you been wondering, like me, why the Find and Replace window in Visual Studio
2010 is always so large? I’ve been thinking: “I really can’t remember making it so
wide myself?!?!”
</p>
        <p>
Well, the good thing: you (and me for that matter) aren’t going mad, we’ve just hit
the most reported bug on Connect. The Find and Replace window grows 16 pixels every
time you use it. Take a look below at what happens when doing CTRL-SHIFT-F several
times in a row!
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/1_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="1" border="0" alt="1" src="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/1_thumb.jpg" width="244" height="149" /></a></p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/2_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2" border="0" alt="2" src="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/2_thumb.jpg" width="244" height="149" />
          </a>
        </p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/3_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="3" border="0" alt="3" src="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/3_thumb.jpg" width="244" height="149" /></a></p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/4_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="4" border="0" alt="4" src="http://www.snowball.be/content/binary/WindowsLiveWriter/PatchreleasedforgrowingFindandReplacewin_123DD/4_thumb.jpg" width="244" height="149" /></a></p>
        <p>
Luckily, there’s now a patch released for this, which can be obtained here: <a title="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30518&amp;wa=wsignin1.0" href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30518&amp;wa=wsignin1.0">https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30518&amp;wa=wsignin1.0</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bb67036e-1c8a-45cd-8ad4-7162a3588e69" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>The '”tablet wars” is coming</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/01/The+Tablet+Wars+Is+Coming.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,55fa1c20-606b-4b41-8085-fd28e0225652.aspx</id>
    <published>2010-08-01T15:59:48.036-04:00</published>
    <updated>2010-08-01T16:08:38.0650555-04:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday, I was walking in Antwerp and several shops such as Fnac and MediaMarkt
had big displays that the iPad had arrived. I had already “played” with a device a
few months back, so no need to take another look at it now. 
</p>
        <p>
What I did do, was watching from a distance to the people looking at device: mostly
kids were playing some game on the machine. I wonder if that’s were Apple is going
with the device: a gaming-device at an incredible (high) price. It’s a consumer device,
and I see little potential for it in the enterprise world. I can be wrong, but that’s
how I see it at this moment.
</p>
        <p>
Yes, I know they have sold quite a lot of them (Steve B. mentioned it also just last
week), but do keep in mind that Apple is doing *everything* to make people think:
“I need one of those to be part of it again”. 
</p>
        <p>
I’m convinced that a Windows device in the same form factor has a lot more potential.
It has the usual things you’d expect from a PC: it runs Flash/Silverlight, you can
run your applications on it, you’ll be able to upgrade to Windows 8 some day… I got
a reaction from someone on Twitter, saying that Windows 7 is not touch-friendly and
that it’s focused on mouse/keyboard. While that is true, keep in mind that Windows
7 has touch built-in to the platform.
</p>
        <p>
What really will make these machines capable, is a UI shell. Everyone knows HTC Sense
probably: it’s a graphical layer HTC puts on top of Windows Mobile to give it a more
capable touch experience, easy access to applications and the like. When Windows 7
tablets will be coming out and they will have some shell running on it, they can offer
an experience similar to iOS. On top of that, you can actually use the device for
doing useful things as well, because all your software, mouse-enabled or touch-enabled
will work on it. Or, of course, develop your own software for it!
</p>
        <p>
          <a href="http://www.engadget.com/2010/08/01/page-turning-macallan-ui-will-hit-a-windows-7-tablet-this-year/" target="_blank">One
of these shells</a> was shown today (via Engadget): UICentric, and it will appear
on a Windows tablet coming out this year. You can see it running <a href="http://www.youtube.com/watch?v=xi_1HHXCC30&amp;feature=player_embedded" target="_blank">here</a>.
</p>
        <p>
(Btw, before someone asks/says: Yes, I have an iPhone since my Sony XPeria WinMobile
6.1 is broken. While I find it rather good, it crashes a few times a week and gets
quite hot after long calls. It'll be out of the door when I have a Windows Phone 7
though :) )
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=55fa1c20-606b-4b41-8085-fd28e0225652" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Upcoming webinar</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/01/Upcoming+Webinar.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7204e6ae-b982-4794-a0d4-c034b918f5c1.aspx</id>
    <published>2010-08-01T15:40:59.3532228-04:00</published>
    <updated>2010-08-01T15:40:59.3532228-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m really busy preparing to speak at several conferences and events in the fall.
The first upcoming event is a webinar I’m doing for SilverlightShow:
</p>
        <h5>
          <strong>Silverlight’s Power Features: </strong>
        </h5>
        <h5>
          <strong>Data Binding in Action<br /></strong>
        </h5>
        <h5>
        </h5>
        <p>
          <strong>August 19th, 2010, 10:00 am PDT (</strong>
          <a href="http://timeanddate.com/worldclock/fixedtime.html?month=8&amp;day=19&amp;year=2010&amp;hour=10&amp;min=0&amp;sec=0&amp;p1=234">
            <strong>see
your local time</strong>
          </a>
          <strong>)<br />
Speaker: Gill Cleeren<br /></strong>
          <br />
Building enterprise applications with Silverlight almost begs for rich data binding
features. While Silverlight 2 already had an extended set of features available to
enable data binding, Silverlight 3 and 4 add on these and extend the databinding platform.<br />
In this webinar, we’ll start with a complete overview of the data binding features
Silverlight 4 has to offer. We’ll take a look at how data binding is the enabler for
applying the MVVM (ViewModel) pattern and commanding as well. Finally, we’ll open
Blend and see its support for data binding, including the use of design-time data. 
</p>
        <p>
You can register <a href="http://www.silverlightshow.net/" target="_blank">here</a> (it’s
free).
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7204e6ae-b982-4794-a0d4-c034b918f5c1" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Read my articles on duplex communication!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/08/01/Read+My+Articles+On+Duplex+Communication.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,67945488-e3af-41dd-8fef-722bb4278e56.aspx</id>
    <published>2010-08-01T15:37:27.847-04:00</published>
    <updated>2010-08-01T15:38:26.815445-04:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve been writing some guest articles on SilverlightShow.net in the past couple of
weeks. The articles give a complete overview of the current situation of performing
duplex communication in Silverlight.
</p>
        <p>
Article 1: <a href="http://www.silverlightshow.net/items/The-duplex-story-looking-at-duplex-communication-in-Silverlight-4-Part-1.aspx" target="_blank">The
duplex story: looking at duplex communication in Silverlight 4 (Part 1)</a>: in this
article, I’m giving a full overview of the HttpPollingDuplexBinding in Silverlight
4. This binding can be used to create duplex communication over HTTP.
</p>
        <p>
Article 2: <a href="http://www.silverlightshow.net/items/The-duplex-story-looking-at-duplex-communication-in-Silverlight-4-Part-2-Using-Sockets.aspx" target="_blank">The
duplex story: looking at duplex communication in Silverlight 4 - Part 2: Using Sockets</a>:
in this second part, I’m taking a look at sockets and how to create super-performing,
duplex communication with the protocol. I’m taking a look at the changes made in Silverlight
4 as well.
</p>
        <p>
Article 3: <a href="http://www.silverlightshow.net/items/The-duplex-story-looking-at-duplex-communication-in-Silverlight-4-Part-3-Using-Net.Tcp.aspx" target="_blank">The
duplex story: looking at duplex communication in Silverlight 4 - Part 3: Using Net.Tcp:</a> in
this final part, I’m looking at the newest option that arrived with Silverlight 4.
</p>
        <p>
I hope you enjoy them!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=67945488-e3af-41dd-8fef-722bb4278e56" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Want to be an author?</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/07/14/Want+To+Be+An+Author.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f6059246-f932-4402-b0d6-5ef53076c170.aspx</id>
    <published>2010-07-14T04:00:31.9544767-04:00</published>
    <updated>2010-07-14T04:00:31.9544767-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Now that my book is on <a href="http://www.snowball.be/2010/05/22/The+Jury+Has+Spoken+Some+Reviews+Of+My+Book.aspx" target="_blank">a
roll</a>, it’s time that you start writing a book as well perhaps, no?!
</p>
        <p>
I just got a mail from my publisher, Packt Publishing (and I do really recommend them!)
that they are looking for more authors on Silverlight. 
</p>
        <p>
          <strong>
            <em>Packt invites Silverlight authors and book ideas:</em>
          </strong>
        </p>
        <p>
          <em>Packt Publishing (www.PacktPub.com), the publisher of computer related books,
plans to expand its range of Silverlight books and is currently inviting inquiries
from people who fancy writing a Silverlight book. You do not need to have any writing
experience to write for Packt. Anyone who loves Silverlight and fancies writing a
book can get in touch with Packt at author@packtpub.com with his/her book ideas. Even
if you don't have a book idea and are just interested in writing a book, Packt is
still keen to talk to you. </em>
        </p>
        <p>
          <em>Read more details about this opportunity here: <a href="http://authors.packtpub.com/content/packt-invites-silverlight-experts-write-new-set-books">http://authors.packtpub.com/content/packt-invites-silverlight-experts-write-new-set-books</a></em>
        </p>
        <p>
So if you’re feeling creative, contact them and maybe in a few months time, you can
have that great feeling of holding in your hands that book you wrote yourself!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f6059246-f932-4402-b0d6-5ef53076c170" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Vote for sessions at TechEd 2010 Berlin</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/07/13/Vote+For+Sessions+At+TechEd+2010+Berlin.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7e3c7e07-52fc-4f21-a063-5fc55d958ed3.aspx</id>
    <published>2010-07-13T17:37:55.9205578-04:00</published>
    <updated>2010-07-13T17:37:55.9205578-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.snowball.be/CategoryView,category,Personal.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <category term="TechEd" label="TechEd" scheme="http://www.snowball.be/CategoryView,category,TechEd.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft just announced that all of us can help deciding which sessions will be delivered
at Tech-Ed 2010 Berlin. That's a great way of making sure that the contents is what
the public wants!
</p>
        <p>
I've ran through the list and 4 of my proposals made the shortlist (which is good
news :)). 
</p>
        <ul>
          <li>
Treasures for the C# developer in Visual Studio 2010</li>
          <li>
AJAX Tips and tricks: things you never knew that could be done in ASP.NET Ajax</li>
          <li>
Silverlight data access and services not for the faint of heart</li>
          <li>
The good, the bad and… well, that’s it: Comparing good and bad practices in Silverlight
application development</li>
        </ul>
        <p>
If you would like me to deliver one of these sessions on the upcoming Tech-Ed, please
vote for them at <a href="http://europe.msteched.com/sessionpreference">http://europe.msteched.com/sessionpreference</a> .
Of course, there are many really other interesting sessions there as well: I'm sure
this will be a great conference!
</p>
        <p>
Thanks for voting!<br /></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7e3c7e07-52fc-4f21-a063-5fc55d958ed3" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Small bug in Visual Studio Pro Power Tools</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/07/07/Small+Bug+In+Visual+Studio+Pro+Power+Tools.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ea4b0925-1c09-437b-be09-a6400ff0a21a.aspx</id>
    <published>2010-07-07T03:27:46.234-04:00</published>
    <updated>2010-07-08T08:53:39.7288071-04:00</updated>
    <category term="Visual Studio.net" label="Visual Studio.net" scheme="http://www.snowball.be/CategoryView,category,VisualStudionet.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few weeks ago, Microsoft released the <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef" target="_blank">Visual
Studio Pro Power Tools</a>, a free set of enhancements and features for Visual Studio
2010. There seems to be a small issue (it’s not really correct to call it a bug) with
one of the shortcuts that it adds in combination with a Belgian keyboard layout (which
is Azerty).
</p>
        <p>
On the tools download page, you can read the following about the added Align Assignments
feature:
</p>
        <p>
          <em>
            <strong>Align Assignments</strong>
            <br />
This extension is useful for making your code a little more readable by aligning the
assignments when you type Ctrl+Alt+] such that it takes this:<br /></em>
          <br />
          <em>And turns it into this:<br /></em>  
</p>
        <p>
On an Azerty keyboard, AltGr is used to type the square bracket. No issue there (yet). 
</p>
        <p>
The issue appears however when typing an array instantiation:<br /></p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">int</span> []
array = <span style="COLOR: #0000ff">new</span><span style="COLOR: #0000ff">int</span>]</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
As you can see, I *wanted* to type new int[], but the opening bracket failed, because
of the added shortcut. Instead, the code wants to perform the Align Assignments command.
This is a clash of shortcuts that I guess only appears on Azerty keyboard layouts.
</p>
        <p>
The solution is either changing or removing the shortcut for this command, as shown
in the image below:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SmallbuginVisualStudioProPowerTools_8469/image_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SmallbuginVisualStudioProPowerTools_8469/image_thumb.png" width="388" height="226" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ea4b0925-1c09-437b-be09-a6400ff0a21a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My NDC2010 sessions and conference impressions</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/06/28/My+NDC2010+Sessions+And+Conference+Impressions.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,378ad80e-550e-4a1a-8aa3-7068e583da0c.aspx</id>
    <published>2010-06-28T17:18:35.4921892-04:00</published>
    <updated>2010-06-28T17:18:35.4921892-04:00</updated>
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="ppt" label="ppt" scheme="http://www.snowball.be/CategoryView,category,ppt.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last week, I gave 2 sessions at NDC 2010 (Norwegian Developer Conference) in Oslo.
I was glad that I was asked by the organization to be part of this conference that
is known for its long list of renowned speakers. Here are my impressions of the conference
as well as the downloads I promised in my sessions.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MyNDC2010sessionsandconferenceimpression_9D55/ndc2010_2.png">
            <img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="ndc2010" border="0" alt="ndc2010" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MyNDC2010sessionsandconferenceimpression_9D55/ndc2010_thumb.png" width="204" height="63" />
          </a>
        </p>
        <p>
          <strong>Conference report</strong>
          <br />
Oslo is a really nice city. I mean really nice. People are friendly, the city is very
clean and apparently, it houses a lot of great developers too.
</p>
        <p>
NDC 2010 took place this year from June 16th until June 18th in the Oslo Spectrum.
The Spectrum is a large event center, comparable to the Sportpaleis in Belgium. For
me, it was the first time I’ve been to a conference that was organized in this type
of center. I was at first wondering whether this would be handy to attend and give
sessions in. Well, it works great ?. You have a great view of the session contents
because of the screens being high in the rooms while you can still see the speaker
very good as well. While giving my sessions, I was still able to have interaction
with and see the audience.  The organization of the event itself was done as
it should as well. So for the conference and infrastructure, a big thumbs up!
</p>
        <p>
While infrastructure is one thing, content of sessions is much more important. One
of the reasons I was really looking forward coming to this event as a speaker, as
I mentioned in the intro, is that it is filled with top speakers for a developer audience
Also, I got to hang out with a great number of fellow RDs. Names included Juval Löwy,
Michelle Bustamente, Ingo Rammer, Richard Campbell, Carl Franklin, Tim Heuer, Billy
Hollis, Rob Conery, Greg Young, Robert Martin and I’m forgetting a whole lot at this
point. This is a formula for success: the Norwegians surely know how to “entertain”
a developer crowd. 
</p>
        <p>
All in all, NDC is a really nice conference that is now on my list of yearly-must-attend
events! Congrats on job well done to the people of Programutvikeling (I hope I’m spelling
it right, my Norwegian is even after a week still horrible).
</p>
        <p>
          <strong>Session downloads<br /></strong>Here are the links for downloads for both my sessions:<br /><a href="http://www.codeflakes.com/data/ndc2010/SilverlightDataGillCleeren.zip" target="_blank"><strong>Silverlight
4 Data Access and Services not for the faint of heart</strong></a></p>
        <p>
          <a href="http://www.codeflakes.com/data/ndc2010/ASPNETCachingGillCleeren.zip" target="_blank">
            <strong>ASP.NET
4 Caching: Performance for free</strong>
          </a>
        </p>
        <p>
          <strong>
          </strong>
          <br />
If you have any questions or remarks, please send me a mail!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=378ad80e-550e-4a1a-8aa3-7068e583da0c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day session: Building an enterprise application with Silverlight and NHibernate</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/06/28/Community+Day+Session+Building+An+Enterprise+Application+With+Silverlight+And+NHibernate.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,e1f2c473-33ec-45d3-9cbd-2a3a43d7a6d0.aspx</id>
    <published>2010-06-28T17:18:23.4299208-04:00</published>
    <updated>2010-06-28T17:18:23.4299208-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
At Community Day 2010, together with Bart Wullems, I gave a session called Building
an enterprise application with Silverlight and NHibernate. You can download the slide
deck and demo below:
</p>
        <p>
          <a href="http://www.communityday.be/cd/ppt/Building%20an%20enterprise%20app%20in%20Silverlight%204.zip" target="_blank">Slide
deck</a>
        </p>
        <p>
          <a href="http://www.codeflakes.com/data/comday2010/TravelPlanner.zip" target="_blank">Demo</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=e1f2c473-33ec-45d3-9cbd-2a3a43d7a6d0" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2010 was a success!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/06/25/Community+Day+2010+Was+A+Success.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,9afa682f-2189-4f70-a8a5-9a47c9f643c0.aspx</id>
    <published>2010-06-25T12:14:12.666-04:00</published>
    <updated>2010-06-27T12:15:42.333561-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The day after… finally!
</p>
        <p>
Although I look forward to Community day almost as much as Christmas every year, I’m
always happy when it is over as well. The main reason for being happy is of course
that everything went great! All sessions were of excellent quality, we had more attendees
once again, no unforeseen things happened (apart from an empty microphone battery
which is really nothing…) and the catering seemed to be really appreciated!
</p>
        <p>
A quick search on Twitter for #ComDay2010 resulted in reactions such as the following:
</p>
        <p>
          <a href="http://twitter.com/maartenballiauw">
            <img alt="Maarten Balliauw" src="http://a3.twimg.com/profile_images/657063585/twitterProfilePhoto_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/maartenballiauw">maartenballiauw</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
Thanks for a great <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a> at
@<a href="http://twitter.com/gillcleeren">gillcleeren</a> and all the other organisers!
Great job! <a href="http://twitter.com/maartenballiauw/status/16947874312">about 20
hours ago</a> via <a href="http://www.hootsuite.com">HootSuite</a></p>
        <p>
          <a href="http://twitter.com/pjadriaensens">
            <img alt="P-J Adriaensens" src="http://a1.twimg.com/profile_images/66430816/pj_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/pjadriaensens">pjadriaensens</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
had a blast at <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a> today!
Great atmosphere, great food &amp; sessions. CU next edition! 
</p>
        <p>
        </p>
        <p>
          <a href="http://twitter.com/svenschelfaut">
            <img alt="Sven Schelfaut" src="http://a1.twimg.com/profile_images/626685736/twitterProfilePhoto_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/svenschelfaut">svenschelfaut</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
Had a great time at <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a> :
great sessions and won an xna unleashed in the end. Seems I have to develop games
in the future :-) 
</p>
        <p>
        </p>
        <p>
          <a href="http://twitter.com/iktjilp">
            <img alt="iktjilp" src="http://a3.twimg.com/profile_images/637508635/iktjilp_icon_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/iktjilp">iktjilp</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
On the way home after a verry interesting <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a></p>
        <p>
        </p>
        <p>
          <a href="http://twitter.com/GroovBird">
            <img alt="Dave Van den Eynde" src="http://a3.twimg.com/profile_images/453656111/dave-001_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/GroovBird">GroovBird</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
          <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a> The food
was much better than last year! 
</p>
        <p>
        </p>
        <p>
          <a href="http://twitter.com/GroovBird">
            <img alt="Dave Van den Eynde" src="http://a3.twimg.com/profile_images/453656111/dave-001_normal.jpg" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/GroovBird">GroovBird</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
          <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a> Props
to the organisation! It's been great! 
</p>
        <p>
        </p>
        <p>
          <a href="http://twitter.com/katriendg">
            <img alt="Katrien De Graeve" src="http://a1.twimg.com/profile_images/98132250/tweet_normal.png" width="48" height="48" />
          </a>
          <strong>
            <a href="http://twitter.com/katriendg">katriendg</a>
          </strong>
        </p>
        <p>
          <a>
          </a>
        </p>
        <p>
Another great event, Community day 2010 is almmost finished. good work from all, congrats! <a href="http://twitter.com/search?q=%23comday2010">#<em>comday2010</em></a></p>
        <p>
Here are some pictures, more will be available soon:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0317_1.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0317" border="0" alt="IMG_0317" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0317_thumb_1.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0321_1.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0321" border="0" alt="IMG_0321" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0321_thumb_1.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0323.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0323" border="0" alt="IMG_0323" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0323_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0324.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0324" border="0" alt="IMG_0324" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0324_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0332.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0332" border="0" alt="IMG_0332" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0332_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0329.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0329" border="0" alt="IMG_0329" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0329_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0330.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0330" border="0" alt="IMG_0330" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0330_thumb.jpg" width="244" height="184" />
          </a>  <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0333.jpg"><img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0333" border="0" alt="IMG_0333" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0333_thumb.jpg" width="184" height="244" /></a><a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0334.jpg"><img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0334" border="0" alt="IMG_0334" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0334_thumb.jpg" width="184" height="244" /></a></p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0335.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0335" border="0" alt="IMG_0335" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0335_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0336.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0336" border="0" alt="IMG_0336" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0336_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0337.jpg">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="IMG_0337" border="0" alt="IMG_0337" src="http://www.snowball.be/content/binary/WindowsLiveWriter/CommunityDay2010wasasuccess_DD35/IMG_0337_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=9afa682f-2189-4f70-a8a5-9a47c9f643c0" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>The jury has spoken: some reviews of my book</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/05/22/The+Jury+Has+Spoken+Some+Reviews+Of+My+Book.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,1ba1a400-fc7b-4e2b-8c23-a931a627ae44.aspx</id>
    <published>2010-05-22T16:06:33.473897-04:00</published>
    <updated>2010-05-22T16:06:33.473897-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Book" label="Book" scheme="http://www.snowball.be/CategoryView,category,Book.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
With my book I wrote together with Kevin Dockx, <em><a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" target="_blank">Microsoft
Silverlight 4 Data and Services Cookbook</a></em>available for a couple of weeks
now, I decided to do a small search on reviews. I’ll be honest, I took all I could
find right now. 
</p>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Thejuryhasspokensomereviewsofmybook_13706/9843_Mockupcover_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="9843_Mockupcover" border="0" alt="9843_Mockupcover" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Thejuryhasspokensomereviewsofmybook_13706/9843_Mockupcover_thumb.jpg" width="198" height="244" />
          </a>
        </p>
        <p>
Here’s the ones I found:
</p>
        <p>
          <strong>Richard Costall:</strong>
        </p>
        <p>
          <em>“Microsoft Silverlight 4 Data and Services Cookbook is a great publication, and
worthy of a place any Silverlight developers bookshelf. The formula of ‘recipes’ works
well, with well explained, yet simple examples covering almost everything you’d ask
when starting out building business applications in Silverlight. It highlights Silverlight
2 and Silverlight 3 functionality differences, yet is right up to date on Silverlight
4.”</em>
        </p>
        <p>
Complete review at: <a title="http://www.nxtgenug.net/Article.aspx?ArticleID=368" href="http://www.nxtgenug.net/Article.aspx?ArticleID=368">http://www.nxtgenug.net/Article.aspx?ArticleID=368</a></p>
        <p>
          <strong>Vikram Pendse writes:</strong>
        </p>
        <p>
          <em>“My Review Comments : * * * * * (5 Stars)..Simple Amazing book !..Go and Grab
your Copy Today !!! :)</em>
        </p>
        <p>
          <em>Impressed with this Book?..want to have a look at? Ok ! What you see is what you
get ! kidding..You can download a sample chapter right away !”</em>
        </p>
        <p>
Complete review at <a title="http://pendsevikram.blogspot.com/2010/05/microsoft-silverlight-4-data-and.html" href="http://pendsevikram.blogspot.com/2010/05/microsoft-silverlight-4-data-and.html">http://pendsevikram.blogspot.com/2010/05/microsoft-silverlight-4-data-and.html</a></p>
        <p>
          <strong>Damir Tomicic writes:</strong>
        </p>
        <p>
          <em>“Das Buch ist sehr praktisch geschrieben. Der Leser merkt sofort, dass Gill und
Kevin die Ansätze selbst ausprobiert und für die Leser optimiert haben. Die gewählte
Sprache ist einfach, die Beispiele auch für Anfänger geeignet. Ein guter Einstieg
in das Thema.”</em>
        </p>
        <p>
Complete review at: <a title="http://tomicic.de/2010/05/05/MicrosoftSilverlight4DataAndServicesCookbookGillcleeren.aspx" href="http://tomicic.de/2010/05/05/MicrosoftSilverlight4DataAndServicesCookbookGillcleeren.aspx">http://tomicic.de/2010/05/05/MicrosoftSilverlight4DataAndServicesCookbookGillcleeren.aspx</a></p>
        <p>
          <strong>Review on Amazon.com</strong>
        </p>
        <p align="left">
          <em>“Good Introduction to the Datagrid, Dataform, and different Services (4/5)”</em>
        </p>
        <p align="left">
          <em>
          </em>
          <br />
Complete review at <a title="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/product-reviews/1847199844/ref=dp_db_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1" href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/product-reviews/1847199844/ref=dp_db_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1">http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/product-reviews/1847199844/ref=dp_db_cm_cr_acr_txt?ie=UTF8&amp;showViewpoints=1</a></p>
        <p align="left">
Interested in my book as well? It is available from <a href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" target="_blank">Packt
Publishing</a>, <a href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844" target="_blank">Amazon.com</a>, <a href="http://www.amazon.co.uk/exec/obidos/ASIN/1847199844/ref=ox_ya_os_product" target="_blank">Amazon
UK</a> and many other retailers as well! I hope you enjoy it!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1ba1a400-fc7b-4e2b-8c23-a931a627ae44" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2010 registration open: register now!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/05/11/Community+Day+2010+Registration+Open+Register+Now.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b7caebd0-94f5-45be-9194-1e8d13f7eec7.aspx</id>
    <published>2010-05-11T05:35:01.5348015-04:00</published>
    <updated>2010-05-11T05:35:01.5348015-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>
            <img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="" src="http://www.communityday.be/CD/Portals/0/blogblinglarge.png" width="500" height="100" />
          </strong>
        </p>
        <p>
Community Day 2010 is coming! Registration is now open.
</p>
        <p>
No less than fourteen Microsoft user groups combine their efforts to organize this
unique <b>knowledge-sharing </b>and <b>networking</b> event. With so many new <b>Microsoft
product</b> and <b>technology releases</b>, the content of this Community Day will
be focusing on Visual Studio 2010, SharePoint 2010, Silverlight 4, Office 2010, SQL
Server 2008 R2, OCSR2, and many more!<br />
So don’t miss out on the Community Day and join us on <b>Thursday June 24th </b>in
Utopolis, <b>Mechelen</b>. We will bring together more than <b>300 IT Pro’s</b> and <b>developers</b>. 
<br />
The Community Day 2010 is brought to you by <strong>Azug, Besug, Biwug, IT-Talks Pro-Exchange,
SCUG, SQLUG, VBIB, Visug, WinSec, XNA-BUG, CLUG, MyTIC and DotNetHub</strong>. 
</p>
        <p>
Register now for free at <a href="http://www.communityday.be">www.communityday.be</a> !
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b7caebd0-94f5-45be-9194-1e8d13f7eec7" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>VBUG sessions and demos</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/05/03/VBUG+Sessions+And+Demos.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,116c56f6-a21a-4d51-9ee1-89ebfedbd08c.aspx</id>
    <published>2010-05-03T04:15:25.27109-04:00</published>
    <updated>2010-05-03T04:15:25.27109-04:00</updated>
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here are the slides and demos of the VBUG Spring Conference in Birmingham. I hope
you enjoyed it, and I hope to be back soon :)
</p>
        <p>
          <a href="http://www.codeflakes.com/data/vbug/slides.zip" target="_blank">Slides</a>
        </p>
        <p>
          <a href="http://www.codeflakes.com/data/vbug/demos.zip" target="_blank">Demos</a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=116c56f6-a21a-4d51-9ee1-89ebfedbd08c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My book released: Silverlight 4 Data and Services Cookbook</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/26/My+Book+Released+Silverlight+4+Data+And+Services+Cookbook.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7a2522f3-d37d-4257-8353-405aa946a7b6.aspx</id>
    <published>2010-04-26T10:32:01.0861075-04:00</published>
    <updated>2010-04-26T10:32:01.0861075-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Earlier today, I got confirmation that my first book I wrote (together with Kevin
Dockx) has been published and can now be ordered, both in e-book and hard copy. This
is the new cover. The book also marks the launch of the new brand of Packt, namely
Packt Enterprise.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/MybookreleasedSilverlight4DataandService_E8A8/9843_Mockupcover_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="9843_Mockupcover" border="0" alt="9843_Mockupcover" src="http://www.snowball.be/content/binary/WindowsLiveWriter/MybookreleasedSilverlight4DataandService_E8A8/9843_Mockupcover_thumb.jpg" width="332" height="410" />
          </a>
        </p>
        <p>
The e-book version is available from the publisher’s website: <a title="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book">https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book</a> .
On this site, you can also get a discount on the printed version.
</p>
        <p>
You can also buy the book from Amazon of course (which at this moment still lists
it as pre-order though). If you shop at Amazon.com, you can get your copy here: <a title="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844" href="http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844">http://www.amazon.com/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844</a>.
If you rather order at Amazon UK, you can order here: <a title="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1272289229&amp;sr=8-1" href="http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1272289229&amp;sr=8-1">http://www.amazon.co.uk/Microsoft-Silverlight-Data-Services-Cookbook/dp/1847199844/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1272289229&amp;sr=8-1</a>. 
</p>
        <p>
If you want to get a more in-depth look at what the book has to offer, take a look
here: <a title="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book#in_detail" href="https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book#in_detail">https://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book#in_detail</a> . 
</p>
        <p>
          <strong>What the book is about:</strong>
        </p>
        <p>
Silverlight 3 made a big step into Line-Of-Business applications and Silverlight 4
builds further on this. This book is not a general Silverlight 4 overview book; it
is uniquely aimed at developers who want to build data-driven applications using Silverlight.
It focuses on showing . NET developers how to interact with and handle multiple sources
of data in Silverlight business applications and how to solve particular data problems,
following a practical hands-on approach, using real-world recipes in a practical cookbook
format. The book is aimed at Silverlight 4, however most of the covered features work
both in Silverlight 3 and 4. 
</p>
        <p>
By following the practical recipes in this book, you will learn the concepts needed
to create data-rich business applications—from the basic creation of a Silverlight
application, to displaying data using data binding and upgrading your existing applications
to use Silverlight. 
</p>
        <p>
          <b>Who this book is written for:</b>
        </p>
        <p>
If you are a .NET developer who wants to build professional data-driven applications
with Silverlight, then this book is for you. Basic Silverlight experience and familiarity
with accessing data using ADO.NET in regular .NET applications is required. 
</p>
        <p>
          <b>What you will learn from this book:</b>
        </p>
        <ul>
          <li>
Display and validate data efficiently in Silverlight business applications using data
binding</li>
          <li>
Use the full power of the important data controls in Silverlight such as the DataGrid
and the DataForm</li>
          <li>
Discover how your Silverlight business applications can quickly access data residing
in a database or even Windows Azure by calling web services using XML, RSS, JSON and
more</li>
          <li>
Exchange information between Silverlight clients and WCF or ASMX services in your
Silverlight business applications</li>
          <li>
Add functionality to your Silverlight business applications by harnessing REST and
WCF Data Services</li>
          <li>
Communicate with well-known REST APIs such as Flickr and Twitter from Silverlight</li>
          <li>
Simplify your data-driven business application development with WCF RIA Services</li>
        </ul>
        <p>
You can also read some sample recipes on the Packt site here: <a title="https://www.packtpub.com/article/inserting-updating-deleting-sorting-grouping-displaying-data-grid-silverlight" href="https://www.packtpub.com/article/inserting-updating-deleting-sorting-grouping-displaying-data-grid-silverlight">https://www.packtpub.com/article/inserting-updating-deleting-sorting-grouping-displaying-data-grid-silverlight</a> . 
</p>
        <p>
I do hope you’ll like the book. If you have any questions on the book, don’t hesitate
to mail me at <a href="mailto:silverlight@snowball.be">silverlight@snowball.be</a> . 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7a2522f3-d37d-4257-8353-405aa946a7b6" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Video of my DevDays session online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/12/Video+Of+My+DevDays+Session+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0c86007b-5e06-42ab-9fb8-6c88132e810e.aspx</id>
    <published>2010-04-12T18:10:38.0769755-04:00</published>
    <updated>2010-04-12T18:10:38.0769755-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just noticed that the video of my session on ASP.NET 4.0 at DevDays Netherlands
is online. You can watch it here: <a title="http://channel9.msdn.com/posts/matthijs/Whats-hot-in-ASPNET-40-by-Gill-Cleeren/" href="http://channel9.msdn.com/posts/matthijs/Whats-hot-in-ASPNET-40-by-Gill-Cleeren/">http://channel9.msdn.com/posts/matthijs/Whats-hot-in-ASPNET-40-by-Gill-Cleeren/</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0c86007b-5e06-42ab-9fb8-6c88132e810e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Developers cheering all over the world: Visual Studio 2010 is here!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/12/Developers+Cheering+All+Over+The+World+Visual+Studio+2010+Is+Here.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d51b8012-035f-487f-96ff-9701f97fb9ad.aspx</id>
    <published>2010-04-12T17:54:13.775-04:00</published>
    <updated>2010-04-12T18:06:28.5158-04:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="C#" label="C#" scheme="http://www.snowball.be/CategoryView,category,C.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="VS2010" label="VS2010" scheme="http://www.snowball.be/CategoryView,category,VS2010.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
After beta’s and one RC release, starting today, we can get our hands on Visual Studio
2010 RTM. Just hours ago, Microsoft held a keynote on the release of their flagship
IDE, Visual Studio 2010. This release coincides with the release of .NET 4.0 and of
course Silverlight 4, which has its official launch event tomorrow. This marks probably
the largest release ever for developers from Microsoft.
</p>
        <p align="center">
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_2.png" width="290" height="244" /></a></p>
        <p>
          <strong>I need it badly</strong>
        </p>
        <p>
Visual Studio 2010 is like honey, developers swarm to it. It’s understandable that
you want to get your hands on the bits. Where can you get them?<br />
If you’re an MSDN subscriber, you’re in luck, as you can get all the bits from the
MSDN subscription site. (<a href="http://msdn.microsoft.com/subscriptions">http://msdn.microsoft.com/subscriptions</a>)<br />
If you are not, you have the following options:
</p>
        <ul>
          <li>
Download a trial: <a title="http://www.microsoft.com/visualstudio/en-us/download" href="http://www.microsoft.com/visualstudio/en-us/download">http://www.microsoft.com/visualstudio/en-us/download</a></li>
          <li>
Download the fully functional Express editions: <a title="free Express editions" href="http://www.microsoft.com/express/">free
Express editions</a></li>
          <li>
Team Foundation Server 2010 trial: <a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=8bb22356-7dfb-4999-9d76-43abddcf6eec&amp;displaylang=en</a></li>
        </ul>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb.png" width="307" height="256" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <strong>Why you need it</strong>
        </p>
        <p>
If I wanted to make a list of reasons why you should be upgrading to Visual Studio
2010, I would be up all night I think. Since it’s quite late already, I’m going to
make an all-but-complete list with my top features that make Visual Studio 2010 an
not-to-miss upgrade. (For the complete list – you’re warned, it’s very complete –
take a look here: <a title="http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx">http://msdn.microsoft.com/en-us/library/bb386063(VS.100).aspx</a>)
</p>
        <p>
          <strong>
            <em>The IDE looks really stylish!</em>
          </strong>
        </p>
        <p>
Upon opening Visual Studio 2010 for the first time, you’ll immediately notice that
something happened… Something big. No longer the traditional grey interface, but an
exciting new look for the place you spend all your development hours in. <strong>Built
entirely in WPF</strong>, the new shell offers plenty of extension points so you can
make it feel even more like home.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_1.png" width="446" height="310" />
          </a>
        </p>
        <p>
          <strong>
            <em>New IDE features</em>
          </strong>
        </p>
        <p>
I personally like the <strong>Navigate To</strong> function a lot (I blogged about
it yesterday here: <a title="Visual Studio 2010 Tip- Navigate to functionality" href="http://www.snowball.be/2010/04/11/Visual+Studio+2010+Tip+Navigate+To+Functionality.aspx">Visual
Studio 2010 Tip- Navigate to functionality</a>). Another one I like is the <strong>zoom
in/out</strong> we can now do in the code editor. This is a real life-saver when doing
demos on stage or when showing someone some code. Simply keep CTRL key pressed and
rotate that mouse wheel of yours. For people who work on <strong>multiple monitors</strong>,
Visual Studio now supports this much better!
</p>
        <p>
Some other nice features:
</p>
        <ul>
          <li>
Improved IntelliSense 
</li>
          <li>
Highlight references 
</li>
          <li>
Stub generation</li>
        </ul>
        <p>
          <strong>
            <em>New framework and languages</em>
          </strong>
        </p>
        <p>
Visual Studio 2010 comes packed with new releases. 
</p>
        <ul>
          <li>
Silverlight 4 :) More on this at the launch event tomorrow! 
</li>
          <li>
C# 4.0 adds interesting new features to the language (more <a href="http://msdn.microsoft.com/en-us/library/bb383815(VS.100).aspx" target="_blank">here</a>).
Also VB.net developers aren’t left outside in the cold, their favorite language gets
an upgrade as well to <a href="http://msdn.microsoft.com/en-us/vbasic/default.aspx" target="_blank">Visual
Basic 2010</a>. 
</li>
          <li>
ASP.NET 4.0 as well as MVC 2 are born! If you want to get an overview of what’s new,
download my talk of DevDays 2010 <a href="http://www.snowball.be/2010/04/04/DevDays+2010+Session+Slides+And+Demos.aspx" target="_blank">here</a>.
Most striking new features in WebForms 4 are client IDs, control over ViewState and
more control over the HTML that’s being rendered. 
</li>
          <li>
            <a href="http://msdn.microsoft.com/en-us/data/default.aspx" target="_blank">Entity
Framework</a> makes a jump and goes straight to v4. 
</li>
          <li>
WCF and WF both get an upgrade to v4 as well. 
</li>
          <li>
TFS installation gets really simple using <a href="http://www.snowball.be/2009/10/20/Setting+Up+TFS+Basic+With+Visual+Studio+2010.aspx" target="_blank">TFS
Basic</a>. 
</li>
          <li>
F# is now available for the functional programming needs. 
</li>
          <li>
SharePoint templates! 
</li>
        </ul>
        <p>
          <strong>I want more</strong>
        </p>
        <p>
Not enough reading material for your brain? A free ebook is made available “Moving
to Visual Studio 2010” <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=12a6de81-c633-4f2c-a35f-cea6fe772712" target="_blank">here</a>.
</p>
        <p>
          <strong>Warnings here!</strong>
        </p>
        <p>
Something to watch out for: currently, the Windows Phone 7 tools do not work with
the RTM version of 2010. Read more on this here: <a title="http://forums.silverlight.net/forums/t/175181.aspx" href="http://forums.silverlight.net/forums/t/175181.aspx">http://forums.silverlight.net/forums/t/175181.aspx</a> 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_8.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DeveloperscheeringallovertheworldVisualS_15037/image_thumb_3.png" width="699" height="82" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d51b8012-035f-487f-96ff-9701f97fb9ad" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 Tip: Navigate to functionality</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/11/Visual+Studio+2010+Tip+Navigate+To+Functionality.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0e112a49-aa20-4842-a034-6d1b92682b97.aspx</id>
    <published>2010-04-11T18:04:55.014629-04:00</published>
    <updated>2010-04-11T18:04:55.014629-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="VS2010" label="VS2010" scheme="http://www.snowball.be/CategoryView,category,VS2010.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Very often, you need to navigate to a class while coding. Perhaps a class you wrote
yourself, perhaps you just want to see the members of a type of the .NET framework.
</p>
        <p>
Visual Studio 2010 has THE ultimate feature for this, namely the Navigate To function.
What you do, is hit CTRL + , (yes, indeed the comma) and it will open the Navigate
To window, as shown below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_thumb.png" width="370" height="265" />
          </a>
        </p>
        <p>
This window follows the same rules as the new IntelliSense: if I’m searching for a
property “OverPaid”, I can search by typing Over… or just use OP.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_thumb_1.png" width="376" height="227" />
          </a>
        </p>
        <p>
If you have some text already selected in the code editor, the window will perform
its search from there.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipNavigatetofunctionali_143/image_thumb_2.png" width="566" height="287" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0e112a49-aa20-4842-a034-6d1b92682b97" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Watch the Visual Studio 2010 Launch keynote live</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/08/Watch+The+Visual+Studio+2010+Launch+Keynote+Live.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f92f4fb5-5053-4212-865e-e1bdd04659d4.aspx</id>
    <published>2010-04-08T17:02:52.278308-04:00</published>
    <updated>2010-04-08T17:02:52.278308-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Visual Studio.net" label="Visual Studio.net" scheme="http://www.snowball.be/CategoryView,category,VisualStudionet.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Are you counting down the days to the Visual Studio 2010 launch as well? I really
hope so, as it’s the biggest release for developers EVER! The list of new features
is way too long to put in a simple post, so therefore I encourage you to watch the
keynote live next week on April 13th 8AM PST (that’s 5PM in the afternoon Belgian
time). Click <a href="http://www.silverlight.net/resources/images/content/misc/Silverlight-4-Launch-with-Scott-Guthrie-April-14-2010.ics" target="_blank">here</a> to
add the event straight to your Outlook calendar.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f92f4fb5-5053-4212-865e-e1bdd04659d4" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Community Day 2010 officially announced</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/05/Community+Day+2010+Officially+Announced.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ed7044c8-af30-4a54-90fb-dc5a68c10397.aspx</id>
    <published>2010-04-05T12:03:36.628-04:00</published>
    <updated>2010-04-08T17:03:45.729965-04:00</updated>
    <category term="Community Day" label="Community Day" scheme="http://www.snowball.be/CategoryView,category,CommunityDay.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
After some behind-the-scenes work, I’m happy to announce that <strong><a href="http://www.communityday.be" target="_blank">Community
Day 2010</a></strong> will take place on <strong>June 24th 2010</strong> in <strong>Utopolis
Mechelen</strong>. 
</p>
        <p>
This <strong>fourth installment of THE community event of the year</strong> will of
course focus on all the new technologies that are coming out of Microsoft these months,
including Visual Studio 2010, SharePoint 2010, Office 2010, Silverlight 4, .NET 4.0,
SQL Server 2008 R2 etc.
</p>
        <p>
New this year is that we have a dedicated track on one specific technology and that
will be <strong>SharePoint 2010</strong>. This track will contain general SharePoint
2010 sessions as well as more specific ones, such as working with Silverlight and
SharePoint.
</p>
        <p>
The usergroups are working on the agenda now, I hope to announce the complete agenda
around April 25th. Also around that time, we will open the registrations on the site.
</p>
        <p>
For now, check out <a href="http://www.communityday.be">www.communityday.be</a>. If
you are part of a company that wants to join us as a sponsor in organizing this event,
send a mail to <a href="mailto:gillcleeren@gmail.com">gillcleeren@gmail.com</a>. An
event such as this one can of course only take place because of the ongoing support
of sponsors and usergroups.
</p>
        <p>
I hope to meet many of you on June 24th!
</p>
        <p>
PS: we will NOT be serving French Fries again ;-) . We’re working on a great formula
to have some really good food this year! More hopefully very soon!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ed7044c8-af30-4a54-90fb-dc5a68c10397" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Upcoming conference: VBUG Spring Conference 2010</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/05/Upcoming+Conference+VBUG+Spring+Conference+2010.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,843f4e58-6a40-49b4-96e8-9027c845f499.aspx</id>
    <published>2010-04-05T08:41:54.9085035-04:00</published>
    <updated>2010-04-05T08:41:54.9085035-04:00</updated>
    <category term="Community" label="Community" scheme="http://www.snowball.be/CategoryView,category,Community.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This month, you can meet me at the VBUG Spring Conference 2010 in Birmingham, UK.
I’ll be doing a talk on Silverlight 4 and WPF 4.
</p>
        <p>
Here’s more info on the event:
</p>
        <p>
          <em>Thursday 29th April 2010</em>
        </p>
        <p>
          <em>Our Spring Conference this year has the theme <strong>VBUG4Thought </strong>and
takes place in the Midlands at the </em>
          <a href="http://www.heritage-motor-centre.co.uk">
            <em>Heritage
Motor Centre </em>
          </a>
          <em>which is situated just two minutes from J12 M40 and is easy
for you to find. </em>
        </p>
        <p>
          <em>With the imminent release of Microsoft Visual Studio 2010 and the .Net framework
4, <strong>VBUG4Thought</strong> celebrates and highlights these new products. 
<br />
This conference is ideal if you wish to learn about the new enhancements, features
and capabilities of VS2010 and .Net 4. The conference will also give you an overview
of how you can apply these technologies in new or existing projects. 
<br />
As usual, we'll be featuring key speakers from the UK and abroad in order to give
you expert, impartial and informative advice. </em>
        </p>
        <p>
          <em>We are delighted to have the following speakers: </em>
        </p>
        <p>
          <strong>
            <a href="http://www.vbug.co.uk/Speakers/Eric-Nelson.aspx">
              <em>Eric Nelson</em>
            </a>
          </strong>
          <em> - 
Building an Application for Windows Azure &amp; SQL Azure<br /><strong><a href="http://www.vbug.co.uk/Speakers/Gill-Cleeren.aspx">Gill Cleeren</a></strong> -
Silverlight 4 tour de force, with a little WPF 4 sauce on top<br /><strong><a href="http://www.vbug.co.uk/Speakers/Hadi-Hariri.aspx">Hadi Hariri</a></strong> -
Real-world applications with ASP.NET MVC and jQuery<br /><strong><a href="http://www.vbug.co.uk/Speakers/Dave-Sussman.aspx">Dave Sussman</a></strong> -
What you really need to know about .NET 4.0 and Visual Studio 2010<br /><strong><a href="http://www.vbug.co.uk/Speakers/Jon-Skeet.aspx">Jon Skeet</a></strong> -
Don't call us, we'll call you: an introduction to the Reactive Extensions to .NET 
<br /></em>
          <a href="http://www.vbug.co.uk/Speakers/Josh-Twist.aspx">
            <em>Josh Twist</em>
          </a>
          <em> -
Building an App Store for the enterprise with MEF and .NET 4.0</em>
        </p>
        <p>
          <em>For full agenda click </em>
          <a href="http://www.vbug.co.uk/Conference/2009/VBUG4Thought-Agenda.aspx">
            <em>here</em>
          </a>
        </p>
        <p>
Hope to meet some of you there!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=843f4e58-6a40-49b4-96e8-9027c845f499" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Visug Nerd Dinner was a success!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/04/Visug+Nerd+Dinner+Was+A+Success.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,3864f099-89ca-4690-b927-5da8edfa2657.aspx</id>
    <published>2010-04-04T12:50:30.367596-04:00</published>
    <updated>2010-04-04T12:50:30.367596-04:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
To finish the 2010 version of TechDays, we at Visug were lucky to be able to do a
nerd dinner with <a href="http://www.hanselman.com/blog" target="_blank">Scott Hanselman</a>.
Over 50 Visug’ers came to the dinner, making the whole night a true success. Not only
Scott came to the dinner, we also had the company of Sara Ford, Charley Kindle, Bart
De Smet and other Microsoft employees.
</p>
        <p>
Stijn Volders was kind enough to take some pictures, the complete set can be viewed <a href="http://www.flickr.com/photos/stin_o/sets/72157623629503853/" target="_blank">here</a>.
</p>
        <p>
          <img title="" alt="VisugNerdDinner-1 by Stijn Volders." src="http://farm5.static.flickr.com/4031/4483340125_88ae58e5fc.jpg" width="224" height="149" /> <img title="" alt="VisugNerdDinner-8 by Stijn Volders." src="http://farm5.static.flickr.com/4046/4483990178_6c81b24b9c.jpg" width="100" height="150" /> <img title="" alt="VisugNerdDinner-16 by Stijn Volders." src="http://farm3.static.flickr.com/2746/4483341411_53eeaa5a50.jpg" width="223" height="149" /></p>
        <p>
          <img title="" alt="VisugNerdDinner-27 by Stijn Volders." src="http://farm3.static.flickr.com/2697/4483342403_91ebd7b3e0.jpg" width="219" height="146" /> <img title="" alt="VisugNerdDinner-39 by Stijn Volders." src="http://farm5.static.flickr.com/4002/4483343281_8f222118aa.jpg" width="219" height="146" /> <img title="" alt="VisugNerdDinner-18 by Stijn Volders." src="http://farm3.static.flickr.com/2686/4483341535_52a8bc3f6c.jpg" width="219" height="146" /></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3864f099-89ca-4690-b927-5da8edfa2657" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>TechDays 2010: My sessions slides and demos</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/04/TechDays+2010+My+Sessions+Slides+And+Demos.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,dcf953c8-6bae-4573-a55f-1732b80fea97.aspx</id>
    <published>2010-04-04T11:06:40.3766925-04:00</published>
    <updated>2010-04-04T11:06:40.3766925-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="Events" label="Events" scheme="http://www.snowball.be/CategoryView,category,Events.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <category term="Slide decks" label="Slide decks" scheme="http://www.snowball.be/CategoryView,category,SlideDecks.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Overlapping with the Dutch DevDays event this year, I was of course present at TechDays
2010 Belgium as well. TechDays really became a big event with lots of attendees, speakers
and sponsors. Never before had the line-up of speakers been so impressive, with names
such as Anders Hejlsberg, Scott Hanselman, Charley Kindel… The feedback that I’ve
heard was very positive, with the general comment being that the session content was
good, deep dive and well brought by the speakers.
</p>
        <p>
I got 2 session slots: 
</p>
        <ul>
          <li>
Silverlight 4 Tour de Force with a little WPF 4 sauce on top (together with <a href="http://blogs.msdn.com/katriend" target="_blank">Katrien
De Graeve</a>)</li>
          <li>
Building Data-Driven applications FAST with RIA services and Silverlight</li>
        </ul>
        <p>
As promised during the talks, I have uploaded all slide decks and demos for both sessions
below. You can download them and use them as you like.
</p>
        <ul>
          <li>
Silverlight 4 Tour de Force with a little WPF 4 sauce on top</li>
          <ul>
            <li>
              <strong>
                <a href="http://www.codeflakes.com/data/techdays2010/sl4/Silverlight4WPF4GillCleeren.zip" target="_blank">Slides</a>
              </strong>
            </li>
            <li>
              <strong>
                <a href="http://www.codeflakes.com/data/techdays2010/sl4/demos.zip" target="_blank">Demos</a>
              </strong>
            </li>
          </ul>
          <li>
Building Data-Driven applications FAST with RIA services and Silverlight</li>
          <ul>
            <li>
              <strong>
                <a href="http://www.codeflakes.com/data/techdays2010/ria/BuildingDataDrivenApplicationsFASTWithWCFRIAServicesAndSilverlightGillCleeren.zip" target="_blank">Slides</a>
              </strong>
            </li>
            <li>
              <strong>
                <a href="http://www.codeflakes.com/data/techdays2010/ria/demos.zip" target="_blank">Demos</a>
              </strong>
            </li>
          </ul>
        </ul>
        <p>
I took some pictures during the event as well. Below I posted some, the entire set
can be seen <a href="http://www.flickr.com/photos/gillcleeren/sets/72157623767177714/" target="_blank">here</a>.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0079.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0079" border="0" alt="IMG_0079" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0079_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0106.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0106" border="0" alt="IMG_0106" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0106_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0083.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0083" border="0" alt="IMG_0083" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0083_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0095.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0095" border="0" alt="IMG_0095" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0095_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0104.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0104" border="0" alt="IMG_0104" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0104_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0092.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0092" border="0" alt="IMG_0092" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechDays2010Mysessionsslidesanddemos_F0B7/IMG_0092_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=dcf953c8-6bae-4573-a55f-1732b80fea97" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>DevDays 2010: session slides and demos</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/04/04/DevDays+2010+Session+Slides+And+Demos.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d53e11c2-15cc-4cd9-adca-93f34efd1df3.aspx</id>
    <published>2010-04-04T10:37:27.7427745-04:00</published>
    <updated>2010-04-04T10:37:27.7427745-04:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="ASP.net" label="ASP.net" scheme="http://www.snowball.be/CategoryView,category,ASPnet.aspx" />
    <category term="Slide decks" label="Slide decks" scheme="http://www.snowball.be/CategoryView,category,SlideDecks.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On March 29th and 30th 2010, DevDays 2010 Netherlands took place for the 13th time. 
The event, if I heard and remember correctly, had over 2300 attendees and 120 developer
sessions.
</p>
        <p>
I was there, for the second year in a row, as speaker and gave a talk on ASP.NET 4.0.
The session slides and demos are available for you to download and use:
</p>
        <p>
          <a href="http://www.codeflakes.com/data/DevDays2010/ASP.NET4.0GillCleeren.zip" target="_blank">
            <strong>Slides</strong>
          </a>
        </p>
        <p>
          <a href="http://www.codeflakes.com/data/DevDays2010/demos.zip" target="_blank">
            <strong>Demos</strong>
          </a>
        </p>
        <p>
Here are some images of the event I took with my phone. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0044.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0044" border="0" alt="IMG_0044" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0044_thumb.jpg" width="244" height="184" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0014.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0014" border="0" alt="IMG_0014" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0014_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0070.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0070" border="0" alt="IMG_0070" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0070_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0061.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0061" border="0" alt="IMG_0061" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0061_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0056.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0056" border="0" alt="IMG_0056" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0056_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0046.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0046" border="0" alt="IMG_0046" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0046_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0053.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0053" border="0" alt="IMG_0053" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0053_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0063.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0063" border="0" alt="IMG_0063" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0063_thumb.jpg" width="184" height="244" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0069.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_0069" border="0" alt="IMG_0069" src="http://www.snowball.be/content/binary/WindowsLiveWriter/DevDays2010sessionslidesanddemos_E99B/IMG_0069_thumb.jpg" width="184" height="244" />
          </a>
        </p>
        <p>
The rest of the pictures can be found <a href="http://www.flickr.com/photos/gillcleeren/sets/72157623642787799/" target="_blank">here</a>. 
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d53e11c2-15cc-4cd9-adca-93f34efd1df3" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Our book now featured on Silverlight.net</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/03/15/Our+Book+Now+Featured+On+Silverlightnet.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,8e6c9db0-0516-415b-be83-7413ee6b168c.aspx</id>
    <published>2010-03-15T19:08:12.873037-04:00</published>
    <updated>2010-03-15T19:08:12.873037-04:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just noticed now that Silverlight 4 officially hit RC, that the book I wrote (together
with Kevin Dockx) is now featured on Silverlight.net: <a title="http://www.silverlight.net/learn/books/" href="http://www.silverlight.net/learn/books/">http://www.silverlight.net/learn/books/</a> .
Really cool to be on that site!!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8e6c9db0-0516-415b-be83-7413ee6b168c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>DevDays Netherlands almost here, talk on ASP.NET 4.0</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/03/08/DevDays+Netherlands+Almost+Here+Talk+On+ASPNET+40.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,202fa83f-e394-4bf9-850f-8504bd06c636.aspx</id>
    <published>2010-03-08T18:07:12.4722485-05:00</published>
    <updated>2010-03-08T18:07:12.4722485-05:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The month of March has already started. That means that the biggest conference for
the Netherlands is almost upon us: DevDays 2010 (<a href="http://www.devdays.nl">www.devdays.nl</a>).
</p>
        <p>
About the conference (Dutch): 
</p>
        <p>
          <em>DevDays 2010: het grootste Microsoft evenement in Nederland voor software development
en softwarearchitectuur. Duizenden professionals bezoeken jaarlijks DevDays om in
twee dagen weer volledig op de hoogte te raken van alle actuele ontwikkelingen op
hun vakgebied.</em>
        </p>
        <p>
I’ll be doing a talk on ASP.NET 4.0 What’s new (<a href="http://www.devdays.nl/Agenda.aspx?pid=66&amp;lang=nl">http://www.devdays.nl/Agenda.aspx?pid=66&amp;lang=nl</a>).
Hope to see you there!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=202fa83f-e394-4bf9-850f-8504bd06c636" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>I’ll be speaking at Spring Conference Birmingham 2010 UK</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/03/08/Ill+Be+Speaking+At+Spring+Conference+Birmingham+2010+UK.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ee684449-3228-4358-9cce-a25518da6f64.aspx</id>
    <published>2010-03-08T18:03:47.494157-05:00</published>
    <updated>2010-03-08T18:03:47.494157-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Speaking" label="Speaking" scheme="http://www.snowball.be/CategoryView,category,Speaking.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the coming weeks and months, I’ll be presenting at several conferences. In April,
I’m booked to give a talk on Silverlight 4 and WPF 4 in Birmingham for VBUG’s Spring
Conference 2010. You can find the full agenda here: <a title="http://www.vbug.co.uk/" href="http://www.vbug.co.uk/">http://www.vbug.co.uk/</a></p>
        <p>
The event takes place at <a href="http://www.heritage-motor-centre.co.uk">Heritage
Motor Centre</a> on Thursday April 29th 2010. 
</p>
        <p>
About the conference:
</p>
        <p>
          <em>With the imminent release of Microsoft Visual Studio 2010 and the .Net framework
4, <strong>'VBUG4Thought</strong>' celebrates and highlights these new products. 
<br />
This conference is ideal if you wish to learn about the new enhancements, features
and capabilities of VS2010 and .Net 4. The conference will also give you an overview
of how you can apply these technologies in new or exisiting projects. 
<br />
As usual, we'll be featuring key speakers from the UK and abroad in order to give
you expert, impartial and informative advice. <strong>Hadi Hariri, Jon Skeet, Gill
Cleeren, Dave Sussman, Josh Twist and Eric Nelson</strong> are confirmed as speakers.</em>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ee684449-3228-4358-9cce-a25518da6f64" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Some interesting Microsoft case studies</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/03/08/Some+Interesting+Microsoft+Case+Studies.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,54ab2225-ad16-4b42-81ea-5d28e68f32e6.aspx</id>
    <published>2010-03-08T18:00:00.5252855-05:00</published>
    <updated>2010-03-08T18:00:00.5252855-05:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.snowball.be/CategoryView,category,Azure.aspx" />
    <category term="Case studies" label="Case studies" scheme="http://www.snowball.be/CategoryView,category,CaseStudies.aspx" />
    <category term="Microsoft" label="Microsoft" scheme="http://www.snowball.be/CategoryView,category,Microsoft.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In my busy time (see previous post), some really interesting case studies were released. 
</p>
        <ul>
          <li>
            <div align="left">On iis.net, a huge white paper was posted on the Sunday Night Football
site. This site, which may not be known to European readers as much, is now built
entirely on Silverlight 3 backed by IIS Smooth Streaming. The latter, an ability to
dynamically adapt the bit rate of the video stream, is unique in a RIA technology:
for example Flash does not have this on board. This way, viewers with lower bandwidth
or slower PC processors frequently experience long periods of video buffering, stuttering,
and degraded picture quality. Silverlight solves this. The white paper can be read
at <a title="http://learn.iis.net/page.aspx/808/sunday-night-football-live-in-hd-with-microsoft-silverlight-3-and-iis-smooth-streaming/" href="http://learn.iis.net/page.aspx/808/sunday-night-football-live-in-hd-with-microsoft-silverlight-3-and-iis-smooth-streaming/">http://learn.iis.net/page.aspx/808/sunday-night-football-live-in-hd-with-microsoft-silverlight-3-and-iis-smooth-streaming/</a></div>
          </li>
          <li>
            <div align="left">The second interesting case study can be found at <a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005861%0d">http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005861%0d</a> .
This case describes the use of Windows Azure by Outback Steakhouse. Outback was looking
for a social networking presence but did not know what to expect in visitor numbers.
Windows Azure offered them exactly what they needed.
</div>
          </li>
        </ul>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=54ab2225-ad16-4b42-81ea-5d28e68f32e6" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Busy times… but my first book is almost here!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/03/08/Busy+Times+But+My+First+Book+Is+Almost+Here.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,322fdadd-b49e-406d-9a30-56956181bb8c.aspx</id>
    <published>2010-03-08T17:31:07.206-05:00</published>
    <updated>2010-03-08T17:35:53.8694925-05:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As many of you may already know, I’m working on a book titled Silverlight 4 Data and
Services Cookbook. Writing my first book (together with fellow Silverlight addict
Kevin Dockx) has taken a lot of my time, I haven’t been able to blog as much as I
used to. My sincere apologies for that :)
</p>
        <p>
The good news is that the book is almost done, we’re in the last straight line to
the publication stage! Even more good news is that the book is already available for
pre-order at the publisher’s site: <a title="http://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book" href="http://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book">http://www.packtpub.com/microsoft-silverlight-4-data-and-services-cookbook/book</a> .
</p>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/Busytimes_14911/1847199844_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="1847199844" border="0" alt="1847199844" src="http://www.snowball.be/content/binary/WindowsLiveWriter/Busytimes_14911/1847199844_thumb.jpg" width="270" height="333" />
          </a>
        </p>
        <p>
          <strong>The contents of the books is the following:</strong>
        </p>
        <p>
          <em>Over 85 practical recipes for creating rich, data-driven business applications
in Silverlight </em>
        </p>
        <ul>
          <li>
            <em>Design and develop rich data-driven business applications in Silverlight </em>
          </li>
          <li>
            <em>Rapidly interact with and handle multiple sources of data and services within
Silverlight business applications </em>
          </li>
          <li>
            <em>Understand sophisticated data access techniques in your Silverlight business applications
by binding data to Silverlight controls, validating data in Silverlight, getting data
from services into Silverlight applications and much more! </em>
          </li>
          <li>
            <em>Packed with practical, hands-on cookbook recipes, illustrating the techniques
to solve particular data problems effectively within your Silverlight business applications</em>
          </li>
        </ul>
        <p>
          <em>
            <strong>In detail:</strong>
          </em>
        </p>
        <blockquote>
          <em>Microsoft Silverlight is a programmable web browser plugin that enables
features including animation, vector graphics, and audio-video playback – features
that characterize Rich Internet Applications. However, Silverlight is a great (and
growing) Line-Of-Business platform and is increasingly being used to build data-driven
business applications. Silverlight Data Services enable efficient access to your data,
allowing you to draw on multiple sources of data and solve particular data problems.
There is very little existing material that demonstrates how to build data-driven
solutions with the platform. Silverlight 3 made a big step into Line-Of-Business data
services and Silverlight 4 builds further upon this. This book will enable .NET developers
to get their finger on the pulse of data-driven business applications in Silverlight.<br /><br />
This book is not a general Silverlight 3/4 overview book; it is uniquely aimed at
developers who want to build data-driven applications. It focuses on showing .NET
developers how to interact with, and handle multiple sources of data in Silverlight
business applications, and how to solve particular data problems following a practical
hands-on approach, using real-world recipes. It is a practical cookbook that teaches
you how to build data-rich business applications with Silverlight that draw on multiple
sources of data. Most of the covered features work both in Silverlight 3 and 4. However,
we cover some that are specific for Silverlight 4, which will therefore not work with
Silverlight 3. Where this is the case, it is clearly indicated.<br /><br />
Packed with reusable, real-world recipes, the book begins by introducing you to general
principles when programming Silverlight. It then dives deep into the world of data
services, covering all the options available to access data and communicate with services
to get the most out of data in your Silverlight business applications, whilst at the
same time providing a rich user experience. Chapters cover data binding, data controls,
the concepts of talking to services, communicating with WCF, ASMX and REST services,
and much more.<br /><br />
By following the practical recipes in this book, which are of varying difficulty levels,
you will learn the concepts needed to create data-rich business applications—from
the creation of a Silverlight application, to displaying data in the Silverlight application
and upgrading your existing applications to use Silverlight. Each recipe covers a
data services topic, going from the description of the problem, through a conceptual
solution to a solution containing sample code.</em>
        </blockquote>
        <p>
I’m really really excited about the upcoming release, I hope you enjoy reading it
as much as I did writing it! As you can see, the book takes a very practical approach
to working with Silverlight in enterprise environments using a recipe-approach. The
scenarios for these recipes are things me an you often encounter and this book should
give you the solution for them. The book is aimed at Silverlight 4 development, although
most recipes will work in Silverlight 3 as well.
</p>
        <p>
I hope in the coming weeks/months to be able to give away a few copies of the book
from here.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=322fdadd-b49e-406d-9a30-56956181bb8c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Visug is now on Twitter!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/02/02/Visug+Is+Now+On+Twitter.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,5b8afd4b-95af-41e7-846a-5f9d6d6199e5.aspx</id>
    <published>2010-02-02T15:57:56.7703335-05:00</published>
    <updated>2010-02-02T15:57:56.7703335-05:00</updated>
    <category term="Visug" label="Visug" scheme="http://www.snowball.be/CategoryView,category,Visug.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just created the Visug Twitter account. You can follow @visug from now on for updates,
news etc.
</p>
        <p>
And, best of all, we’ll be giving away a free ticket to TechDays 2010 in the coming
days to one of our followers!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=5b8afd4b-95af-41e7-846a-5f9d6d6199e5" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>TechDays 2010 Belgium</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2010/01/28/TechDays+2010+Belgium.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c3db7efd-386b-470a-8374-9e8e78cf9c67.aspx</id>
    <published>2010-01-28T14:25:30.666678-05:00</published>
    <updated>2010-01-28T14:25:30.666678-05:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
With January almost behind us, the season of events and conferences is coming closer.
</p>
        <p>
I’ve been confirmed for quite some event already, more on this later.
</p>
        <p>
Since a few days, the first batch of sessions for TechDays 2010 Belgium has been made
available on <a href="http://www.techdays.be">www.techdays.be</a>. I’ll be doing 2
sessions, more specifically:
</p>
        <ul>
          <li>
            <strong>Silverlight 4 tour de force, with a little of WPF 4 sauce on top</strong>
          </li>
        </ul>
        <blockquote>
          <p>
2007... Silverlight 1.0 is released. 2010… Silverlight 4 is almost upon us. Did you
lose track of all the new features that are in the platform right now? And how does
Silverlight 4 compare to WPF 4?<br />
In this session, we will take you on a tour through the most exciting features that
Silverlight 4 has to offer, varying from Trusted application to full data binding
support, from rich text-editing to webcam support etc. While we’re at it, we’ll look
at how WPF 4 can help you achieve the same effects.<br />
After this session, you’ll have a better understanding on the position of Silverlight
4 and WPF 4 and their newest features.
</p>
        </blockquote>
        <ul>
          <li>
            <strong>Building business data-driven applications FAST with WCF RIA Services and
Silverlight</strong>
          </li>
        </ul>
        <blockquote>
          <p>
            <i>NET RIA Services is a new framework allowing you to get easy access to your data
in Silverlight applications. While still in beta, this new framework has already caused
quite a stir in the community. In this session, we'll explore the current version
and its features. This session contains mostly demo’s on how to build a business application
with .NET RIA Services.</i>
          </p>
        </blockquote>
        <p>
I’ll also be at DevDays NL, more on this in a few days.<br /><br />
From Visug, we'll also be doing something very special on Thursday April 1st in Antwerp
after TechDays, so keep your agenda free that night!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c3db7efd-386b-470a-8374-9e8e78cf9c67" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 24th: Browsing Christmas pictures on Flickr</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/23/Silverlight+Advent+Calendar+December+24th+Browsing+Christmas+Pictures+On+Flickr.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4b1314b6-4bba-4b60-b440-11c15a10ad15.aspx</id>
    <published>2009-12-23T18:50:15.655-05:00</published>
    <updated>2009-12-23T18:01:47.20275-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yes, I made it :) Welcome to this last post in my Silverlight Advent Calendar! From
December 1st until today, December 24th, I have created each day, a Silverlight article.
When I first thought about it, I feared there would be at least one day I would not
be able to create my post. Well, this didn’t happen, and this means that after 24
articles, we have finally arrived at Christmas Eve. I really hope you enjoyed these
posts and I’ll sure be doing something similar in the future!
</p>
        <p>
On a “real” advent calendar, on December 24th, the final day of the calendar, you
get a special surprise: a bigger image, a bigger gift or a larger chunk of chocolate
than on other days. Well, I thought this needed to be the case in my advent calendar
as well, so I decided to end my series with a special post. It gives a preview of
something that can in much more detail be found in my upcoming book AND it brings
some more Christmas spirit on this day: a Flickr Christmas image browser. All free
as my gift to you!
</p>
        <p>
Below is the interface of the application.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember24thBro_13933/image_2.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember24thBro_13933/image_thumb.png" width="607" height="401" />
          </a>
        </p>
        <p>
We’re in luck when working with Flickr: it exposes a cross-domain file so we can access
their API services from a client Silverlight application, even without running with
elevated permissions! Therefore, we do not need to create a service layer that sits
in between our application and Flickr’s services.
</p>
        <p>
When clicking on the Get Pictures button, we load thumbnails into a templated StackPanel.
When clicking on any of these thumbnails, the large image is loaded. To store the
information needed for a thumbnail, I created a class called SmallFlickrImage.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">class</span> SmallFlickrImage</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> ImageId
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> FarmId
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> ServerId
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> Secret
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> ImageUrl</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span>
              <span style="COLOR: #0000ff">string</span>.Format(</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #006080">"http://farm{0}.static.flickr.com/{1}/{2}_{3}_m.jpg"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        FarmId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ServerId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ImageId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        Secret</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        );</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
In the click event, we perform a service call to Flickr. To call Flickr’s API, you’ll
need an API key which can be obtained for free at <a title="http://www.flickr.com/services/api/" href="http://www.flickr.com/services/api/">http://www.flickr.com/services/api/</a>.
Once obtained, you need to embed this key in each request your application will perform
with Flickr. Also on this site, you’ll find a complete overview of all available methods.
Here, I’m using the flickr.photos.search method, which accepts a search string and
returns me an XML response, containing all the information I need to display images
in my client side application.
</p>
        <p>
Working with Flickr is a typical example of a REST service. When working with these
services from Silverlight, we actually need to do 3 steps:
</p>
        <ul>
          <li>
Create a URL 
</li>
          <li>
Send a request to this URL 
</li>
          <li>
Accept the response, mostly in XML, sometimes in JSON</li>
        </ul>
        <p>
The URL is constructed as follows (as directed by Flickr):
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> searchUrl
= </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #006080">"http://api.flickr.com/services/rest/?method=flickr.photos.search&amp;api_key={0}
</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">   &amp;text=christmas tree snow";</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
To send a request to this URL, we can use either the WebClient, or the HttpWebRequest.
WebClient is sufficient (there are cases where this is not the case, I spent many
pages to this topic in my book ;) ). Working in Silverlight with WebClient is identical
to working with this class in the full .NET framework. One thing though: just like
any interaction with a service, the service call is to be done asynchronously. The
code below sends a request to Flickr:
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> GetPicturesButton_Click(<span style="COLOR: #0000ff">object</span> sender,
RoutedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    WebClient client = <span style="COLOR: #0000ff">new</span> WebClient();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client.DownloadStringCompleted += </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> DownloadStringCompletedEventHandler(client_DownloadStringCompleted);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client.DownloadStringAsync(<span style="COLOR: #0000ff">new</span> Uri(<span style="COLOR: #0000ff">string</span>.Format(searchUrl,
api_key)));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
In the callback, which is invoked automatically when the service returns, using some
very simple LINQ-To-XML, we can parse the results. The returned XML is always of the
same format and can be seen as the contract between Flickr and my application. Because
we cannot set the Source property of an Image control directly, we need to go around
using a BitmapImage.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">protected</span>
              <span style="COLOR: #0000ff">void</span> client_DownloadStringCompleted(<span style="COLOR: #0000ff">object</span> sender, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  DownloadStringCompletedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  XDocument xml = XDocument.Parse(e.Result);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  var photos = from results <span style="COLOR: #0000ff">in</span> xml.Descendants(<span style="COLOR: #006080">"photo"</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">               select <span style="COLOR: #0000ff">new</span> SmallFlickrImage</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">               {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                 ImageId = results.Attribute(<span style="COLOR: #006080">"id"</span>).Value.ToString(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                 FarmId = results.Attribute(<span style="COLOR: #006080">"farm"</span>).Value.ToString(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                 ServerId = results.Attribute(<span style="COLOR: #006080">"server"</span>).Value.ToString(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                 Secret = results.Attribute(<span style="COLOR: #006080">"secret"</span>).Value.ToString()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">               };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">foreach</span> (var
photo <span style="COLOR: #0000ff">in</span> photos)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    Image image = <span style="COLOR: #0000ff">new</span> Image();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    BitmapImage bitmapImage = <span style="COLOR: #0000ff">new</span> BitmapImage(<span style="COLOR: #0000ff">new</span> Uri(photo.ImageUrl,
UriKind.Absolute));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Source = bitmapImage;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Width = 160;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Height = 160;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Stretch = Stretch.Uniform;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Tag = photo;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.Margin = <span style="COLOR: #0000ff">new</span> Thickness(3);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.HorizontalAlignment = HorizontalAlignment.Center;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    image.MouseLeftButtonDown += <span style="COLOR: #0000ff">new</span> MouseButtonEventHandler(img_MouseLeftButtonDown);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    PicListBox.Items.Add(image);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
At this point, the ListBox is filled. This ListBox is templated; the code for this
can be seen in the sample code download.
</p>
        <p>
When clicking (we attached a MouseLeftButtonDown event on each dynamically added image)
on an image, we’ll load the "full” image into an Image control. This requires some
code, mostly concerning which type of URL is used by Flickr for the image.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> img_MouseLeftButtonDown(<span style="COLOR: #0000ff">object</span> sender,
MouseButtonEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  Image img = sender <span style="COLOR: #0000ff">as</span> Image;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  SmallFlickrImage smallFlickrImage = img.Tag <span style="COLOR: #0000ff">as</span> SmallFlickrImage;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (smallFlickrImage
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    WebClient detailClient = <span style="COLOR: #0000ff">new</span> WebClient();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    detailClient.DownloadStringCompleted += </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> DownloadStringCompletedEventHandler(detailClient_DownloadStringCompleted);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    detailClient.DownloadStringAsync(</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> Uri(<span style="COLOR: #0000ff">string</span>.Format(detailUrl,
api_key, smallFlickrImage.ImageId)));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> detailClient_DownloadStringCompleted(<span style="COLOR: #0000ff">object</span> sender, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  DownloadStringCompletedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  XDocument xmlDocument = XDocument.Parse(e.Result);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  XElement photoElement;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  Uri detailImageUrl;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (xmlDocument.Descendants(<span style="COLOR: #006080">"photo"</span>).Count&lt;XElement&gt;()
&gt; 0)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    photoElement = xmlDocument.Descendants(<span style="COLOR: #006080">"photo"</span>).First&lt;XElement&gt;();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> serverId
= photoElement.Attribute(<span style="COLOR: #006080">"server"</span>).Value;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> farmId
= photoElement.Attribute(<span style="COLOR: #006080">"farm"</span>).Value;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> imageId
= photoElement.Attribute(<span style="COLOR: #006080">"id"</span>).Value;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> secret;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (photoElement.Attribute(<span style="COLOR: #006080">"originalsecret"</span>)
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      secret = photoElement.Attribute(<span style="COLOR: #006080">"originalsecret"</span>).Value;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      detailImageUrl = <span style="COLOR: #0000ff">new</span> Uri(<span style="COLOR: #0000ff">string</span>.Format</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        (<span style="COLOR: #006080">"http://farm{0}.static.flickr.com/{1}/{2}_{3}_o.jpg"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          farmId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          serverId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          imageId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          secret)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">         );</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      secret = photoElement.Attribute(<span style="COLOR: #006080">"secret"</span>).Value;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      detailImageUrl = <span style="COLOR: #0000ff">new</span> Uri(<span style="COLOR: #0000ff">string</span>.Format</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        (<span style="COLOR: #006080">"http://farm{0}.static.flickr.com/{1}/{2}_{3}.jpg"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          farmId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          serverId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          imageId, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          secret)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">         );</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    BitmapImage bitmapImage = <span style="COLOR: #0000ff">new</span> BitmapImage(detailImageUrl);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    DetailImage.Source = bitmapImage;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
 
</p>
        <p>
With that, the sample is working! 
</p>
        <p>
The complete code sample can be downloaded here: <a href="http://www.snowball.be/content/binary/SLChristmasFlickr.zip">SLChristmasFlickr.zip
(31.34 KB)</a></p>
        <p>
          <strong>MERRY CHRISTMAS!</strong>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4b1314b6-4bba-4b60-b440-11c15a10ad15" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 23rd: Merged resource dictionaries</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/20/Silverlight+Advent+Calendar+December+23rd+Merged+Resource+Dictionaries.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7cea242b-7ee1-433e-a502-2f73b363c00c.aspx</id>
    <published>2009-12-20T18:46:11.546-05:00</published>
    <updated>2009-12-22T18:17:07.734-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In the before-last post of my Silverlight Advent Calendar, I would like to spend some
time with a Silverlight 3 feature that’s most helpful in real world projects: merged
resource dictionaries. By most helpful, I mean that in real applications, resource
files can become really really big. Files of 1000 lines of pure mark-up are no exception
and are really hard to find your way in.
</p>
        <p>
Silverlight 3 added support for merged dictionaries. Basically, using these, we can
split resources over several files, dictionaries. Using them though is nothing different
than using resources located in App.xaml or Resources of the current page/control.
</p>
        <p>
Let’s take a look at using these merged resource dictionaries. I created some styles
to style the ChristmasSong application we have been using a few times already.
</p>
        <p>
 
</p>
        <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember23rdMer_10D0E/image_2.png">
          <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember23rdMer_10D0E/image_thumb.png" width="415" height="273" />
        </a>
        <p>
In the beginning of this series, we already looked at implicit styles. For this application,
I’m defining a few of these, meaning that this very project will only work for Silverlight
4. Of course, the merged dictionary function works also in Silverlight 3.
</p>
        <p>
To define a resource dictionary, in the project, we need to add a XAML file (either
via creating an empty text file and renaming the extension or creating a new user
control and deleting the *.cs file). In this file, we can create a ResourceDictionary
element. Below is the XAML code for the implicit styles, which I grouped into a file
called DefaultStyles.xaml. I created a default style for a Button, TextBlock and TextBox.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns:x</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #ff0000">TargetType</span>
              <span style="COLOR: #0000ff">="Button"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Foreground"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Black"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Background"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Red"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontWeight"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Bold"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontSize"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="15"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="HorizontalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="VerticalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #ff0000">TargetType</span>
              <span style="COLOR: #0000ff">="TextBlock"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Foreground"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Green"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontWeight"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Bold"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontSize"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="15"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="HorizontalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Left"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="VerticalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Margin"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="2"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #ff0000">TargetType</span>
              <span style="COLOR: #0000ff">="TextBox"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Width"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="150"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontSize"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="15"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="HorizontalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="VerticalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Margin"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="2"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Next, I created a second ResourceDictionary which has just one Style, designed for
the title, in a file called SpecificStyles.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns:x</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #ff0000">TargetType</span>
              <span style="COLOR: #0000ff">="TextBlock"</span>
              <span style="COLOR: #ff0000">x:Key</span>
              <span style="COLOR: #0000ff">="TitleStyle"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="Foreground"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Red"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontStyle"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Italic"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontWeight"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Bold"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="FontSize"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="28"</span>
              <span style="COLOR: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="HorizontalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #ff0000">Property</span>
              <span style="COLOR: #0000ff">="VerticalAlignment"</span>
              <span style="COLOR: #ff0000">Value</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Setter</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Style</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Now we need to let our application know about these resources. To do so, I have in
the App.xaml added the following code. In the MergedDictionaries element, we link
the seperate XAML files.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Application</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">xmlns:x</span>
              <span style="COLOR: #0000ff">="http://schemas.microsoft.com/winfx/2006/xaml"</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">x:Class</span>
              <span style="COLOR: #0000ff">="SLMergedDictionaries.App"</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">Application.Resources</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary.MergedDictionaries</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">Source</span>
              <span style="COLOR: #0000ff">="/SLMergedDictionaries;component/DefaultStyles.xaml"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #ff0000">Source</span>
              <span style="COLOR: #0000ff">="/SLMergedDictionaries;component/SpecificStyles.xaml"</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary.MergedDictionaries</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">ResourceDictionary</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Application.Resources</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">&lt;/</span>
              <span style="COLOR: #800000">Application</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
We can now use the styles declared in the dictionaries just like we would do with
regular defined styles.
</p>
        <p>
The complete sample can be downloaded here: <a href="http://www.snowball.be/content/binary/SLMergedDictionaries.zip">SLMergedDictionaries.zip
(310.39 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7cea242b-7ee1-433e-a502-2f73b363c00c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 22nd: INotifyDataErrorInfo in the spotlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/20/Silverlight+Advent+Calendar+December+22nd+INotifyDataErrorInfo+In+The+Spotlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ba81f3d3-fc27-4baf-92ed-545e6ce728c6.aspx</id>
    <published>2009-12-20T18:42:27.327-05:00</published>
    <updated>2009-12-22T03:36:04.281875-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Next to the full support of the data binding engine for the IDataErrorInfo interface,
Silverlight 4 adds a new interface called INotifyDataErrorInfo, offering more options
for particular scenario's. In this post, we’ll look at a small example using this
interface. 
</p>
        <p>
IDataErrorInfo allows retrieving the error on a per-property basis. It’s not possible
however to validate all properties of the entity in one go. This becomes possible
with the INotifyDataErrorInfo. Let’s look at the interface first.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">interface</span> INotifyDataErrorInfo</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">bool</span> HasErrors
{ get; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">event</span> EventHandler<DATAERRORSCHANGEDEVENTARGS>
ErrorsChanged;
</DATAERRORSCHANGEDEVENTARGS></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    IEnumerable GetErrors(<span style="COLOR: #0000ff"> string</span> propertyName);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
This interface has some nice advantages. As said, we can check if the entity as a
whole is in an invalid state through the HasErrors property. Retrieving the errors
using the GetErrors can now retrieve other things than just strings which was all
that we could do with the IDataErrorInfo. On top of that, a property can have more
than just one validation error at the same time
</p>
        <p>
The ErrorsChanged event can come in handy if there’s a long running process needed
to perform validation: assume that for some validation, we need to go to the database
over a service. The ErrorsChanged event allows us to notify the UI if the validation
errors change. If ValidatesOnNotifyDataErrors is set to true on the UI, Silverlight
will listen for the ErrorsChanged event and will display any errors if they are added
afterwards.
</p>
        <p>
That’s it for this interface, let’s now look at it in an example. I have changed the
example created for the IDataErrorInfo to work with INotifyDataErrorInfo, so the interface
has remained the same.
</p>
        <p>
The errors I want to return to my interface are more than just strings. I created
a custom error as follows:
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">class</span> ChristmasSongError</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span> ErrorLevel
Severity{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> ErrorName
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> ErrorMessage
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">override</span>
              <span style="COLOR: #0000ff">string</span> ToString()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> ErrorName
+ <span style="COLOR: #006080">": "</span> + ErrorMessage;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
The ChristmasSong class now implements the INotifyDataErrorInfo interface. Let’s focus
on the Title property. When its value is set, it calls a validation method. In this
method, I create an instance of the custom error, specifying all the property values.
If there’s an error, here the title being empty, I add it to a Dictionary called errors
using the AddError method. If validation is satisfied, it’s removed using the RemoveError
method. The errrors Dictionary is used so it is possible for each property to have
more than one error: each property has as its value a List<CHRISTMASSONGERROR>
.
</CHRISTMASSONGERROR></p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">class</span> ChristmasSong
: INotifyDataErrorInfo</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">string</span> title;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">string</span> performedBy;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span> TimeSpan
duration;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span> DateTime
published;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">string</span> error;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span> Dictionary&lt;<span style="COLOR: #0000ff">string</span>,
List<CHRISTMASSONGERROR>
&gt; errors = 
</CHRISTMASSONGERROR></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> Dictionary&lt;<span style="COLOR: #0000ff">string</span>,List<CHRISTMASSONGERROR>
&gt;();
</CHRISTMASSONGERROR></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">event</span> PropertyChangedEventHandler
PropertyChanged;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">protected</span>
              <span style="COLOR: #0000ff">void</span> NotifyPropertyChanged(<span style="COLOR: #0000ff">string</span> propertyName)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (PropertyChanged
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            PropertyChanged(<span style="COLOR: #0000ff"> this</span>, <span style="COLOR: #0000ff">new</span> PropertyChangedEventArgs(propertyName));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> Title</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> title;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            title = <span style="COLOR: #0000ff"> value</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            ValidateTitleProperty();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> ValidateTitleProperty()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError christmasSongError =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.Error, ErrorName =
<span style="COLOR: #006080">"TitleRequired"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "Title
should not be empty"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (<span style="COLOR: #0000ff">string</span>.IsNullOrEmpty(title))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "Title"</span>,
christmasSongError);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "Title"</span>, <span style="COLOR: #006080">"TitleRequired"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> PerformedBy</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> performedBy;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            performedBy = <span style="COLOR: #0000ff"> value</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            ValidatePerformedByProperty();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> ValidatePerformedByProperty()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError christmasSongError =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.Error, ErrorName =
<span style="COLOR: #006080">"PerformedByRequired"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "The
artist should not be empty"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (<span style="COLOR: #0000ff">string</span>.IsNullOrEmpty(performedBy))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "PerformedBy"</span>,
christmasSongError);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "PerformedBy"</span>, <span style="COLOR: #006080">"PerformedByRequired"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span> TimeSpan
Duration</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> duration;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            duration = <span style="COLOR: #0000ff"> value</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            ValidateDuration();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> ValidateDuration()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError durationNullError =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.CriticalError, ErrorName =
<span style="COLOR: #006080">"DurationNull"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "The
duration should not be empty"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError durationTooLongError =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.Error, ErrorName =
<span style="COLOR: #006080">"DurationTooLong"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "The
duration is too long"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (duration
== TimeSpan.Zero)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "Duration"</span>,
durationNullError);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "Duration"</span>, <span style="COLOR: #006080">"DurationNull"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (duration.TotalSeconds
&gt; 500)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "Duration"</span>,
durationTooLongError);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "Duration"</span>, <span style="COLOR: #006080">"DurationTooLong"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span> DateTime
Published</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> published;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        set</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            published = <span style="COLOR: #0000ff"> value</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            VaidatePublished();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> VaidatePublished()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError publishedTooLow =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.CriticalError, ErrorName =
<span style="COLOR: #006080">"PublishedTooLow"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "The
date is too small"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChristmasSongError publishedTooHigh =
<span style="COLOR: #0000ff">new</span> ChristmasSongError() </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        { Severity = ErrorLevel.CriticalError, ErrorName =
<span style="COLOR: #006080">"PublishedTooHigh"</span>, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          ErrorMessage = <span style="COLOR: #006080"> "The
date is too high"</span> };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (published
&lt; <span style="COLOR: #0000ff">new</span> DateTime(1900, 1, 1))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "Published"</span>,
publishedTooLow);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "Published"</span>, <span style="COLOR: #006080">"PublishedTooLow"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (published
&gt; <span style="COLOR: #0000ff">new</span> DateTime( 2010, 1, 1))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            AddError(<span style="COLOR: #006080"> "Published"</span>,
publishedTooHigh);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            RemoveError(<span style="COLOR: #006080"> "Published"</span>, <span style="COLOR: #006080">"PublishedTooHigh"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> AddError(<span style="COLOR: #0000ff">string</span> propertyName,
ChristmasSongError error)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (!errors.ContainsKey(propertyName))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            errors.Add(propertyName, <span style="COLOR: #0000ff"> new</span> List<CHRISTMASSONGERROR>
() { error });
</CHRISTMASSONGERROR></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
              <span style="COLOR: #008000">//
adding the error to the already existing list</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            var list = errors[propertyName];</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            list.Add(error);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (ErrorsChanged
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            ErrorsChanged(<span style="COLOR: #0000ff"> this</span>, <span style="COLOR: #0000ff">new</span> DataErrorsChangedEventArgs(propertyName));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> RemoveError(<span style="COLOR: #0000ff">string</span> propertyName, <span style="COLOR: #0000ff">string</span> errorName)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (errors.ContainsKey(propertyName))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            var christmasSongError = errors[propertyName]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                .Where

<CHRISTMASSONGERROR>
(e =&gt; e.ErrorName == errorName).FirstOrDefault();
</CHRISTMASSONGERROR></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            var list = errors[propertyName];</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            list.Remove(christmasSongError);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (list.Count
== 0)<span style="COLOR: #008000">//no more errors for this property </span></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                errors.Remove(propertyName);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (ErrorsChanged
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                ErrorsChanged(<span style="COLOR: #0000ff"> this</span>, <span style="COLOR: #0000ff">new</span> DataErrorsChangedEventArgs(propertyName));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">event</span> EventHandler<DATAERRORSCHANGEDEVENTARGS>
ErrorsChanged;
</DATAERRORSCHANGEDEVENTARGS></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span> System.Collections.IEnumerable
GetErrors(<span style="COLOR: #0000ff">string</span> propertyName)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (<span style="COLOR: #0000ff">string</span>.IsNullOrEmpty(propertyName))<span style="COLOR: #008000">//retrieve
errors for entire entity</span></pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> errors.Values;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">else</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (errors.ContainsKey(propertyName))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span> errors[propertyName];</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span>
              <span style="COLOR: #0000ff">null</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">bool</span> HasErrors</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        get</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (errors.Count
== 0)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span>
              <span style="COLOR: #0000ff">false</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">return</span>
              <span style="COLOR: #0000ff">true</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
With the entity in place, we can look at the UI. The XAML code is similar to the IDataErrorInfo
example, although we should now use the ValidatesOnNotifyDataErrors and set it to
True. Below is part of the code, for the entire listing, see the download.
</p>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">
              <p>
&lt;
</p>
            </font>
          </font>
        </font>
        <font color="#a31515" size="1" face="Consolas">
          <font color="#a31515" size="1" face="Consolas">
            <font color="#a31515" size="1" face="Consolas">TextBox</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> x</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">:</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas">Name</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="TitleTextBox"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> Grid.Row</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="1"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> Grid.Column</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="1"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> Width</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="200"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> VerticalAlignment</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="Center"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> HorizontalAlignment</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="Left"</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> Margin</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="2"</font>
          </font>
        </font>
        <font size="1" face="Consolas">
          <font size="1" face="Consolas">
            <font color="#000000">
            </font>
            <p>
            </p>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas">Text</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">="{</font>
          </font>
        </font>
        <font color="#a31515" size="1" face="Consolas">
          <font color="#a31515" size="1" face="Consolas">
            <font color="#a31515" size="1" face="Consolas">Binding</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas"> Path</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">=Title,</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas">Mode</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">=TwoWay,</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas">ValidatesOnNotifyDataErrors</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">=True,</font>
          </font>
        </font>
        <font color="#ff0000" size="1" face="Consolas">
          <font color="#ff0000" size="1" face="Consolas">
            <font color="#ff0000" size="1" face="Consolas">NotifyOnValidationError</font>
          </font>
        </font>
        <font color="#0000ff" size="1" face="Consolas">
          <font color="#0000ff" size="1" face="Consolas">
            <font color="#0000ff" size="1" face="Consolas">=True}"
/&gt;
</font>
          </font>
        </font>
        <p>
The complete sample can be downloaded here: <a href="http://www.snowball.be/content/binary/SLINotifyDataErrorInfo.zip">SLINotifyDataErrorInfo.zip
(602.56 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ba81f3d3-fc27-4baf-92ed-545e6ce728c6" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 21st: Duplex WCF bindings in Silverlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/20/Silverlight+Advent+Calendar+December+21st+Duplex+WCF+Bindings+In+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,d5814227-a49d-4e35-89cf-38862e597b6e.aspx</id>
    <published>2009-12-20T18:38:33.124-05:00</published>
    <updated>2009-12-20T18:40:38.187125-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Services and data access are the focus of the book I’m writing (more very very soon!).
Working with services to get data into a Silverlight application is so vital, it should
be code that’s known by every Silverlight developer by heart. Working with duplex
bindings is somewhat more complicated. However, there are situations in which duplex
communication is really necessary. Think of the typical example: a stock application
that should send stock updates to the client without the client requesting for an
update.
</p>
        <p>
Duplex communications are possible with WCF. They “seem” initiated by the server:
the service will send updates without the client requests the service to do so. This
way, the client can receive updates whenever new information is available on the server
(new stock info that becomes available) and act accordingly. I put seem between quotes.
The reason for that is that a duplex binding is in fact still a normal request/receive
process. Initially, the client has to do a request to the service and from then on,
the service can send its updates to the client.
</p>
        <p>
In the example I have created for this post, I created an application that posts updates
about snow throughout Belgium (while writing this article, it has snowed quite a lot
in Belgium, so that’s where the inspiration came from and Tienen is where I live :)
). Below is a screenshot.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember21stDup_62E/image_2.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember21stDup_62E/image_thumb.png" width="548" height="355" />
          </a>
        </p>
        <p>
Of course, you’re here to learn something and see some code, right? No problem! Let’s
first focus on the service. For the data exchange, I created a small type called SnowUpdate.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">class</span> SnowUpdate</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">string</span> Location
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">double</span> centimeter
{ get; set; }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
One very important thing that we need to do, is adding a reference to an assembly
available in the Silverlight SDK called System.Service.PollingDuplex.dll. By default,
it’s installed in C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Libraries\<strong>Server</strong>.
Add a reference to this assembly. (Note the x86, that’s because I’m running 64bit).
</p>
        <p>
The contract of the service makes it clear that we are working with a duplex service.
There are some special things to note in this code. As you can see, two interfaces
are defined here. The first one is the regular contract, the second one is what’s
called the callback contract and defines the contract for the call to the client. 
</p>
        <p>
Also note that both OperationContracts have IsOneWay set to true. For the Connect
method, we’re actually saying: a client can call Connect to make itself known to the
service but it expects no response, hence the IsOneWay.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[ServiceContract(Namespace = <span style="COLOR: #006080">"Silverlight"</span>,
CallbackContract = <span style="COLOR: #0000ff">typeof</span>(ISnowServiceClient))]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">interface</span> ISnowService</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [OperationContract(IsOneWay = <span style="COLOR: #0000ff">true</span>)]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> Connect();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">[ServiceContract]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">interface</span> ISnowServiceClient</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    [OperationContract(IsOneWay = <span style="COLOR: #0000ff">true</span>)]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> SendSnowUpdate(SnowUpdate
snowUpdate);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <blockquote>
          <p>
          </p>
        </blockquote>
        <p>
        </p>
        <p>
In the service implementation, I have created a Timer, which will periodically send
a new message to the client. The OperationContext.Current.GetCallbackChannel gives
us access to the callback channel which we can use to send messages to the client
side. On a tick of the Timer, we’re sending a message.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span> ISnowServiceClient
client;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span> Timer
timer;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">void</span> Connect()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client = OperationContext.Current.GetCallbackChannel&lt;ISnowServiceClient&gt;();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    timer = <span style="COLOR: #0000ff">new</span> Timer(<span style="COLOR: #0000ff">new</span> TimerCallback(TimerTick), <span style="COLOR: #0000ff">null</span>,
500, 5000);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> TimerTick(<span style="COLOR: #0000ff">object</span> state)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">try</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (client
!= <span style="COLOR: #0000ff">null</span>)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            client.SendSnowUpdate(GetLatestUpdate());</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">catch</span> (Exception)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        client = <span style="COLOR: #0000ff">null</span>;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        timer.Dispose();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
With that, the service code is done, but it does require some specific configuration
code to work. Take a look at the sample for this code. We can now look at the client
code. The process to add a service reference is exactly the same, although you’ll
notice that the ServiceReferences.clientconfig file remains empty (which it does not
when referencing a normal service). Therefore, the code that we need to write is somewhat
more complex: we have to create the binding and the address from code and pass this
along with the proxy instantiation. Below you can see the client-side code.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> UserControl_Loaded(<span style="COLOR: #0000ff">object</span> sender,
RoutedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  EndpointAddress address = <span style="COLOR: #0000ff">new</span> EndpointAddress(<span style="COLOR: #006080">"http://localhost:59485/SnowService.svc"</span>);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  CustomBinding binding = <span style="COLOR: #0000ff">new</span> CustomBinding(</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> PollingDuplexBindingElement(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> BinaryMessageEncodingBindingElement(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> HttpTransportBindingElement());</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  client = <span style="COLOR: #0000ff">new</span> SLDuplexSnow.SnowService.SnowServiceClient(binding,
address);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  client.SendSnowUpdateReceived += </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">new</span> EventHandler&lt;SLDuplexSnow.SnowService.SendSnowUpdateReceivedEventArgs&gt;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">     (client_SendSnowUpdateReceived);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    client.ConnectAsync();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">void</span> client_SendSnowUpdateReceived(<span style="COLOR: #0000ff">object</span> sender, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  SLDuplexSnow.SnowService.SendSnowUpdateReceivedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    SnowDetailsGrid.DataContext = e.snowUpdate;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Note that we are calling ConnectAsync to let the service know about the client so
it can send updates to it BUT we are handing SnowUpdateReceived events.
</p>
        <p>
NOTE: This sample is written for Silverlight 3/VS2008. At this point, I have issues
with VS2010 when generating the client proxy with SL4/VS2010 when using a duplex service.
</p>
        <p>
The complete code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLDuplex.zip">SLDuplex.zip
(111.91 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=d5814227-a49d-4e35-89cf-38862e597b6e" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 20th: Learning about the IsolatedStorage</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/19/Silverlight+Advent+Calendar+December+20th+Learning+About+The+IsolatedStorage.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7c6ca99f-cef5-4563-bea9-e6bfddef0e02.aspx</id>
    <published>2009-12-19T18:26:40.75-05:00</published>
    <updated>2009-12-20T18:41:54.999625-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In today’s post, we’ll take a look at Silverlight’s Isolated Storage, a feature already
available in Silverlight since version 2. With this post, I want to show all there
is possible with this handy option. 
</p>
        <p>
We all know cookies, small text files that are stored on our machines by sites. Most
of the time, the goal of a cookie, is storing informational data for next visits of
the user to that particular site. This data can vary from login information to perhaps
a background color the user favors. Cookies are limited to containing just plain text
as well as in size.
</p>
        <p>
Isolated storage does not differ that much from cookies. It’s basically a file store
for Silverlight: Silverlight applications can store in the Isolated Storage files
during a session and retrieve them in a later session. Isolated storage is a per-user
per-application storage, meaning that when userA works with SilverlightAppA, he’ll
have a different isolated storage from userB working with the same application. Isolated
storage information is not deleted when you clear your temporary internet files, it
can be deleted through the Silverlight configuration, as shown below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember20thLea_D81B/image_2.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember20thLea_D81B/image_thumb.png" width="444" height="312" />
          </a>
        </p>
        <p>
We can use isolated storage in a number of ways. Let’s take a look at the sample for
this post. Below is a screenshot of the very simple UI I created for this sample.
It allows a user to enter a text, representing his preferred background color for
the application. We’ll store this value using the IsolatedStorage. Secondly, using
another feature called IsolatedStorageSettings, I’m allowing the user to store a second
value, which is used for the color of a StackPanel ( the blue bar in the screenshot).
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember20thLea_D81B/image_4.png">
            <img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="image" border="0" alt="image" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember20thLea_D81B/image_thumb_1.png" width="431" height="255" />
          </a>
        </p>
        <p>
First, let’s look at the code for the background color, using the regular IsolatedStorage.
Below you can see the code. Working with IsolatedStorage is done using the IsolatedStorageFile
class. It defines among others, the GetUserStoreForApplication static method, which
returns the data store, for the specific user and the current application. From there
on, working with IsolatedStorage is similar to working with the regular file system.
Isolated storage is not to be seen as one file, it’s an entire file system, that can
contain directories and files. In this code, we are creating using System.IO code
a file called color.txt and writing some data to this file.
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> ColorButton_Click(<span style="COLOR: #0000ff">object</span> sender,
RoutedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">try</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">using</span> (IsolatedStorageFileStream
fs = isoStore.CreateFile(<span style="COLOR: #006080">"color.txt"</span>))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      StreamWriter writer = <span style="COLOR: #0000ff">new</span> StreamWriter(fs);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      writer.Write(ColorTextBox.Text);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      writer.Close();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    ChangeColor(ColorTextBox.Text);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">catch</span> (Exception)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #008000">//handle
error here, not for demo</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
On load of the application, we need to check if this file already exists and if yes,
read the file and set the background to that specific color. This is shown in the
code below. 
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> UserControl_Loaded(<span style="COLOR: #0000ff">object</span> sender,
RoutedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">try</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (isoStore.FileExists(<span style="COLOR: #006080">"color.txt"</span>))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">using</span> (IsolatedStorageFileStream
fs = isoStore.OpenFile(<span style="COLOR: #006080">"color.txt"</span>, FileMode.Open))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        StreamReader reader = <span style="COLOR: #0000ff">new</span> StreamReader(fs);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ChangeColor(reader.ReadLine());</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        reader.Close();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">catch</span> (Exception)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #008000">//handle
error here, not for demo</span>
            </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  }</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
In ASP.NET, we have the Application and Session objects, which provide an easy and
quick way to store information between requests. Through a feature of the IsolatedStorage,
we can have something quite similar. The IsolatedStorageSettings allow us a key/value
lookup to store data. We don’t have to write code to actually store the files, it
does that for us. Take a look at the following code. We allow the user to store a
second string for the background of the StackPanel. 
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> AppColorButton_Click(<span style="COLOR: #0000ff">object</span> sender,
RoutedEventArgs e)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  IsolatedStorageSettings.ApplicationSettings[<span style="COLOR: #006080">"AppColor"</span>]
= AppColorTextBox.Text;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  ChangeStackPanelColor(AppColorTextBox.Text);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
Using this approach, we say for the AppColor value, store the contents of the TextBox
as value. Behind the scenes, this is persisted, so it can be retrieved after the application
has been shutdown (it is thus not stored in application memory). Retrieving the value
can be done as follows:
</p>
        <div id="codeSnippetWrapper">
          <div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet">
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">if</span> (IsolatedStorageSettings.ApplicationSettings.Contains(<span style="COLOR: #006080">"AppColor"</span>))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">{</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">string</span> appColor
= IsolatedStorageSettings.ApplicationSettings[<span style="COLOR: #006080">"AppColor"</span>].ToString();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  ChangeStackPanelColor(appColor);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">}</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
The complete sample can be downloaded here: <a href="http://www.snowball.be/content/binary/SLIsolatedStorage.zip">SLIsolatedStorage.zip
(30.84 KB)</a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7c6ca99f-cef5-4563-bea9-e6bfddef0e02" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 19th: Entering credentials via ClientHttp</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/19/Silverlight+Advent+Calendar+December+19th+Entering+Credentials+Via+ClientHttp.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f7f4683f-3c17-4dbe-98a0-1663e8bf8fcf.aspx</id>
    <published>2009-12-19T15:24:22.909-05:00</published>
    <updated>2009-12-19T15:34:27.4402959-05:00</updated>
    <category term=".net" label=".net" scheme="http://www.snowball.be/CategoryView,category,net.aspx" />
    <category term="Silverlight" label="Silverlight" scheme="http://www.snowball.be/CategoryView,category,Silverlight.aspx" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <category term="sl4" label="sl4" scheme="http://www.snowball.be/CategoryView,category,sl4.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="html">&lt;p&gt;
The day before yesterday, we looked at an sample with Twitter: we retrieved the tweets
from the public timeline in an OOB trusted application. The public timeline feed on
Twitter requires no credentials to be passed along. Some other feeds however do, such
as the user timeline (containing your own tweets) and the friends timeline (containing
the tweets of your friends). 
&lt;/p&gt;
&lt;p&gt;
Up until Silverlight 4, passing credentials to a service was not supported. Silverlight
3 added support for the ClientHttp stack, however, it was not possible to modify the
authorization header, resulting in it being impossible to pass credentials. Silverlight
4 adds this support however. In combination with the support for cross-domain access
for services for Silverlight if they are executed with elevated permissions, we can
easily build a more complete Twitter client in Silverlight. We already did some work
on this application, we will now extend it to make it possible to execute requests
to services that require authorization.
&lt;/p&gt;
&lt;p&gt;
Below is a screenshot of the modified application, running OOB as a trusted application.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember19thEnt_CAE5/image_2.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember19thEnt_CAE5/image_thumb.png" width=410 height=322&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
We will not be looking at the code for the public timeline, that was already covered
two days ago. Instead, let’s focus on the code we need to write to make the authorized
request possible. Of course, we need the user’s credentials, therefore, I added a
username/password field.
&lt;/p&gt;
&lt;p&gt;
When clicking on the Submit button, two request are being executed:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
a first to &lt;a href="http://twitter.com/statuses/user_timeline/&lt;USERNAME&gt;.xml" temp_href="http://twitter.com/statuses/user_timeline/&lt;USERNAME&gt;.xml"&gt;http://twitter.com/statuses/user_timeline/&amp;lt;USERNAME&amp;gt;.xml&lt;/a&gt; to
get the tweets of the user 
&lt;li&gt;
a second one to &lt;a title=http://twitter.com/statuses/friends_timeline.xml href="http://twitter.com/statuses/friends_timeline.xml"&gt;http://twitter.com/statuses/friends_timeline.xml&lt;/a&gt; to
get the user’s friends tweets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Here’s the code for the first one. Note a few things. Passing credentials is only
possible if using the ClientHttp stack. This is enabled by WebRequest.RegisterPrefix("&lt;a href='http://"' temp_href='http://"'&gt;http://"&lt;/a&gt;,
System.Net.Browser.WebRequestCreator.ClientHttp). This selects the ClientHttp stack
instead of the browser http stack, which is used by default. To pass the credentials,
we use the Credentials property and set it to an instance of NetworkCredentials. Here’s
the code.
&lt;/p&gt;
&lt;div id=codeSnippetWrapper&gt;
&lt;div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;WebRequest.RegisterPrefix(&lt;span style="COLOR: #006080"&gt;"http://"&lt;/span&gt;,
System.Net.Browser.WebRequestCreator.ClientHttp);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: 