<?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>2010-03-09T00:07:12.4722485+01: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>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-09T00:07:12.4722485+01:00</published>
    <updated>2010-03-09T00:07:12.4722485+01: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-09T00:03:47.494157+01:00</published>
    <updated>2010-03-09T00:03:47.494157+01: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-09T00:00:00.5252855+01:00</published>
    <updated>2010-03-09T00:00:00.5252855+01: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-08T23:31:07.206+01:00</published>
    <updated>2010-03-08T23:35:53.8694925+01: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-02T21:57:56.7703335+01:00</published>
    <updated>2010-02-02T21:57:56.7703335+01: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-28T20:25:30.666678+01:00</published>
    <updated>2010-01-28T20:25:30.666678+01: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-24T00:50:15.655+01:00</published>
    <updated>2009-12-24T00:01:47.20275+01: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-21T00:46:11.546+01:00</published>
    <updated>2009-12-23T00:17:07.734+01: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-21T00:42:27.327+01:00</published>
    <updated>2009-12-22T09:36:04.281875+01: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-21T00:38:33.124+01:00</published>
    <updated>2009-12-21T00:40:38.187125+01: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-20T00:26:40.75+01:00</published>
    <updated>2009-12-21T00:41:54.999625+01: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-19T21:24:22.909+01:00</published>
    <updated>2009-12-19T21:34:27.4402959+01: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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;span style="COLOR: #008000"&gt;//try
finding the user tweets and friends tweets&lt;/span&gt;&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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; userTimeLine
= &lt;span style="COLOR: #006080"&gt;"http://twitter.com/statuses/user_timeline/"&lt;/span&gt; + &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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;  UserNameTextBox.Text + &lt;span style="COLOR: #006080"&gt;".xml"&lt;/span&gt;;&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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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;WebClient client = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; WebClient();&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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;client.Credentials = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; NetworkCredential(UserNameTextBox.Text, &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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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;  PasswordTextBox.Password);&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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;client.UseDefaultCredentials = &lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;;&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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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;client.DownloadStringCompleted += &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; DownloadStringCompletedEventHandler&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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;  (user_DownloadStringCompleted);&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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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;&amp;nbsp;&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: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;client.DownloadStringAsync(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; Uri(userTimeLine,
UriKind.Absolute));&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
A very important line is setting the UseDefaultCredentials to false. If we set it
to true, Silverlight will pass the credentials of the logged-on user on the machine
(NTLM). If this is the wanted behavior however, simply setting this property to true
will of course enable this.
&lt;/p&gt;
&lt;p&gt;
The complete code for this application can be downloaded here:
&lt;/p&gt;
&lt;a href="http://www.snowball.be/content/binary/SLTwitterCredentials.zip"&gt;SLTwitterCredentials.zip
(82.89 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f7f4683f-3c17-4dbe-98a0-1663e8bf8fcf" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </content>
  </entry>
  <entry>
    <title>Snowball.be now member of The Lounge Advertising Network</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/19/Snowballbe+Now+Member+Of+The+Lounge+Advertising+Network.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,19b5b1ef-f108-439f-85a7-ef0e6a38d140.aspx</id>
    <published>2009-12-19T10:05:59.952+01:00</published>
    <updated>2009-12-23T23:58:10.57775+01:00</updated>
    <category term="Snowball" label="Snowball" scheme="http://www.snowball.be/CategoryView,category,Snowball.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since a few days, Snowball.be had some minor changes applied to it. I *think* I resolved
all browser incompatibilities (if you do happen to see something weird, let me know).
The google ads have been removed (yes they were there…) and have been replaced. 
From now on, ads will be served by The Lounge (<a title="http://theloungenet.com/" href="http://theloungenet.com/">http://theloungenet.com/</a>).
You can see the ad on the right!
</p>
        <p>
The great thing about The Lounge is that only allow .NET related sites to their network
and thus only serve ads related to .NET. Currently, you’ll be seeing Silverlight advertisements
only, since Snowball.be is now a member of the Silverlight Room.
</p>
        <p>
If you’re interested in making your .NET site part of The Lounge, you can apply at <a title="http://theloungenet.com/" href="http://theloungenet.com/">http://theloungenet.com/</a>.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=19b5b1ef-f108-439f-85a7-ef0e6a38d140" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 18th: IDataErrorInfo in an example to stop Last Christmas by Wham!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/18/Silverlight+Advent+Calendar+December+18th+IDataErrorInfo+In+An+Example+To+Stop+Last+Christmas+By+Wham.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,8a2fbc92-01e9-42fa-a1d2-1422432add07.aspx</id>
    <published>2009-12-18T12:06:56.187+01:00</published>
    <updated>2009-12-18T12:17:23.780875+01: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>
After looking at Twitter yesterday, we have arrived at another data binding-related
feature new in Silverlight 4, namely the support for the IDataErrorInfo interface. 
</p>
        <p>
The fact that Silverlight supports this interface now, means we can fully use it to
help with the display of validation errors in a data binding scenario. The interface
itself is quite simple, as 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">
              <span style="COLOR: #0000ff">public</span>
              <span style="COLOR: #0000ff">interface</span> IDataErrorInfo</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> Error
{ 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">string</span>
              <span style="COLOR: #0000ff">this</span>[<span style="COLOR: #0000ff">string</span> columnName]
{ 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>
        <p>
        </p>
        <p>
When we are binding an object of a class that implements the IDataErrorInfo, Silverlight
will automatically check each field for validation errors using the indexer. In here,
we can write validation code that will check if the specified value is valid and if
not, return the error message for that field. Silverlight will then automatically
display the error for the field. 
</p>
        <p>
I have created a small sample that does exactly that. Being it almost Christmas, I
have created a sample where the user can enter his christmas music collection, as
shown below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember19thIDa_A889/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/SilverlightAdventCalendarDecember19thIDa_A889/image_thumb.png" width="513" height="386" />
          </a>
        </p>
        <p>
The type we are binding to is called ChristmasSong. This class implements both the
INotifyPropertyChanged and the IDataErrorInfo interfaces. Both have been implemented
in the code below. In the indexer, we are checking per column if the entered value
is valid. If not, we are returning a message containing the validation error. Note
that when we are entering “Last Christmas” by “Wham”, the application will not accept
it! (Sorry to all Wham fans ;-) )
</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
: IDataErrorInfo, 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> 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>
              <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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (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">            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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> Title</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> title;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">            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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">"Title"</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">            NotifyPropertyChanged(<span style="COLOR: #006080">"PerformedBy"</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> 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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> duration;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">            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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">"Duration"</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> 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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> published;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">            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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">"Published"</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">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">        get { <span style="COLOR: #0000ff">return</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"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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>
              <span style="COLOR: #0000ff">this</span>[<span style="COLOR: #0000ff">string</span> columnName]</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">string</span> error
= <span style="COLOR: #0000ff">string</span>.Empty;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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> (columnName)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">"Title"</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">                        error = <span style="COLOR: #006080">"Title
can not be blank"</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">break</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">case</span>
              <span style="COLOR: #006080">"PerformedBy"</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">                        error = <span style="COLOR: #006080">"The
artist should be filled in"</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">else</span>
              <span style="COLOR: #0000ff">if</span>(performedBy.Equals(<span style="COLOR: #006080">"Wham"</span>)
&amp;&amp; title.Equals(<span style="COLOR: #006080">"Last Christmas"</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">                        error = <span style="COLOR: #006080">"You
should NOT be entering that song to your collection!"</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">break</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">case</span>
              <span style="COLOR: #006080">"Duration"</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>(duration.TotalSeconds
&gt; 600)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                    error = <span style="COLOR: #006080">"A
song can not be longer than 10 minutes"</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">break</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">case</span>
              <span style="COLOR: #006080">"Published"</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> (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">                        error = <span style="COLOR: #006080">"You
found a song from the future?"</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">else</span>
              <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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                        error = <span style="COLOR: #006080">"That's
a bit too old, isn't it?"</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">break</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">return</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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
We can now bind our UI to an instance of this type. Below is the XAML code for the
Grid containing the fields. Note especially the data binding expression, where I’m
stating the fields should be reporting the error back. For spacing reasons, I only
pasted the Title field, the others are similar.
</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">TextBlock</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="TitleTextBlock"</span>
              <span style="COLOR: #ff0000">Text</span>
              <span style="COLOR: #0000ff">="Title"</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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">Foreground</span>
              <span style="COLOR: #0000ff">="Red"</span>
              <span style="COLOR: #ff0000">HorizontalAlignment</span>
              <span style="COLOR: #0000ff">="Left"</span>
              <span style="COLOR: #ff0000">Margin</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">VerticalAlignment</span>
              <span style="COLOR: #0000ff">="Center"</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">="TitleTextBox"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Column</span><span style="COLOR: #0000ff">="1"</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">VerticalAlignment</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #ff0000">HorizontalAlignment</span>
              <span style="COLOR: #0000ff">="Left"</span>
              <span style="COLOR: #ff0000">Margin</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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
Path=Title, Mode=TwoWay, ValidatesOnDataErrors=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">    NotifyOnValidationError=True}" <span style="COLOR: #0000ff">/&gt;</span></pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
When we are entering data now, the validation will kick in whenever a validation error
is encountered. 
</p>
        <p>
We can take it one step further though, using the BindingValidationError event, defined
on FrameworkElement. This event will trigger whenever a binding error is reported
by the binding source, being here the instance of the ChristmasSong class. In this
event, we can through the e.Action property check if an error was added or resolved.
In this particular code, I have specified that the Submit button will only become
enabled when there are no more errors.
</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> ChristmasSongGrid_BindingValidationError(<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">  ValidationErrorEventArgs 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">
              <span style="COLOR: #0000ff">switch</span> (e.Action)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> ValidationErrorEventAction.Added:</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">         errorsOnPage++;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">break</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">case</span> ValidationErrorEventAction.Removed:</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">         errorsOnPage--;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">break</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> (errorsOnPage
== 0)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    SubmitButton.IsEnabled = <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">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">    SubmitButton.IsEnabled = <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-->
          </div>
        </div>
        <p>
All this can be seen in action, when we are entering “Last Christmas” by “Wham”!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember19thIDa_A889/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/SilverlightAdventCalendarDecember19thIDa_A889/image_thumb_1.png" width="532" height="429" />
          </a>
        </p>
        <p>
The sample code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLDataErrorInfo.zip">SLDataErrorInfo.zip
(308.96 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8a2fbc92-01e9-42fa-a1d2-1422432add07" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 17th: Cross-domain network access</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/17/Silverlight+Advent+Calendar+December+17th+Crossdomain+Network+Access.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,ddee7c59-92db-42a2-a271-c374c00f5fb8.aspx</id>
    <published>2009-12-17T16:52:54.843+01:00</published>
    <updated>2009-12-20T10:40:51.000625+01: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 article, we’re looking at cross-domain access to a service in Silverlight
4’s trusted applications.
</p>
        <p>
As you may know, when accessing any service located in a domain different from the
one in which the Silverlight application itself is hosted, Silverlight will check
for a cross domain file being in place. Cross-domain policies prevent Silverlight
applications to connect with services that are not in the same domain. However, a
service can opt-in to be connected to if at the root of the domain, a cross-domain
policy file has been deployed. Silverlight will check for its existence (the file
should be named clientaccesspolicy.xml or crossdomain.xml, which is the cross-domain
file of Flash) and if found, Silverlight will connect in a cross-domain manner.
</p>
        <p>
Services such as Twitter and Facebook do not deploy this file anymore. Flickr does,
meaning that we can connect to Flickr from a client-side Silverlight application.
If we want to connect with Twitter from Silverlight, we have to create a service within
the same domain as where the Silverlight application is hosted. This service can then
communicate with Twitter and Silverlight can communicate with our service. 
</p>
        <p>
In Silverlight 4, the notion of trusted applications was added (we looked in this
blog series already to some other concepts available when running a trusted application
such as COM interop and local file access). If a Silverlight application is running
as a trusted application, it can perform cross-domain calls, without there needing
to be a cross domain policy file in place. That means that we can build a Twitter
client as a trusted Silverlight application without having to build an extra service
layer in between. 
</p>
        <p>
In the sample I have built for this post, I’m doing exactly that. Below is a screenshot.
The UI of the application contains a templated ListBox. Note that the application
is running OOB as a trusted application.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember17thCro_E965/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/SilverlightAdventCalendarDecember17thCro_E965/image_thumb.png" width="487" height="406" />
          </a>
        </p>
        <p>
The code for this application is quite easy. It’s the same code we would write to
access a “local” service, meaning a service in the same domain. Below is the code
to access Twitter, an asynchronous web service call using the WebClient class.
</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">void</span> GetPublicTimeLine()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> publicTimeLine
= <span style="COLOR: #006080">"http://twitter.com/statuses/public_timeline.xml"</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">    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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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 += <span style="COLOR: #0000ff">new</span> DownloadStringCompletedEventHandler</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">    client.DownloadStringAsync(<span style="COLOR: #0000ff">new</span> Uri(publicTimeLine,
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">}</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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_DownloadStringCompleted(<span style="COLOR: #0000ff">object</span> sender,
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 document = 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">    twitterData = (from status <span style="COLOR: #0000ff">in</span> document.Descendants(<span style="COLOR: #006080">"status"</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">                   select <span style="COLOR: #0000ff">new</span> Tweet</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">                     Message = status.Element(<span style="COLOR: #006080">"text"</span>).Value.Trim(),</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                     User = status.Element(<span style="COLOR: #006080">"user"</span>).Element(<span style="COLOR: #006080">"name"</span>).Value.Trim()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                     }).ToList();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">    PublicTimeLineListBox.ItemsSource = twitterData;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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 code is executed when a user clicks on the “Load Twitter Messages” button at
the top. We do perform a check to see if the application is running OOB and is running
with elevated permissions.
</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> LoadTwitterButton_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">if</span> (Application.Current.IsRunningOutOfBrowser
&amp;&amp; </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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.Current.HasElevatedPermissions)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">//it's
OK to access Twitter services cross domain now</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">        GetPublicTimeLine();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
Tomorrow, we will look at extending this sample by allowing to send credentials to
Twitter to access personalized streams of tweets.
</p>
        <p>
The complete sample can be downloaded here.
</p>
        <a href="http://www.snowball.be/content/binary/SLTrustedTwitter.zip">SLTrustedTwitter.zip
(269 KB)</a>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=ddee7c59-92db-42a2-a271-c374c00f5fb8" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 16th: The new DataGrid has landed!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/16/Silverlight+Advent+Calendar+December+16th+The+New+DataGrid+Has+Landed.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4609f0e4-2c5c-4e81-a4a2-52eaad64bf7e.aspx</id>
    <published>2009-12-16T22:10:05.281+01:00</published>
    <updated>2009-12-16T22:12:38.078+01: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>
The DataGrid is probably the most popular control in many business applications. Added
in Silverlight 2, this control allows for easy displaying and editing of data in a
tabular format. While already a very decent control, the DataGrid in Silverlight 2
and 3 still had some things that were missing or not working like you’d hope them
to. In today’s post, we’ll look at the newly added changes to the control.
</p>
        <p>
The first and probably biggest change is the auto-sizing option for columns. In previous
versions, we could basically specify a column width or specify nothing at all, leaving
it to Silverlight. What we could not do, was saying to a specific column: Take all
the remaining space, similar to what we can do with the Grid control through the use
of *.
</p>
        <p>
Basically, there are now 5 options we have to specify how a column should behave (copied
from the MSDN docs):
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="688">
          <tbody>
            <tr>
              <td valign="top" width="200">
Member name<br /></td>
              <td valign="top" width="486">
Description</td>
            </tr>
            <tr>
              <td valign="top" width="200">
Auto<br /></td>
              <td valign="top" width="486">
The unit of measure is based on the size of the cells and the column header.</td>
            </tr>
            <tr>
              <td valign="top" width="200">
Pixel</td>
              <td valign="top" width="486">
The unit of measure is expressed in pixels.</td>
            </tr>
            <tr>
              <td valign="top" width="200">
SizeToCells</td>
              <td valign="top" width="486">
The unit of measure is based on the size of the cells.</td>
            </tr>
            <tr>
              <td valign="top" width="200">
SizeToHeader</td>
              <td valign="top" width="486">
The unit of measure is based on the size of the column header.</td>
            </tr>
            <tr>
              <td valign="top" width="200">
Star</td>
              <td valign="top" width="486">
The unit of measure is a weighted proportion of the available space.</td>
            </tr>
          </tbody>
        </table>
        <p>
Let’s take a look at using these in an example. I created a random data generator
(see sample code download), which generates Employee instances. These are stored in
a generic list which is then set as the ItemsSource for a DataGrid. The result can
be see below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember16thThe_13308/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/SilverlightAdventCalendarDecember16thThe_13308/image_thumb_1.png" width="597" height="333" />
          </a>
        </p>
        <p>
As you can see in the screenshot, the Address column is wider than the others. I actually
specified it to be twice as wide as the FirstName and the LastName columns. The City
column has a specific width set.
</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">data:DataGrid</span>
              <span style="COLOR: #ff0000">AutoGenerateColumns</span>
              <span style="COLOR: #0000ff">="False"</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="EmployeeDataGrid"</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">HeadersVisibility</span>
              <span style="COLOR: #0000ff">="All"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</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">data:DataGrid.Columns</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">data:DataGridTextColumn</span>
              <span style="COLOR: #ff0000">Header</span>
              <span style="COLOR: #0000ff">="FirstName"</span>
              <span style="COLOR: #ff0000">Binding</span>
              <span style="COLOR: #0000ff">="{Binding
FirstName}"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="*"</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">data:DataGridTextColumn</span>
              <span style="COLOR: #ff0000">Header</span>
              <span style="COLOR: #0000ff">="LastName"</span>
              <span style="COLOR: #ff0000">Binding</span>
              <span style="COLOR: #0000ff">="{Binding
LastName}"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="*"</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">data:DataGridTextColumn</span>
              <span style="COLOR: #ff0000">Header</span>
              <span style="COLOR: #0000ff">="Address"</span>
              <span style="COLOR: #ff0000">Binding</span>
              <span style="COLOR: #0000ff">="{Binding
Address}"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="2*"</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">data:DataGridTextColumn</span>
              <span style="COLOR: #ff0000">Header</span>
              <span style="COLOR: #0000ff">="City"</span>
              <span style="COLOR: #ff0000">Binding</span>
              <span style="COLOR: #0000ff">="{Binding
City}"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="100"</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">data:DataGrid.Columns</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">data:DataGrid</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
We can also use the other options. By clicking on the Change button at the top, we
switch the DataGrid to use another sizing option.
</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">private void ChangeColumnsButton_Click(object 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">    EmployeeDataGrid.Columns[0].Width = new DataGridLength(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">        DataGridLengthUnitType.SizeToCells);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    EmployeeDataGrid.Columns[1].Width = new DataGridLength(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">        DataGridLengthUnitType.SizeToCells);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    EmployeeDataGrid.Columns[2].Width = new DataGridLength(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">        DataGridLengthUnitType.SizeToCells);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    EmployeeDataGrid.Columns[3].Width = new DataGridLength(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">        DataGridLengthUnitType.Star);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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 results in the following:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember16thThe_13308/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/SilverlightAdventCalendarDecember16thThe_13308/image_thumb_2.png" width="584" height="325" />
          </a>
        </p>
        <p>
The first three columns are sizing to their contents. The City column takes all the
remaining space.
</p>
        <p>
The second new feature concerning the DataGrid, is the ability to copy data from the
DataGrid to Excel. This feature is really handy in business applications. Very often,
we need to be able to export data from an application towards Excel. This can make
this very easy to do.
</p>
        <p>
When we start a copy by selecting one or more rows, we are shown a prompt, asking
us if we want to allow access to the clipboard. If confirmed, the data is copied as
textual information and can be pasted in Excel. 
</p>
        <p>
There’s an event fired per row that is copied to the clipboard, namely the CopyingRowClipboardContent
event. In this event, we can see what data is being copied and if needed apply transformations
on it.
</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> EmployeeDataGrid_CopyingRowClipboardContent(<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">    DataGridRowClipboardEventArgs 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">
              <span style="COLOR: #008000">//
do something</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>
The complete sample can be downloaded here. <a href="http://www.snowball.be/content/binary/SLNewDataGrid.zip">SLNewDataGrid.zip
(1.04 MB)</a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4609f0e4-2c5c-4e81-a4a2-52eaad64bf7e" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 15th: Right-clicking in Silverlight 4 to create a context menu</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/15/Silverlight+Advent+Calendar+December+15th+Rightclicking+In+Silverlight+4+To+Create+A+Context+Menu.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,34ec979e-2f93-4b49-95f5-3c15046e137c.aspx</id>
    <published>2009-12-15T23:21:21.593+01:00</published>
    <updated>2009-12-15T23:24:06.42175+01: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 article, we’ll be looking at another new feature that was added with Silverlight
4, namely the ability to react to right-clicks in a Silverlight application. This
means that we can override the default behavior of Silverlight where it’s showing
the context menu allowing us to go to the configuration screen.
</p>
        <p>
Because Silverlight now supports right-clicking, we can create a context menu that
appears on the right-click event. We can code this context menu as we want. Right-clicking
is supported on any UIElement: on the UIElement class, there are two new events added,
namely the MouseRightButtonDown and the MouseRightButtonUp. Both of these new events
use MouseButtonEventArgs as their event arguments, which are also used for the normal
left click events.
</p>
        <p>
As said, by default, the Silverlight context menu is shown when a user right-clicks
on a Silverlight application. To block this, in the MouseRightButtonDown, we have
to set the e.Handled to true. This way, the default context menu is not shown and
we can go ahead and create our own context menu. This will appear on the MouseLeftButtonUp
event.
</p>
        <p>
Let’s take a look at a simple application. In this application, we have attached a
custom context menu on an Image control. Using this context menu, I can choose to
delete the image I clicked on.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember15thRig_10A99/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/SilverlightAdventCalendarDecember15thRig_10A99/image_thumb.png" width="431" height="273" />
          </a>
        </p>
        <p>
The image itself has both the MouseRightButtonDown and the MouseRightButtonUp events
attached to it using XAML 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">&lt;</span>
              <span style="COLOR: #800000">Image</span>
              <span style="COLOR: #ff0000">Height</span>
              <span style="COLOR: #0000ff">="195"</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="imgTree"</span>
              <span style="COLOR: #ff0000">Stretch</span>
              <span style="COLOR: #0000ff">="Fill"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="249"</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">MouseRightButtonDown</span>
              <span style="COLOR: #0000ff">="imgTree_MouseRightButtonDown"</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">MouseRightButtonUp</span>
              <span style="COLOR: #0000ff">="imgTree_MouseRightButtonUp"</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">="tree.png"</span>
              <span style="COLOR: #ff0000">Canvas</span>.<span style="COLOR: #ff0000">Left</span><span style="COLOR: #0000ff">="181"</span><span style="COLOR: #ff0000">Canvas</span>.<span style="COLOR: #ff0000">Top</span><span style="COLOR: #0000ff">="79"</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">Image</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
To prevent the default context menu from appearing, we can set the e.Handled to true
in the mouse down event:
</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> imgTree_MouseRightButtonDown(<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">    e.Handled = <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-->
          </div>
        </div>
        <p>
In the mouse up event, we can then specify what context menu we want to have appear:
</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> imgTree_MouseRightButtonUp(<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 image = 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">
              <span style="COLOR: #0000ff">if</span> (image
!= <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">        ContextMenu contextMenu = <span style="COLOR: #0000ff">new</span> ContextMenu(PrintCanvas,
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">        contextMenu.Show(e.GetPosition(LayoutRoot));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 ContextMenu used here is a custom control. 
</p>
        <p>
The complete source code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLRightClick.zip">SLRightClick.zip
(473.2 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=34ec979e-2f93-4b49-95f5-3c15046e137c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 14th: The Local Connection API explained</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/14/Silverlight+Advent+Calendar+December+14th+The+Local+Connection+API+Explained.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,daff8260-0a9a-4691-9385-fed77ee3bf3f.aspx</id>
    <published>2009-12-14T21:31:33.579+01:00</published>
    <updated>2009-12-14T23:46:16.313375+01: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>
Only 10 days ‘till Christmas and thus only 10 more posts after this one to finish
my series. In today’s post, we’ll be taking a look at the Local Connection API, a
feature introduced with Silverlight 3.
</p>
        <p>
Most of the time, we build full-screen Silverlight applications, meaning that the
only function that the HTML still fulfills, is hosting a DIV that will contain the
HTML OBJECT tag in which Silverlight will be hosted. However, sometimes Silverlight
could be used as an “island” on an HTML page. For example, we could have an HTML page
(perhaps rendered by ASP.NET) in which a table of data is shown. The end-user may
want a richer experience with this data grid such as reordering rows, efficient paging
and so on. We could decide to just convert that specific part to functionality to
Silverlight, resulting in a Silverlight island. 
</p>
        <p>
To go even further, in some scenarios, it may be needed that two or more of these
Silverlight islands live on a single page. Silverlight 2 introduced the HTML Bridge
to allow these two Silverlight plug-ins to talk to one another: using Javascript as
an intermediate, we could send messages from control 1 to control 2 and vice-versa.
While possible, it’s not the easiest way of developing an application.
</p>
        <p>
Silverlight 3 introduced something easier for this particular problem, namely the
local connection API. It basically allows two or more Silverlight instances to communicate
with each other. These two instances can live on the same page, but can even live
on two different browser tabs or even two different browser windows. The API uses
a concept of a named pipe: a named sender sends a message into a pipe and a receiver
can intercept this message. The message needs to be a string.
</p>
        <p>
The messaging system introduced is based on two types, LocalMessageSender and LocalMessageReceiver,
both types that live in the System.Windows.Messaging namespace. 
</p>
        <p>
Let’s take a look at an example. The application I built for this post contains two
Silverlight controls. The first control contains a few buttons. When clicking on a
button, I want to change the background of control n° 2. (Note that these are actually
2 different Silverlight applications hosted on one single page).
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember14thThe_12BCB/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/SilverlightAdventCalendarDecember14thThe_12BCB/image_thumb.png" width="499" height="216" />
          </a>
        </p>
        <p>
The first thing we need to do is creating an instance of the LocalMessageSender class.
As parameter, we pass in the name that will be used as the identification (ColorSender),
like so:
</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> LocalMessageSender
localMessageSender;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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> LocalMessageReceiver
localMessageReceiver;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> 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-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">    localMessageSender = <span style="COLOR: #0000ff">new</span> LocalMessageSender(<span style="COLOR: #006080">"ColorSender"</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>
When we click on a button, we’ll send a message using this instance. In this case,
we pass in the name of the color we want:
</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> RedButton_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">  localMessageSender.SendAsync(<span style="COLOR: #006080">"Red"</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">private</span>
              <span style="COLOR: #0000ff">void</span> GreenButton_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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">  localMessageSender.SendAsync(<span style="COLOR: #006080">"Green"</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">private</span>
              <span style="COLOR: #0000ff">void</span> BlueButton_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">  localMessageSender.SendAsync(<span style="COLOR: #006080">"Blue"</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>
In the second application, we create a LocalMessageReceiver, passing in the same string,
ColorSender, as the name of the sender it should listen to. We then specify the handler
for the MessageReceived event, which will trigger when a string is received. The receiver
starts listening for values by calling its Listen() method:
</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> LocalMessageReceiver
localMessageReceiver;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> 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">  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">  localMessageReceiver = <span style="COLOR: #0000ff">new</span> LocalMessageReceiver(<span style="COLOR: #006080">"ColorSender"</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">  localMessageReceiver.MessageReceived += </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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;MessageReceivedEventArgs&gt;(localMessageReceiver_MessageReceived);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  localMessageReceiver.Listen();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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>
Based on the value of the received message, we change the color:
</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> localMessageReceiver_MessageReceived(<span style="COLOR: #0000ff">object</span> sender,
MessageReceivedEventArgs 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">switch</span> (e.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">
              <span style="COLOR: #0000ff">case</span>
              <span style="COLOR: #006080">"Red"</span>:
LayoutRoot.Background = <span style="COLOR: #0000ff">new</span> SolidColorBrush(Colors.Red);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                ColorTextBlock.Text = <span style="COLOR: #006080">"RED"</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">break</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">case</span>
              <span style="COLOR: #006080">"Green"</span>:
LayoutRoot.Background = <span style="COLOR: #0000ff">new</span> SolidColorBrush(Colors.Green);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                  ColorTextBlock.Text = <span style="COLOR: #006080">"GREEN"</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">break</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">case</span>
              <span style="COLOR: #006080">"Blue"</span>:
LayoutRoot.Background = <span style="COLOR: #0000ff">new</span> SolidColorBrush(Colors.Blue);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                 ColorTextBlock.Text = <span style="COLOR: #006080">"BLUE"</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">break</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">default</span>:
LayoutRoot.Background = <span style="COLOR: #0000ff">new</span> SolidColorBrush(Colors.White);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">             ColorTextBlock.Text = <span style="COLOR: #006080">"WHITE"</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">break</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>
The code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLLocalConnection.zip">SLLocalConnection.zip
(97.1 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=daff8260-0a9a-4691-9385-fed77ee3bf3f" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: now taking requests</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/14/Silverlight+Advent+Calendar+Now+Taking+Requests.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7de76986-3aa8-49e5-8070-ec145b061525.aspx</id>
    <published>2009-12-14T08:57:06.032125+01:00</published>
    <updated>2009-12-14T08:57:06.032125+01:00</updated>
    <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>
I hope you are all enjoying my post series Silverlight Advent Calendar. I still have
a list of upcoming articles, but I was wondering, are there any specific things you
would like to see appear?
</p>
        <p>
I have one request already for an article on the local connection API, that will come
in the coming days.
</p>
        <p>
Let me know your ideas!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7de76986-3aa8-49e5-8070-ec145b061525" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 13th: Working with Bing from Silverlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/13/Silverlight+Advent+Calendar+December+13th+Working+With+Bing+From+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,3f37c7e8-ce27-4503-811a-b3ab50d2c209.aspx</id>
    <published>2009-12-13T12:48:53.796+01:00</published>
    <updated>2009-12-13T14:10:39.842875+01: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 align="left">
In today’s post, we will be working with services. As some of you know, I’m currently
finishing my first book titled <strong>Silverlight 4 Data Access Cookbook</strong>.
If all goes well, it will be available in early access preview somewhere in the coming
week. Therefore, I decided I needed to write a post that’s in the same area as my
book. More specifically, I’ll be creating a application that works together with the
services API exposed by Bing.com, Microsoft’s new and successful search engine.
</p>
        <p align="left">
Bing has a very rich API that we can use to incorporate search functionalities in
our applications, including Silverlight applications. It allows us to use WCF (SOAP)
and REST communication, because it exposes endpoints for both these technologies.
In this particular example, I’m using the SOAP interface for communication using a
WCF service. To get a complete overview of the functionalities, you can download the
PDF describing the entire API at <a href="http://www.bing.com/developers/s/API%20Basics.pdf">http://www.bing.com/developers/s/API%20Basics.pdf</a> .
It also contains some sample code. 
</p>
        <p align="left">
The very first thing we should before we can actually start building applications
with Bing, is obtaining an API key. This key is required so Bing can check that your
request is valid (this key will be part of every request you’ll send to Bing). Obtaining
a key is free and can be done at <a href="http://www.bing.com/developers/createapp.aspx">http://www.bing.com/developers/createapp.aspx</a> .
</p>
        <p align="left">
The provided sample is a Silverlight 4/VS2010 solution, all the code included however
also works with Visual Studio 2008/Silverlight 3.
</p>
        <p align="left">
First, we need to generate a proxy using Visual Studio 2010. For this, we need the
address of the WSDL (Web Service Description Language) file. In the documentation,
we can find that this address is: <a href="http://api.search.live.net/search.wsdl?AppID=12345">http://api.search.live.net/search.wsdl?AppID=12345</a> where
12345 needs to be replaced with your obtained API key. In Visual Studio, we add the
service reference using the dialog and I have set the namespace to BingSearchService. 
</p>
        <p align="left">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember13thWor_93A5/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/SilverlightAdventCalendarDecember13thWor_93A5/image_thumb.png" width="471" height="381" />
          </a>
        </p>
        <p align="left">
Visual Studio will at this point create the proxy for the service. A proxy contains
a client-side copy of the types exposed by the service and its methods. The contents
of the methods is replaced with a call to the real service method. In the client-side
code, we can now work with these types and methods.
</p>
        <p align="left">
In the screenshot a bit further, you can see the interface of the application. It
contains a TextBox and a Button to search and a templated ListBox to display the results.
Let’s first create the code for the event handler of the click event. Bing accepts
quite a lot of parameters for the search it needs to perform. These are encapsulated
in an object of type SearchRequest. Since we are conducting a normal web search, we
specify this in the Sources property of the SearchRequest instance. A search with
Bing is a service request, so all communication needs to be done asynchronously. We
can see this at the way we are calling the service using the SearchCompleted event
and SearchAsync() method. Below is the 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> SearchButton_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">  LiveSearchPortTypeClient soapClient = <span style="COLOR: #0000ff">new</span> LiveSearchPortTypeClient();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  SearchRequest request = <span style="COLOR: #0000ff">new</span> SearchRequest();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  request.AppId = <span style="COLOR: #006080">"81691C6A195FBC3FB469594BAA30B50A99CF3D22"</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">  request.Sources = <span style="COLOR: #0000ff">new</span> SourceType[]
{ SourceType.Web };</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (SearchTextBox.Text
!= <span style="COLOR: #0000ff">string</span>.Empty)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">    request.Query = SearchTextBox.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">    soapClient.SearchCompleted += </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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;SearchCompletedEventArgs&gt;(soapClient_SearchCompleted);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    soapClient.SearchAsync(request);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 align="left">
When the service completes asynchronously, meaning, when Bing’s results are ready
and available, the *Completed event is called and executed. In this event handler,
we have access to the results of the service call. The result can be found in the
e.Result parameter and is always of the same type as returned by the service. In our
specific case, the used type is a SearchResponse, again a type exposed by the Bing
services. We can now loop through these results and using a simple LINQ query, create
an IEnumberable&lt;SearchResult&gt; . SearchResult is a type created by us to allow
us to data bind to the results. This type is very simple:
</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> SearchResult</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> SearchResultTitle
{ 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> SearchResultDescription
{ 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> SearchResultUri
{ 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-->
          </div>
        </div>
        <p align="left">
The code for the event handler 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">void</span> soapClient_SearchCompleted(<span style="COLOR: #0000ff">object</span> sender,
SearchCompletedEventArgs 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">    SearchResponse response = 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">
              <span style="COLOR: #0000ff">if</span> (response.Web.Results.Count()
&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">        var results = from result <span style="COLOR: #0000ff">in</span> response.Web.Results</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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> SearchResult</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">                          SearchResultTitle = result.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">                          SearchResultUri = result.Url,</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                          SearchResultDescription = result.Description</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        ResultListBox.ItemsSource = results.ToList();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 align="left">
The ListBox is as said templated; the ItemsTemplate has been replaced with a custom
data template, as 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">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">ListBox</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="ResultListBox"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">Margin</span><span style="COLOR: #0000ff">="3"</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">ListBox.ItemTemplate</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">DataTemplate</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">
              <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: #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: #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: #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">TextBlock</span>
              <span style="COLOR: #ff0000">Text</span>
              <span style="COLOR: #0000ff">="{Binding
SearchResultTitle}"</span>
              <span style="COLOR: #ff0000">FontWeight</span>
              <span style="COLOR: #0000ff">="Bold"</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">FontSize</span>
              <span style="COLOR: #0000ff">="15"</span>
              <span style="COLOR: #ff0000">TextDecorations</span>
              <span style="COLOR: #0000ff">="Underline"</span>
              <span style="COLOR: #ff0000">Foreground</span>
              <span style="COLOR: #0000ff">="White"</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
SearchResultDescription}"</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">TextWrapping</span>
              <span style="COLOR: #0000ff">="Wrap"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="400"</span>
              <span style="COLOR: #ff0000">HorizontalAlignment</span>
              <span style="COLOR: #0000ff">="Left"</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">Foreground</span>
              <span style="COLOR: #0000ff">="White"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
SearchResultUri}"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="2"</span><span style="COLOR: #ff0000">Foreground</span><span style="COLOR: #0000ff">="#568e71"</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: #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-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">DataTemplate</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">ListBox.ItemTemplate</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">ListBox</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p align="left">
When we now execute a search using our application, we see the following:
</p>
        <p align="left">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember13thWor_93A5/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/SilverlightAdventCalendarDecember13thWor_93A5/image_thumb_1.png" width="467" height="503" />
          </a>
        </p>
        <p align="left">
The complete sample can be downloaded here: 
</p>
        <a href="http://www.snowball.be/content/binary/SLBing.zip">SLBing.zip (790.49 KB)</a>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=3f37c7e8-ce27-4503-811a-b3ab50d2c209" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 12th: The RichTextArea exposed</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/11/Silverlight+Advent+Calendar+December+12th+The+RichTextArea+Exposed.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,0caa27b9-7c64-4403-867a-6acbd72d8024.aspx</id>
    <published>2009-12-12T00:49:28.687+01:00</published>
    <updated>2009-12-12T00:56:50.42175+01: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>
I made it through the first half of my Silverlight Advent Calendar! You’re currently
reading the 12th installment of my article series. In this article, we are looking
at the RichTextArea control, which was added to the platform with Silverlight 4. 
</p>
        <p>
Up until Silverlight 4, we had no real way to perform rich text editing. Some (open
source) implementations have been built of which the best one is in my opinion VectorLight.com’s
RichTextBox/RichTextBlock (check it out at <a href="http://www.vectorlight.com">www.vectorlight.com</a>,
they have quite some nice controls). Silverlight 4 introduces the RichTextArea control.
Its name already implies what it is capable of: allowing us to do rich text editing
in our Silverlight applications. Things like making text bold, italic or underlined
are of course supported by this control. On top of that, more advanced options are
available, such as adding hyperlinks in text, adding images and adding XAML content.
It can also out-of-the-box work with the clipboard and offers BiDi support. The latter
is important for some languages such as Hebrew, since these are right-to-left languages.
</p>
        <p>
Behind the visual of the control, text is being added as XAML, so in fact, the control
is rendering the result of that XAML. This XAML is XAML like we know it for displaying
rich text using TextBlock controls, containing Paragraphs, Runs and LineBreaks. At
the time of writing, there is no real Text property on the control to get the entered
text without the markup. To get the contents, we can use the Blocks collection to
loop through the content. This is a bit of a setback and I can only hope it will in
some way become possible to get the text from the control as well (without the markup).
</p>
        <p>
Using this new control, we can thus perform most of the actions we’ll want to do with
text. The control does not have buttons by default, so we need to add them ourselves.
Below is an implementation of the control in combination with a ribbon (found in the
official Silverlight 4 whitepaper/documentation).
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember12thThe_25/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/SilverlightAdventCalendarDecember12thThe_25/image_thumb.png" width="491" height="349" />
          </a>
        </p>
        <p>
Let’s take a look a simple implementation now. My implementation will make it possible
to add text (quite logically), make it bold, underlined or italic. We’ll also add
the possibility to change the color of the selected text and print it using the new
printing functions in Silverlight 4.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember12thThe_25/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/SilverlightAdventCalendarDecember12thThe_25/image_thumb_1.png" width="413" height="241" />
          </a>
        </p>
        <p>
Below is the XAML for the RichTextArea (nothing special as you can see):
</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">RichTextArea</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="MainRichTextArea"</span>
              <span style="COLOR: #ff0000">Height</span>
              <span style="COLOR: #0000ff">="300"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">RichTextArea</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
To implement the different functions, we need to add some code in the event handlers
of the button click events. For example, if we want to make the selected text bold,
we start by checking if text is selected. If there is, we check if the selected text
is already bold or not. We set it to bold if it isn’t and vice-versa of course. The
code for this 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">
              <span style="COLOR: #0000ff">private</span>
              <span style="COLOR: #0000ff">void</span> BoldButton_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">if</span> (MainRichTextArea.Selection.Text.Length
&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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (MainRichTextArea.Selection.GetPropertyValue(Run.FontWeightProperty) </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">
              <span style="COLOR: #0000ff">is</span> FontWeight
&amp;&amp;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        ((FontWeight)MainRichTextArea.Selection.GetPropertyValue</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        (Run.FontWeightProperty)) == FontWeights.Normal)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">          MainRichTextArea.Selection.SetPropertyValue(Run.FontWeightProperty, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">            FontWeights.Bold);  </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        MainRichTextArea.Selection.SetPropertyValue(Run.FontWeightProperty, </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">          FontWeights.Normal);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        MainRichTextArea.Focus();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
The code is similar for the other actions, it can be found in the sample code download.
When we want to print our added text, we have 2 options. The most simple one is pointing
the PageVisual to the RichTextArea:
</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> PrintButton_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">  PrintDocument printDocument = <span style="COLOR: #0000ff">new</span> PrintDocument();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  printDocument.DocumentName = <span style="COLOR: #006080">"My
rich text"</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">  printDocument.PrintPage += (s, args) =&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">    args.PageVisual = MainRichTextArea;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">  printDocument.Print();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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 second option exists out of looping through the Blocks collection of the RichTextArea,
parsing each of the retrieved items and adding them to the Inlines collection of a
TextBlock control.
</p>
        <p>
The sample code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLRichTextArea.zip">SLRichTextArea.zip
(84.68 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=0caa27b9-7c64-4403-867a-6acbd72d8024" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 11th: Local file access in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/11/Silverlight+Advent+Calendar+December+11th+Local+File+Access+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a37051ef-4502-460f-acd8-799b20472c00.aspx</id>
    <published>2009-12-11T22:34:42.249+01:00</published>
    <updated>2009-12-11T22:47:53.031125+01: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>
One day away from finishing the first 12 (half of the total of 24 ;-) )of my Silverlight
articles. In this post, we are looking at local file access in Silverlight 4. This
new feature is another one that is only enabled with OOB apps with elevated permissions.
</p>
        <p>
In Silverlight 2 and 3, we already had some basic file access. We could perform an
OpenFileDialog starting with Silverlight 2. It gave us a read-only stream to the selected
file, meaning that the only thing we could do with the file, was reading it and using
its contents in the application. Silverlight 3 added the SaveFileDialog, which, surprisingly,
allows us to save files to the local disk.
</p>
        <p>
Silverlight 4 ads more or less real local data access. By more or less, I mean that
Silverlight applications can only access some folders. More particularly, we can access
the My Documents, My Pictures, My Videos and My Music folders (on Mac, an equivalent
exists). Within this directory, we can read, create and delete files. One important
side-note though: the application needs to be a trusted application, meaning that
it needs to run with elevated permissions.
</p>
        <p>
Silverlight has a specific enumeration that we can use to get the physical location
of the files: Environment.SpecialFolder. In it, we can find MyPictures etc. Note that
it contains more than what we can access at this point, for example ProgramFiles.
Even if we try to do something with this, we can’t since Silverlight won’t allow access
to this directory.
</p>
        <p>
Let’s take a look at a basic application as shown below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember11thLoc_A0E4/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/SilverlightAdventCalendarDecember11thLoc_A0E4/image_thumb.png" width="536" height="359" />
          </a>
        </p>
        <p>
Let’s first take a look at the left listbox, which is filled with the files of my
My Pictures folder. Reading out the files, as well as other operations on the files,
are done using the traditional classes contained in the System.IO namespace, such
as Directory, File, Path etc. To read out the contents, we use the following 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">if</span> (canWork)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 files = Directory.EnumerateFiles(Environment.GetFolderPath</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">   (Environment.SpecialFolder.MyPictures));</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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
file <span style="COLOR: #0000ff">in</span> files)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> fileName
= System.IO.Path.GetFileName(file);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      imageNames.Add(fileName);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">    ImageListBox.ItemsSource = imageNames;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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 the canWork bool value. Since the application can only work if running OOB and
with elevated permissions, we perform a check initially to see if the operations are
permitted. The value is set through the following 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> MainPage_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: #008000">//check
to see if application is running OOB and with elevated permissions</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> (App.Current.IsRunningOutOfBrowser
&amp;&amp; App.Current.HasElevatedPermissions)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    canWork = <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">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">    MessageBox.Show(<span style="COLOR: #006080">"The
application needs to run out-of-browser with 
</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">      elevated permissions");</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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 second listbox is filled with all *.txt files, located in my My Documents folder:
I’m simply applying a filter.
</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> FetchTextFiles()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 files = Directory.EnumerateFiles(Environment.GetFolderPath</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">     (Environment.SpecialFolder.MyDocuments))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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(filename =&gt; filename.EndsWith(<span style="COLOR: #006080">"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">    TextFilesListBox.ItemsSource = files;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', 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>
        </p>
        <p>
As said, we can do more than just reading out the contents of a directory. We can
for example delete a file. When we select a file in the second listbox, we can delete
it using the following 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> DeleteButton_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">if</span> (canWork)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (TextFilesListBox.SelectedItem
!= <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">
              <span style="COLOR: #0000ff">string</span> path
= TextFilesListBox.SelectedItem.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">      File.Delete(path);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">      FetchTextFiles();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
As you can see, working with the files is no different than working with files in
plain .NET.
</p>
        <p>
The code can be downloaded here: <a href="http://www.snowball.be/content/binary/SLLocalFileAccess.zip">SLLocalFileAccess.zip
(68.26 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a37051ef-4502-460f-acd8-799b20472c00" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 10th: Working with the webcam from Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/10/Silverlight+Advent+Calendar+December+10th+Working+With+The+Webcam+From+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,f2a33b7c-3077-4095-b95c-0fc2f584898d.aspx</id>
    <published>2009-12-10T11:33:15.296+01:00</published>
    <updated>2009-12-11T22:48:56.078+01: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>
Today, we are looking again at another new feature in Silverlight 4 which is the support
for webcams and microphones. 
</p>
        <p>
Silverlight 4 gets support for microphones and webcams. It has access to the raw streams
for both. The added support opens a lot of opportunities for new types of applications.
For example, it becomes possible to write an application that reads barcodes of products
you hold in front of the webcam, scans them and searches for product information. 
</p>
        <p>
The classes that expose this functionality live in the System.Windows.Media namespace.
We’ll be using those to create a simple application that connects with the webcam
and takes snapshots. Below is the interface of the application (a colleague of mine
was just eating a banana :) )
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember10thWor_903/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/SilverlightAdventCalendarDecember10thWor_903/image_thumb.png" width="450" height="353" />
          </a>
        </p>
        <p>
The XAML for the application is shown below. The ComboBox displays the available webcams
(only one on my machine), we are binding to the FriendlyName property. The ListBox
is templated: both the ItemsTemplate and the ItemsPanel are overriden, to have the
control display a horizontal list of images.
</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">="White"</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">="330"</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">="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">="140"</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">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">Border</span>
              <span style="COLOR: #ff0000">BorderBrush</span>
              <span style="COLOR: #0000ff">="Black"</span>
              <span style="COLOR: #ff0000">BorderThickness</span>
              <span style="COLOR: #0000ff">="3"</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;</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">Rectangle</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="WebcamRectangle"</span>
              <span style="COLOR: #ff0000">Fill</span>
              <span style="COLOR: #0000ff">="LightGray"</span>
              <span style="COLOR: #ff0000">Height</span>
              <span style="COLOR: #0000ff">="300"</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">Width</span>
              <span style="COLOR: #0000ff">="400"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Rectangle</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">Border</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">StackPanel</span>
              <span style="COLOR: #ff0000">Orientation</span>
              <span style="COLOR: #0000ff">="Horizontal"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</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">="Center"</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">ComboBox</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="WebcamComboBox"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="200"</span>
              <span style="COLOR: #ff0000">Margin</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">SelectionChanged</span>
              <span style="COLOR: #0000ff">="WebcamComboBox_SelectionChanged"</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">ComboBox.ItemTemplate</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">DataTemplate</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
FriendlyName}"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">DataTemplate</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">ComboBox.ItemTemplate</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">ComboBox</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">x:Name</span>
              <span style="COLOR: #0000ff">="StartWebcamButton"</span>
              <span style="COLOR: #ff0000">Click</span>
              <span style="COLOR: #0000ff">="StartWebcamButton_Click"</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">Content</span>
              <span style="COLOR: #0000ff">="Start
webcam"</span>
              <span style="COLOR: #ff0000">HorizontalAlignment</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">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">Button</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="TakePictureButton"</span>
              <span style="COLOR: #ff0000">Click</span>
              <span style="COLOR: #0000ff">="TakePictureButton_Click"</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">Content</span>
              <span style="COLOR: #0000ff">="Take
picture"</span>
              <span style="COLOR: #ff0000">HorizontalAlignment</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">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">StackPanel</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">ListBox</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="PicListBox"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="500"</span>
              <span style="COLOR: #ff0000">Height</span>
              <span style="COLOR: #0000ff">="120"</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">ScrollViewer</span>.<span style="COLOR: #ff0000">HorizontalScrollBarVisibility</span><span style="COLOR: #0000ff">="Visible"</span><span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="2"</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">ListBox.ItemTemplate</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">DataTemplate</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">Image</span>
              <span style="COLOR: #ff0000">Margin</span>
              <span style="COLOR: #0000ff">="5"</span>
              <span style="COLOR: #ff0000">Source</span>
              <span style="COLOR: #0000ff">="{Binding}"</span>
              <span style="COLOR: #ff0000">Stretch</span>
              <span style="COLOR: #0000ff">="UniformToFill"</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">Height</span>
              <span style="COLOR: #0000ff">="80"</span>
              <span style="COLOR: #ff0000">VerticalAlignment</span>
              <span style="COLOR: #0000ff">="Center"</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">DataTemplate</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">ListBox.ItemTemplate</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">ListBox.ItemsPanel</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">ItemsPanelTemplate</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">StackPanel</span>
              <span style="COLOR: #ff0000">Orientation</span>
              <span style="COLOR: #0000ff">="Horizontal"</span>
              <span style="COLOR: #ff0000">VerticalAlignment</span>
              <span style="COLOR: #0000ff">="Top"</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">HorizontalAlignment</span>
              <span style="COLOR: #0000ff">="Left"</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">ItemsPanelTemplate</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">ListBox.ItemsPanel</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">ListBox</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 align="left">
To fill the ComboBox with the available webcams, we can use the CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices().
This returns a Collection of VideoCaptureDevice instances. The VideoCaptureDevice
class exposes the FriendlyName property we used in the data binding expression.
</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">//fills
the dropdown with all available webcams</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">WebcamComboBox.ItemsSource = </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">  CaptureDeviceConfiguration.GetAvailableVideoCaptureDevices();</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
We can instruct Silverlight to use the default capturing device, if nothing is selected
by the user in the ComboBox:
</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">//use
the 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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">VideoCaptureDevice selectedVideoCaptureDevice = </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">CaptureDeviceConfiguration.GetDefaultVideoCaptureDevice();</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
A little side note: we can change the default device in the Silverlight Configuration
window as shown below.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember10thWor_903/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/SilverlightAdventCalendarDecember10thWor_903/image_thumb_1.png" width="418" height="294" />
          </a>
        </p>
        <p>
Starting the webcam needs to be a user-initiated action. It’s impossible to start
the webcam on load of the application for example. Therefore, we put this code in
the event handler of the click on the Button. Whenever the webcam is started, a prompt
is shown, asking the user if he wants to allow the application to access the device.
This prompt can not be changed by the developer.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember10thWor_903/image_6.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/SilverlightAdventCalendarDecember10thWor_903/image_thumb_2.png" width="448" height="176" />
          </a>
        </p>
        <p>
The following lines of code, located in the click event handler, check if the user
has already granted permission in this particular session to access the webcam. If
not, the prompt is shown following the RequestDeviceAccess() method call.
</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> (CaptureDeviceConfiguration.AllowedDeviceAccess </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    || CaptureDeviceConfiguration.RequestDeviceAccess())</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
        </p>
        <p>
To access the video capture of the webcam, we use the CaptureSource class. 
</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">VideoCaptureDevice videoCaptureDevice = selectedVideoCaptureDevice;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">CaptureSource captureSource = <span style="COLOR: #0000ff">new</span> CaptureSource();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">captureSource.VideoCaptureDevice = videoCaptureDevice;</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
This CaptureSource can then be used in combination with a VideoBrush to paint the
video on any shape. Here, we used a Rectangle. To start the capturing of the device
associated with the capture device (note that more than one device can be associated
with one CaptureSource), we call its Start() method.
</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">VideoBrush videoBrush = <span style="COLOR: #0000ff">new</span> VideoBrush();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">videoBrush.SetSource(captureSource);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">WebcamRectangle.Fill = videoBrush;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">captureSource.Start();</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
If we want to capture a snapshot, we can use the AsyncCaptureImage method. It provides
a WriteableBitmap to the Action(T) which is passed in as parameter. We add the image
to the collection. Because of the applied binding, it is displayed automatically.
</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> TakePictureButton_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">    captureSource.AsyncCaptureImage((snapshot) =&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">        snapshots.Add(snapshot);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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 complete code for today’s article can be found here: <a href="http://www.snowball.be/content/binary/SLWebcam.zip">SLWebcam.zip
(60.67 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=f2a33b7c-3077-4095-b95c-0fc2f584898d" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 9th: Element-to-element bindings in Silverlight 3</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/09/Silverlight+Advent+Calendar+December+9th+Elementtoelement+Bindings+In+Silverlight+3.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4c4eb74a-7dd6-42d9-a414-9d09bdf9414b.aspx</id>
    <published>2009-12-09T23:35:28.171+01:00</published>
    <updated>2009-12-09T23:47:25.562375+01: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">
        <div id="codeSnippetWrapper">Article number 9 is here, a bit later on the day since
I was home late yesterday from the MVP dinner we had and left at 6am this morning
to do the Silverlight Road Show. But here we are with the article of today, December
9th!
</div>
        <p>
Today we are looking at a data binding feature that was introduced with Silverlight
3. The reason I’m dedicating an article to it, is that not that many people seem to
know about this little gem, namely element-to-element binding or simply element binding.
Regular data binding happens between a source object (for example a Person or a Customer)
and a control such as a TextBlock. Element binding happens between 2 controls: a property
of element A is bound to a property of element B.
</p>
        <p>
A good example to understand element bindings is the following: a Slider control of
which the Value property is bound to the Text property of a TextBlock.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SSilverlightAdventCalendarDecember9thEle_EB32/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/SSilverlightAdventCalendarDecember9thEle_EB32/image_thumb.png" width="515" height="89" />
          </a>
        </p>
        <p>
To make the link between the 2 values, we create a binding as usual, but we specify
the “source” as being another element, in this case the Slider control using the ElementName
property on the binding.
</p>
        <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">StackPanel</span>
            <span style="COLOR: #ff0000">x:Name</span>
            <span style="COLOR: #0000ff">="SliderStackPanel"</span>
            <span style="COLOR: #ff0000">Orientation</span>
            <span style="COLOR: #0000ff">="Horizontal"</span>
            <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="0"</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">Slider</span>
            <span style="COLOR: #ff0000">x:Name</span>
            <span style="COLOR: #0000ff">="YearsToPensionSlider"</span>
            <span style="COLOR: #ff0000">Width</span>
            <span style="COLOR: #0000ff">="300"</span>
            <span style="COLOR: #ff0000">Minimum</span>
            <span style="COLOR: #0000ff">="0"</span>
            <span style="COLOR: #ff0000">Maximum</span>
            <span style="COLOR: #0000ff">="40"</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">SmallChange</span>
            <span style="COLOR: #0000ff">="1"</span>
            <span style="COLOR: #ff0000">LargeChange</span>
            <span style="COLOR: #0000ff">="1"</span>
            <span style="COLOR: #ff0000">VerticalAlignment</span>
            <span style="COLOR: #0000ff">="Center"</span>
            <span style="COLOR: #0000ff">&gt;&lt;/</span>
            <span style="COLOR: #800000">Slider</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">="ValueTextBlock"</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">Text</span>
            <span style="COLOR: #0000ff">="{Binding
ElementName=YearsToPensionSlider, Path=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: #ff0000">VerticalAlignment</span>
            <span style="COLOR: #0000ff">="Center"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">StackPanel</span>
            <span style="COLOR: #0000ff">&gt;</span>
          </pre>
          <!--CRLF-->
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
We can also make this binding a bi-directional binding. In the image above, in the
second row, it’s possible to specify a value manually in the TextBox control. Due
to the binding, the slider will also change its value if we specify the binding to
be a two way binding, as so:
</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">StackPanel</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="SliderStackPanel2"</span>
              <span style="COLOR: #ff0000">Orientation</span>
              <span style="COLOR: #0000ff">="Horizontal"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="1"</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">Slider</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="YearsToPensionSlider2"</span>
              <span style="COLOR: #ff0000">Width</span>
              <span style="COLOR: #0000ff">="300"</span>
              <span style="COLOR: #ff0000">Minimum</span>
              <span style="COLOR: #0000ff">="0"</span>
              <span style="COLOR: #ff0000">Maximum</span>
              <span style="COLOR: #0000ff">="40"</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">SmallChange</span>
              <span style="COLOR: #0000ff">="1"</span>
              <span style="COLOR: #ff0000">LargeChange</span>
              <span style="COLOR: #0000ff">="1"</span>
              <span style="COLOR: #ff0000">VerticalAlignment</span>
              <span style="COLOR: #0000ff">="Center"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">Slider</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">="ValueTextBox"</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
ElementName=YearsToPensionSlider2, Path=Value, Mode=TwoWay}"</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">Width</span>
              <span style="COLOR: #0000ff">="100"</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">StackPanel</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
You can download the code for this sample here. This is a Visual Studio 2008 project
and works both with Silverlight 3 and Silverlight 4.<a href="http://www.snowball.be/content/binary/SLElementBinding.zip">SLElementBinding.zip
(59.38 KB)</a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4c4eb74a-7dd6-42d9-a414-9d09bdf9414b" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight roadshow slide deck</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/09/Silverlight+Roadshow+Slide+Deck.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a793a206-d103-450a-82d4-b82d59e0ce08.aspx</id>
    <published>2009-12-09T21:25:32.64+01:00</published>
    <updated>2009-12-14T15:20:07.782125+01: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>
Today, I have been all over Belgium for the Silverlight Roadshow. As promised, you
can find the entire slide deck <a href="http://www.codeflakes.net/data/Silverlightoverview.zip" target="_blank">here</a>. 
</p>
        <p>
It includes the general Silverlight slides as well as the Silverlight 3 and 4 feature
overview slides.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a793a206-d103-450a-82d4-b82d59e0ce08" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 8th: Working with the clipboard in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/07/Silverlight+Advent+Calendar+December+8th+Working+With+The+Clipboard+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b6222757-d9b3-4d34-9c74-596f37119b7c.aspx</id>
    <published>2009-12-08T00:04:05.546+01:00</published>
    <updated>2009-12-08T00:06:24.4215+01: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>
Today, I picked another new feature of Silverlight 4, namely the programmatic access
to and from the clipboard in Silverlight 4. 
</p>
        <p>
Silverlight 4 has the ability to copy text to the clipboard, check if there is text
available on the clipboard and paste the text from the clipboard back to the Silverlight
application. To support this, it has 3 static methods available on the newly added
ClipBoard class:
</p>
        <ul>
          <li>
Clipboard.SetText() 
</li>
          <li>
Clipboard.ContainsText() 
</li>
          <li>
Clipboard.GetText()</li>
        </ul>
        <p>
Let’s look at using these in a sample. Below we see the interface of the basic text
editing application, containing 2 RichTextArea controls. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember8thWork_150D1/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/SilverlightAdventCalendarDecember8thWork_150D1/image_thumb.png" width="457" height="212" />
          </a>
        </p>
        <p>
When clicking on the left button, we check if there’s some text selected in the left
RichTextArea control. As said, this is done through the use of the static SetText()
method on the ClipBoard class. Note that any interaction with the Clipboard class
can only happen after a user-initiated action, such as clicking a Button. 
</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> CopyButton_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">if</span> (CopyTextArea.Selection.Text
!= <span style="COLOR: #0000ff">string</span>.Empty)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        WarningTextBlock.Text = <span style="COLOR: #0000ff">string</span>.Empty;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        Clipboard.SetText(CopyTextArea.Selection.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-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">        WarningTextBlock.Text = <span style="COLOR: #006080">"Select
some text first"</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>
        </p>
        <p>
This call is supported both in-browser and out-of-browser. There’s a difference though.
When accessing the clipboard from an in-browser application, a warning will be shown
to the user, asking if the action to the clipboard is trusted.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember8thWork_150D1/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/SilverlightAdventCalendarDecember8thWork_150D1/image_thumb_1.png" width="387" height="181" />
          </a>
        </p>
        <p>
If we however make our application a trusted application by requiring elevated permissions
when running out-of-browser, it will no longer display this prompt (we looked at elevating
permissions yesterday).
</p>
        <p>
When we want to paste in the text using the paste button, we can use the 2 other before
mentioned methods, like so:
</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> PasteButton_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">if</span> (Clipboard.ContainsText())</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        PasteTexArea.Selection.Text = Clipboard.GetText();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        WarningTextBlock.Text = <span style="COLOR: #006080">"No
text exists on the clipboard"</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>
In the current beta, we can only copy text to and from the clipboard. Objects such
as images are not supported at this point!
</p>
        <p>
The complete code for this sample can be found here: <a href="http://www.snowball.be/content/binary/SilverlightClipboard.zip">SilverlightClipboard.zip
(61.65 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b6222757-d9b3-4d34-9c74-596f37119b7c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Scott Guthrie in Belgium: the pics</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/06/Scott+Guthrie+In+Belgium+The+Pics.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,484b1374-0768-47cf-a7b1-4e4a0c64e855.aspx</id>
    <published>2009-12-07T00:23:10.109+01:00</published>
    <updated>2009-12-07T00:24:00.25025+01: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>
Last Friday, we had Scott Guthrie aka ScottGu aka The Gu in Belgium for a Visug/MSDN
event in Kinepolis Brussels. The event was fully booked, there was not a single seat
available anymore.
</p>
        <p>
For the event, we had planned something special: we ordered red polo’s for every attendee
(over 500 that is) and kindly asked everyone to put them on for the moment Scott came
into the room. The effect of having over 500 people in one cinema theatre wearing
exactly the same is overwhelming I can say! Of course, Scott received a polo as well. 
</p>
        <p>
Here are some of the pictures, more will be added soon. My complete list can be seen
on my <a href="http://www.flickr.com/photos/gillcleeren/sets/72157622821925421/" target="_blank">Flickr
account</a>.
</p>
        <p>
The polo’s are piled up
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162346057_b5911ee99c%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4162346057_b5911ee99c[1]" border="0" alt="4162346057_b5911ee99c[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162346057_b5911ee99c%5B1%5D_thumb.jpg" width="334" height="252" />
          </a>
        </p>
        <p>
Red ScottGu fans are starting to arrive
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163119340_ea32f0f6d6%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4163119340_ea32f0f6d6[1]" border="0" alt="4163119340_ea32f0f6d6[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163119340_ea32f0f6d6%5B1%5D_thumb.jpg" width="342" height="258" />
          </a>
        </p>
        <p>
Me in the room with Katrien and Pieter, Scott setting up his laptops
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163129498_d7df4a3e92%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4163129498_d7df4a3e92[1]" border="0" alt="4163129498_d7df4a3e92[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163129498_d7df4a3e92%5B1%5D_thumb.jpg" width="346" height="260" />
          </a>
        </p>
        <p>
Scott’s laptops (glad to see he likes Lenovo too :) )
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162378815_1e761001a8%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4162378815_1e761001a8[1]" border="0" alt="4162378815_1e761001a8[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162378815_1e761001a8%5B1%5D_thumb.jpg" width="353" height="266" />
          </a>
        </p>
        <p>
Red peeps coming in
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163146830_57fa5bb5f0%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4163146830_57fa5bb5f0[1]" border="0" alt="4163146830_57fa5bb5f0[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163146830_57fa5bb5f0%5B1%5D_thumb.jpg" width="358" height="270" />
          </a>
        </p>
        <p>
And there we have it…
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162402343_df22a59cbd%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4162402343_df22a59cbd[1]" border="0" alt="4162402343_df22a59cbd[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162402343_df22a59cbd%5B1%5D_thumb.jpg" width="361" height="272" />
          </a>
        </p>
        <p>
Don’t you just love it? :)
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163213904_72a4bbe4f4%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4163213904_72a4bbe4f4[1]" border="0" alt="4163213904_72a4bbe4f4[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163213904_72a4bbe4f4%5B1%5D_thumb.jpg" width="363" height="273" />
          </a>
        </p>
        <p>
And Scott is now a fan of TheGu also :) In the background: ASP.NET MVC 2!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162486231_8515b0b4a7%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4162486231_8515b0b4a7[1]" border="0" alt="4162486231_8515b0b4a7[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4162486231_8515b0b4a7%5B1%5D_thumb.jpg" width="363" height="273" />
          </a>
        </p>
        <p>
And my Visug colleague, Pieter, got a bit chilly of all this.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163241338_c7269246af%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4163241338_c7269246af[1]" border="0" alt="4163241338_c7269246af[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/ScottGuthrieinBelgium_41F/4163241338_c7269246af%5B1%5D_thumb.jpg" width="360" height="271" />
          </a>
        </p>
        <p>
Thanks Scott for this wonderful afternoon!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=484b1374-0768-47cf-a7b1-4e4a0c64e855" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 7th: Creating a kiosk application</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/06/Silverlight+Advent+Calendar+December+7th+Creating+A+Kiosk+Application.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,4c426360-8be7-49c9-a276-b0f2c050e59f.aspx</id>
    <published>2009-12-07T00:08:01.594+01:00</published>
    <updated>2009-12-07T00:09:55.172125+01: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>
December 7th already, this post marks the first week of my Silverlight Advent Calendar!
</p>
        <p>
In today’s post, I’ll be looking at how to create a simple kiosk application. A kiosk
application is typically something you see at a booth or a registration desk, filling
the entire screen and only allowing the user to perform a specific action. In this
specific example, I’m looking at how to create a user registration application which
could typically be used for a kiosk. 
</p>
        <p>
As said, the most specific requirement for this type of applications, is being full
screen. Silverlight 2 and 3 already supported full screen applications: making an
application full screen could easily be done using the following line of code:
</p>
        <div id="codeSnippetWrapper">
          <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">App.Current.Host.Content.IsFullScreen = <span style="COLOR: #0000ff">true</span>;</pre>
          <br />
        </div>
        <p>
        </p>
        <p>
This code will only execute following a user-initiated action, such as a click on
a Button. It’s thus not possible to load the application full screen by putting this
line in some loaded event of the control. 
</p>
        <p>
Seems all quite well, doesn’t it? Indeed,  but there was one disappointment in
all this: when in full screen, the user could not enter text, the text input was limited
to some keys such as the arrow keys. Every character key was ignored. This behavior
changed in Silverlight 4. In fact, I should say “can be changed” in Silverlight 4.
By default, it will still not accept character keys in full screen, but when creating
the application as OOB (Out Of Browser) application and giving it elevated permissions,
it will accept them perfectly.
</p>
        <p>
          <strong>Elevated permissions</strong>
        </p>
        <p>
Before we look at the application itself, let’s first look at elevated permissions.
In Silverlight 1, 2 and 3, code executed  always ran in the sandbox of the browser.
There was no way to get out of this sandbox. Silverlight 4 adds a new type of application,
namely a trusted Silverlight application, running with elevated permissions and allowing
actions that were not possible in the previous versions. This means that we now have
3 possible modes in Silverlight 4: in-browser, out-of-browser (but still in the sandbox)
and trusted (out-of-browser with elevated permissions). 
</p>
        <p>
Each application can be created to require elevated permissions to run. We can enable
this by in the Project Properties window, clicking on the Out-of-Browser settings
and then checking the following checkbox: 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember7thCrea_14966/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/SilverlightAdventCalendarDecember7thCrea_14966/clip_image002_thumb.jpg" width="459" height="101" />
          </a>
        </p>
        <p>
When the application is now installed, another dialog is displayed, warning the user
that this application will have more permissions than “normal” installed apps. This
dialog looks like the following screenshot. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember7thCrea_14966/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/SilverlightAdventCalendarDecember7thCrea_14966/image_thumb.png" width="244" height="171" />
          </a>
        </p>
        <p>
We’ll come across more features in the following days which require elevated permissions
such as COM interop and cross-domain service access. 
</p>
        <p>
          <strong>Back to the kiosk</strong>
        </p>
        <p>
OK, now that we know that for our application, we’ll need elevated permissions, let’s
look at some code and screenshots. The application is built as a navigation application.
The application starts (by setting the root page) to an admin screen. In this screen,
the admin can set the application to full screen. From then on, it is full screen
and cannot be changed by the user. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember7thCrea_14966/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/SilverlightAdventCalendarDecember7thCrea_14966/image_thumb_1.png" width="427" height="335" />
          </a>
        </p>
        <p>
When clicking on the button, the following code is executed: 
</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> FullScreenButton_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">    App.Current.Host.Content.IsFullScreen = <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-->
          </div>
        </div>
        <p>
The admin can then click the Start Wizard hyperlink, which will set the kiosk-registration
application to its waiting screen.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember7thCrea_14966/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/SilverlightAdventCalendarDecember7thCrea_14966/image_thumb_3.png" width="427" height="335" />
          </a>
        </p>
        <p>
In the following screen, the user can enter his/her details. In full-screen mode,
this would <strong>NOT</strong> have been possible if:
</p>
        <ul>
          <li>
we had used Silverlight 2 or Silverlight 3 
</li>
          <li>
we would not have set the application to require elevated permissions</li>
        </ul>
        <p>
Try for yourself disabling the elevated permissions requirement. If you run the application
in full-screen then (in OOB mode), all text input in the text fields is ignored.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember7thCrea_14966/image_12.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/SilverlightAdventCalendarDecember7thCrea_14966/image_thumb_5.png" width="367" height="231" />
          </a>
        </p>
        <p>
          <strong>How to quit the application </strong>
        </p>
        <p>
When putting a trusted application in full-screen, by default hitting the ESCAPE key
will not resize it back to its original position. Therefore, we can handle the keydown
event in the MainWindow.xaml for example, 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> UserControl_KeyDown(<span style="COLOR: #0000ff">object</span> sender,
KeyEventArgs 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.Key
== Key.Escape)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        App.Current.Host.Content.IsFullScreen = <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-->
          </div>
        </div>
The full code can be downloaded here: <a href="http://www.snowball.be/content/binary/KioskApplication.zip">KioskApplication.zip
(166.63 KB)</a><img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=4c426360-8be7-49c9-a276-b0f2c050e59f" /><br /><hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 6th: Toasts from Silverlight</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/06/Silverlight+Advent+Calendar+December+6th+Toasts+From+Silverlight.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,fcf4c978-ac57-412f-aa08-37b1cae291ca.aspx</id>
    <published>2009-12-06T10:31:27.780875+01:00</published>
    <updated>2009-12-06T10:31:27.780875+01:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today is some kind of special day here in Belgium, it’s Saint Nicolas (aka Sinterklaar),
comparable to Santa Claus. Special day or not, I’m ready for the sixth installment
in my Silverlight article series. In this article, I’ll be describing how you can
create toasts (aka notification windows) from Silverlight. We all know the notification
windows from Outlook, those little windows that pop open when you receive a new mail.
This is a new feature in Silverlight 4.
</p>
        <p>
To support these windows, in Silverlight 4, a new class was added to instantiate them,
namely the NotificationWindow. Notification windows are an out-of-browser feature
only (just like some other new Silverlight 4 features such as the WebBrowser control
which I covered earlier). To enable this behavior, go to the project properties of
the Silverlight project and check the “Enable appliction running out-of-browser” checkbox.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember6thToas_97CF/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/SilverlightAdventCalendarDecember6thToas_97CF/image_thumb_1.png" width="547" height="147" />
          </a>
        </p>
        <p>
Below is a screenshot of the sample code running.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember6thToas_97CF/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/SilverlightAdventCalendarDecember6thToas_97CF/image_thumb.png" width="244" height="180" />
          </a>
        </p>
        <p>
Creating the notication window is straightforward. The following code runs when the
“Try notification window” button is clicked in the 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> NotificationButton_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">if</span> (Application.Current.IsRunningOutOfBrowser)</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 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">        NotificationWindow notificationWindow = <span style="color: #0000ff">new</span> NotificationWindow();</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        notificationWindow.Width = 300;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        notificationWindow.Height = 80;</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">        notificationWindow.Content = <span style="color: #0000ff">new</span> TextBlock() </pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            { Text = <span style="color: #006080">"Test
notification window"</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">        notificationWindow.Show(10000);</pre>
            <!--CRLF-->
            <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 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">        MessageBox.Show(<span style="color: #006080">"You
should take the application offline first"</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>
As you can see, we first perform a check to see if the application is running out-of-browser.
Note that displaying a notification window does not need to be initiated from a user
interaction, it can also be displayed following an application event (for example
based on the Tick event of a Timer).
</p>
        <p>
The notification window we created with the above code is very basic, as shown in
the following screenshot.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember6thToas_97CF/image_6.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/SilverlightAdventCalendarDecember6thToas_97CF/image_thumb_2.png" width="307" height="102" />
          </a>
        </p>
        <p>
Creating a more complex (and better looking) window is probably going to be required.
And, the good news it’s quite easy to do. You can create a custom control or even
a user control and set that as the Content for the NotificationWindow instance. In
the code below, I added a third button and when clicked, a new, better looking window
will be displayed.
</p>
        <p>
The window itself is nothing more than a user control:
</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">="White"</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: #ff0000">Width</span>
              <span style="color: #0000ff">="350"</span>
              <span style="color: #ff0000">Height</span>
              <span style="color: #0000ff">="80"</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">="15"</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">="*"</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">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">Grid</span>
              <span style="color: #ff0000">Background</span>
              <span style="color: #0000ff">="DarkBlue"</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">Text</span>
              <span style="color: #0000ff">="Message"</span>
              <span style="color: #ff0000">FontWeight</span>
              <span style="color: #0000ff">="Bold"</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">Foreground</span>
              <span style="color: #0000ff">="Wheat"</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">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">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">Grid</span>
              <span style="color: #ff0000">Grid</span>.<span style="color: #ff0000">Row</span><span style="color: #0000ff">="1"</span><span style="color: #ff0000">Background</span><span style="color: #0000ff">="LightBlue"</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">Text</span>
              <span style="color: #0000ff">="You
have clicked a button!"</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: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; 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: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; 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>
To display this control, we can execute the following code:
</p>
        <div id="codeSnippetWrapper"> 
</div>
        <p>
And this is the result:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember6thToas_97CF/image_8.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/SilverlightAdventCalendarDecember6thToas_97CF/image_thumb_3.png" width="330" height="118" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=fcf4c978-ac57-412f-aa08-37b1cae291ca" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 5th: Implicit styling in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/04/Silverlight+Advent+Calendar+December+5th+Implicit+Styling+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,032c2785-a8a8-4e2a-aa54-59abb5d69b46.aspx</id>
    <published>2009-12-05T00:45:50.109375+01:00</published>
    <updated>2009-12-05T00:45:50.109375+01:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Styling in Silverlight is similar to styling in HTML with CSS. It helps you keep your
markup (HTML, XAML) code clean by putting all the properties into a separate file.
At runtime, both the markup and the styles defined in the external style sheet are
merged and give the look to the application as it was intended.
</p>
        <p>
Styling was already available in Silverlight, entirely similar to the styling engine
which can be found in Silverlight’s big brother, WPF. However, up until Silverlight
4, not all of the functions had been implemented. The most striking one was the default
or implicit styling. 
</p>
        <p>
Assume you are creating a Silverlight application and all controls of a specific type,
for example all TextBlocks throughout the application should have a specific font
size, font weight etc. In previous versions of Silverlight, because of the absence
of the default styling mechanism, we had to create a style and apply this style on
every instance of the TextBlock. There was no way to tell Silverlight that a particular
style was supposed to be the style that had to be applied on all controls of a certain
type.
</p>
        <p>
Implicit styling allows us to do exactly that. We can now define a style that does
not have a Key set in its declaration (and thus only has a TargetType defined). At
that point, we are saying to Silverlight: use this style for every instance of the
type specified in the TargetType which does not have a style set. While it’s a rather
small feature, it’s a real time-saver! 
</p>
        <p>
The following piece of XAML code actually creates a default style for the TextBlock
type and a named style called SectionHeaderStyle. 
</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">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">="FontSize"</span>
              <span style="color: #ff0000">Value</span>
              <span style="color: #0000ff">="14"</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">="Normal"</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">="FontFamily"</span>
              <span style="color: #ff0000">Value</span>
              <span style="color: #0000ff">="Verdana"</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">="FontStyle"</span>
              <span style="color: #ff0000">Value</span>
              <span style="color: #0000ff">="Normal"</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">Style</span>
              <span style="color: #ff0000">x:Key</span>
              <span style="color: #0000ff">="SectionHeaderStyle"</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">="FontSize"</span>
              <span style="color: #ff0000">Value</span>
              <span style="color: #0000ff">="20"</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;&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">="FontFamily"</span>
              <span style="color: #ff0000">Value</span>
              <span style="color: #0000ff">="Verdana"</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">="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: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; 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-->
          </div>
        </div>
        <p>
On the TextBlocks that should be using this style, we do not need to add a Style 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">
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">StackPanel</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">="SpecficStyleTextBlock"</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="I
do have a personal style"</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">Style</span>
              <span style="color: #0000ff">="{StaticResource
SectionHeaderStyle}"</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">="DefaultStyleTextBlock"</span>
              <span style="color: #ff0000">Text</span>
              <span style="color: #0000ff">="I
don't have a personal style"</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: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; 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">StackPanel</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
The result is the following:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember3rdImpl_14D27/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/SilverlightAdventCalendarDecember3rdImpl_14D27/image_thumb.png" width="343" height="68" />
          </a>
        </p>
        <p>
Note: this is a Silverlight 4-only feature!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=032c2785-a8a8-4e2a-aa54-59abb5d69b46" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 4th: Replacing converters with new data binding features</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/03/Silverlight+Advent+Calendar+December+4th+Replacing+Converters+With+New+Data+Binding+Features.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,25ca251c-0f32-4832-acee-d75d670eadea.aspx</id>
    <published>2009-12-04T00:02:03.422+01:00</published>
    <updated>2009-12-04T00:06:26.422125+01: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>
Here we are with the 4th article already in my Silverlight Advent Calendar series!
</p>
        <p>
When using data binding in Silverlight, we often have to include one or more converters.
A converter is a class that implements the IValueConverter interface. This class defines
2 methods, Convert and ConvertBack. Convert is applied when the data in the data binding
action flows from source object to target control. A common use for converters is
formatting a date value that comes from the database into a specific format or adding
a currency symbol to a double value. Below is a sample converter class:
</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> CurrencyConverter
: IValueConverter</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">#region</span> IValueConverter
Members</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">object</span> Convert(<span style="COLOR: #0000ff">object</span><span style="COLOR: #0000ff">value</span>,
Type targetType, <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">            System.Globalization.CultureInfo culture)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">double</span> amount
= <span style="COLOR: #0000ff">double</span>.Parse(<span style="COLOR: #0000ff">value</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">
              <span style="COLOR: #0000ff">if</span> (amount
&lt; 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: #006080">"-
"</span> + amount.ToString(<span style="COLOR: #006080">"c"</span>, culture);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">
              <span style="COLOR: #0000ff">return</span> amount.ToString(<span style="COLOR: #006080">"c"</span>,
culture);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">object</span> ConvertBack(<span style="COLOR: #0000ff">object</span><span style="COLOR: #0000ff">value</span>,
Type targetType, <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">            System.Globalization.CultureInfo culture)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">throw</span>
              <span style="COLOR: #0000ff">new</span> NotImplementedException();</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
        </p>
        <p>
Silverlight 4’s data binding engine has been extended with a few options that in some
cases can avoid forcing us to create a converter. More specifically, three new options
have been added: TargetNullValue, StringFormat and FallbackValue. 
</p>
        <p>
For these samples, we’ll use a class called Customer:
</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> Customer</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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
{ 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> LastName
{ 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> DateTime
BirthDate { 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> Email
{ 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>
I have instantiated this class and set it as DataContext for the entire UserControl:
</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">customer = <span style="COLOR: #0000ff">new</span> Customer()</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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: #006080">"Gill"</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">               LastName = <span style="COLOR: #006080">"Cleeren"</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">               BirthDay = <span style="COLOR: #0000ff">new</span> DateTime(1979,
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">               Email = <span style="COLOR: #006080">"gillcleeren@somewhere.com"</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">               CustomerAddress = <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"> </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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>.DataContext
= customer;</pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Let’s take a look at what these new features offer us. TargetNullValue can be used
in a data binding expression to specify what value should be used in case the binding
returns null. In the previous sample, there is no value specified for the CustomerAddress
property (it is null). If we want some replacement text, in this case “Unknown”, to
be placed instead, we can use TargetNullValue like so:
</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">TextBlock</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="AddressTextBlock"</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">="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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">Text</span>
              <span style="COLOR: #0000ff">="Address:"</span>
              <span style="COLOR: #ff0000">FontWeight</span>
              <span style="COLOR: #0000ff">="Bold"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">="AddressValueTextBlock"</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
CustomerAddress, TargetNullValue=Unknown}"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">TextBlock</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
StringFormat can be used to format the value, just as was shown with the Converter
earlier. For example, if we want the BirthDay to be formatted as a date in MM/dd/yyyy
format, we can do so using the following 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">&lt;</span>
              <span style="COLOR: #800000">TextBlock</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="BirthDateTextBlock"</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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">="Birthday:"</span><span style="COLOR: #ff0000">FontWeight</span><span style="COLOR: #0000ff">="Bold"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">="BirthDateValueTextBlock"</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
BirthDay, StringFormat=MM/dd/yyyy}"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">TextBlock</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Finally, the FallbackValue can be used to display a value when the data-bound property
on the source can not be located. In other words, this value will be displayed when
we make an error in that we are trying to bind to a non-existent property. This is
shown using the following code:
</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">
              <span style="COLOR: #0000ff">&lt;</span>
              <span style="COLOR: #800000">TextBlock</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="InfoTextBlock"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="5"</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">Grid</span>.<span style="COLOR: #ff0000">Column</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">Text</span><span style="COLOR: #0000ff">="Info:"</span><span style="COLOR: #ff0000">FontWeight</span><span style="COLOR: #0000ff">="Bold"</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: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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">="InfoValueTextBlock"</span>
              <span style="COLOR: #ff0000">Grid</span>.<span style="COLOR: #ff0000">Row</span><span style="COLOR: #0000ff">="5"</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">Text</span>
              <span style="COLOR: #0000ff">="{Binding
Info, FallbackValue=Nothing}"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">TextBlock</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
The final result is shown below:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember5thRepl_14EBF/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/SilverlightAdventCalendarDecember5thRepl_14EBF/image_thumb.png" width="374" height="206" />
          </a>
        </p>
        <p>
The complete code sample can be downloaded here: <a href="http://www.snowball.be/content/binary/DatabindingInSL4.zip">DatabindingInSL4.zip
(64.44 KB)</a></p>
        <p>
Note: these new data binding features are a Silverlight 4 feature only!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=25ca251c-0f32-4832-acee-d75d670eadea" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 3rd: The new Silverlight 4 WebBrowser control</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/02/Silverlight+Advent+Calendar+December+3rd+The+New+Silverlight+4+WebBrowser+Control.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c5692584-702f-4a73-aa17-0be59fdd33e8.aspx</id>
    <published>2009-12-03T00:46:46.265+01:00</published>
    <updated>2009-12-03T00:47:39.76525+01: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>
Silverlight is, as you probably know, a web technology. Basically, we have two choices
to add Silverlight to a page (be this page ASP.NET, HTML, PHP or what have you): 
</p>
        <ul>
          <li>
Screen-filling Silverlight application 
</li>
          <li>
Silverlight “islands”: small piece(s) of Silverlight embedded on a webpage</li>
        </ul>
        <p>
Silverlight 4 adds a new option for bringing together Silverlight and HTML by means
of the WebBrowser control. If you have done WinForms development, you may remember
a similar control in that area as well. It basically allows us to display HTML content
inside a Silverlight application. 
</p>
        <p>
For some scenarios, this is a very interesting addition to the platform. Imagine you
are building a Silverlight application that’s actually a migration of an ASP.NET application.
To cut costs, you must perform this migration in several parts. Instead of requiring
that all the functionality is converted to Silverlight in one go, you can opt to leave
some part in ASP.NET for the time being and still integrate it in the Silverlight
environment.
</p>
        <p>
As said, the control available for this, is the WebBrowser control.  The following
properties are the most important ones when working with the WebBrowser control:  
</p>
        <p>
· Source: gets or sets the URI that should be rendered in the WebBrowser control 
</p>
        <p>
· Navigate: specifies the URI that should be loaded in the control (works identical
to the Source property) 
</p>
        <p>
· NavigateToString: you can also display an on-the-fly generated string of HTML. This
can be done using this method. 
</p>
        <p>
The WebBrowser control only works when the Silverlight application is running out-of-browser.
If we try running it in-browser, we’ll see a rectangle saying that the HTML is disabled. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember4thThen_4F9/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/SilverlightAdventCalendarDecember4thThen_4F9/image_thumb.png" width="418" height="158" />
          </a>
        </p>
        <p>
If we’re running this sample out-of-browser and navigate to this very site (<a href="http://www.snowball.be">www.snowball.be</a>),
we’ll see the following: 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember4thThen_4F9/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/SilverlightAdventCalendarDecember4thThen_4F9/image_thumb_1.png" width="496" height="396" />
          </a>
        </p>
        <p>
Let’s now take a look at some code to create this. 
</p>
        <p>
The following is the declaration of the WebBrowser control itself: 
</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">WebBrowser</span>
              <span style="COLOR: #ff0000">x:Name</span>
              <span style="COLOR: #0000ff">="MainWebBrowser"</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">Width</span>
              <span style="COLOR: #0000ff">="800"</span>
              <span style="COLOR: #ff0000">Height</span>
              <span style="COLOR: #0000ff">="600"</span>
              <span style="COLOR: #0000ff">&gt;&lt;/</span>
              <span style="COLOR: #800000">WebBrowser</span>
              <span style="COLOR: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
        </p>
        <p>
        </p>
        <p>
In the code-behind, in the click event of the Go-Button at the top, we can send the
WebBrowser control to the requested page:
</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> AddressButton_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">if</span> (Application.Current.HasElevatedPermissions)</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">        MainWebBrowser.Navigate(<span style="COLOR: #0000ff">new</span> Uri(AddressTextBox.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">
              <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">
              <span style="COLOR: #0000ff">string</span> localIFrame
= </pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">"&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;IFRAME
width='100%' 
</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">                height='100%' src='" +
AddressTextBox.Text + <span style="COLOR: #006080">"' /&gt;&lt;/BODY&gt;&lt;/HTML&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">                MainWebBrowser.NavigateToString(localIFrame);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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>
As you can see, there are 2 implementations of the navigation. Why is that? When running
out-of-browser, the WebBrowser control works, BUT it can only navigate to pages within
the same domain as where the Silverlight application is hosted. To navigate to an
external page (that is on another domain), the Silverlight application needs elevated
permissions: it must be a Trusted Application. ( We’ll look at Trusted applications
in a future post). This is reflected by the first check.
</p>
        <p>
Now there’s a little workaround this limitation and that’s adding an IFRAME control
manually and hosting the external page in there. This is done in the else-block.
</p>
        <p>
Note: this is a Silverlight 4 feature which only works in Visual Studio 2010!
</p>
        <p>
The sample can be found here.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c5692584-702f-4a73-aa17-0be59fdd33e8" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 2nd: Drag and drop in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/12/01/Silverlight+Advent+Calendar+December+2nd+Drag+And+Drop+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a0121fc7-2628-4d16-a2f8-2d66d16ee242.aspx</id>
    <published>2009-12-02T00:42:41.938+01:00</published>
    <updated>2009-12-02T00:44:35.32875+01: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>
Question: how many times a day do you move things around in your PC environment? Placing
a file on your desktop, picking it up and moving or dragging it into a folder is something
we all know and do constantly. Also, personally, I often drag a file into a window
to trigger the application to do something with it. Often when I’m doing some quick
editing, I drag an image onto Photoshop’s desktop icon. Or when I want to send a mail
with an attachment, I drag the file into the window. The application gets a handle
to the file and knows what to do with it. 
</p>
        <p>
Silverlight applications could not be the target of a drag and drop operation. It
was possible to drag stuff around inside the Silverlight window, but it was not possible
to drag things into the window running Silverlight. Things changed in this area with
the arrival of Silverlight 4. At the time of writing, it’s only possible to drag in
one file or a list of files, however dragging in a directory is not supported. This
feature is available on Windows and Mac. 
</p>
        <p>
Any UIElement within Silverlight can now be the target of a drag operation. IThe UIElement
class now defines several events to support dragging, namely DragEnter, DragLeave,
DragOver and Drop. DragEnter, DragLeave and DragOver can be used for example to highlight
a control when content is being dragged over it. The Drop event fires when an object
is dropped onto the UIElement. Let’s take a look at a sample. 
</p>
        <p>
Imagine we are building an application in which the user can drag and drop images
on a canvas. The way the Canvas needs to be declared is as follows: 
</p>
        <div id="codeSnippetWrapper">
          <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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">
            <span style="COLOR: #0000ff">&lt;</span>
            <span style="COLOR: #800000">Canvas</span>
            <span style="COLOR: #ff0000">x:Name</span>
            <span style="COLOR: #0000ff">="DropCanvas"</span>
            <span style="COLOR: #ff0000">AllowDrop</span>
            <span style="COLOR: #0000ff">="True"</span>
            <span style="COLOR: #ff0000">Drop</span>
            <span style="COLOR: #0000ff">="DropCanvas_Drop"</span>
            <span style="COLOR: #0000ff">&gt;</span>
          </pre>
        </div>
        <p>
In code-behind, we should handle the Drop event to react to a file being dropped on
the UIElement. 
</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> DropCanvas_Drop(<span style="COLOR: #0000ff">object</span> sender,
DragEventArgs 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">    IDataObject dataObject = e.Data;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">    Point dropPoint = e.GetPosition(DropCanvas);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; 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> (dataObject.GetDataPresent(DataFormats.FileDrop))</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">        FileInfo[] files = (FileInfo[])dataObject.GetData(DataFormats.FileDrop);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (files.Length
&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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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> (files[0].Extension
== <span style="COLOR: #006080">".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">            {</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, 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">//only
take file 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: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                System.Windows.Media.Imaging.BitmapImage 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">
              <span style="COLOR: #0000ff">new</span> System.Windows.Media.Imaging.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">                bitmapImage.SetSource(files[0].OpenRead());</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: '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 newImage = <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">                newImage.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">                newImage.Width = 200;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                newImage.Height = 200;</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">                newImage.SetValue(Canvas.TopProperty, dropPoint.Y);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px">                newImage.SetValue(Canvas.LeftProperty, dropPoint.X);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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">                newImage.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">                DropCanvas.Children.Add(newImage);</pre>
            <!--CRLF-->
            <pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 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-->
          </div>
        </div>
        <p>
This event defines a DragEventArgs parameter, which defines a Data property, of type
IDataObject. We can access the file or files using the GetData method. This method
returns an array of FileInfo objects and these files can then be read out. The code
for this is shown below. 
</p>
        <p>
We check if the file is an image (check for the file extension) and if it is, we create
a new BitmapImage, passing in the dropped file. After that, we create a new Image
control and set its source to the BitmapImage instance. 
</p>
        <p>
Note: this is a Silverlight 4 feature and the sample only works with Visual Studio
2010! 
</p>
        <p>
The complete code can be downloaded here: <a href="http://www.snowball.be/content/binary/DragAndDrop.zip">DragAndDrop.zip
(29.78 KB)</a></p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a0121fc7-2628-4d16-a2f8-2d66d16ee242" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar: December 1st: Text trimming made easy in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/30/Silverlight+Advent+Calendar+December+1st+Text+Trimming+Made+Easy+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,2d198025-c23c-4f46-b6fb-cc91965b1d6a.aspx</id>
    <published>2009-12-01T00:02:45.828+01:00</published>
    <updated>2009-12-01T00:03:24.156875+01: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">
        <div id="codeSnippetWrapper">Here’s the first article of the Silverlight Advent Calendar!
We are starting quite easy…
</div>
        <div> 
</div>
        <div>While browsing through the new properties and types available in Silverlight,
I came across this nice little new property on the TextBlock called TextTrimming.
As the word says, it helps you with showing an ellipsis when the text is too wide
for the TextBlock you want it to appear in.
</div>
        <p>
Let’s take a look at this property in action. Suppose we have a TextBlock that has
a specific width set to it. On this TextBlock, we specify the TextTrimming property
to have the value WordEllipsis.
</p>
        <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: #606060" id="lnum1"> 1:</span>
            <span style="COLOR: #0000ff">&lt;</span>
            <span style="COLOR: #800000">TextBlock</span>
            <span style="COLOR: #ff0000">Text</span>
            <span style="COLOR: #0000ff">="Hello,
my name is Gill Cleeren"</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: #606060" id="lnum2"> 2:</span>
            <span style="COLOR: #ff0000">Width</span>
            <span style="COLOR: #0000ff">="150"</span>
            <span style="COLOR: #ff0000">TextTrimming</span>
            <span style="COLOR: #0000ff">="WordEllipsis"</span>
            <span style="COLOR: #0000ff">&gt;&lt;/</span>
            <span style="COLOR: #800000">TextBlock</span>
            <span style="COLOR: #0000ff">&gt;</span>
          </pre>
          <!--CRLF-->
        </div>
        <p>
        </p>
        <p>
Without the TextTrimming property, the result is the following. As you can see, the
text is cut of where the TextBlock ends.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember1stText_14AFB/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/SilverlightAdventCalendarDecember1stText_14AFB/image_thumb_1.png" width="244" height="108" />
          </a>
        </p>
        <p>
However, with TextTrimming enabled, Silverlight calculates where it should be placing
the ellipsis, making the result look much more polished.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarDecember1stText_14AFB/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/SilverlightAdventCalendarDecember1stText_14AFB/image_thumb.png" width="235" height="118" />
          </a>
        </p>
        <p>
Note that is a Silverlight 4 only feature, which only works with Visual Studio 2010!
</p>
        <p>
        </p>
        <p>
Tomorrow, we’ll be looking at… Oh can’t say, that has to be a surprise until tomorrow!
You can’t go peeking in that advent calendar!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=2d198025-c23c-4f46-b6fb-cc91965b1d6a" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight Advent Calendar coming up!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/30/Silverlight+Advent+Calendar+Coming+Up.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,c2d4977d-3141-4f66-97c1-d861d5014fe2.aspx</id>
    <published>2009-11-30T23:18:21.406+01:00</published>
    <updated>2009-11-30T23:21:20.312375+01: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" />
    <category term="Silverlight Advent Calendar" label="Silverlight Advent Calendar" scheme="http://www.snowball.be/CategoryView,category,SilverlightAdventCalendar.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
December is a month of festivities, presents and great food. With Christmas just around
the corner, the year has been flying by even faster than the previous one.
</p>
        <p>
To go out with a bang (or should I have said bing…), I have decided to come up with
something special called “<strong>the Silverlight Advent Calendar</strong>”. As probably,
many of you don’t know what an advent calendar is as it is something only known in
some cultures, let’s start with a little explanation I found on <a href="http://en.wikipedia.org/wiki/Advent_calendar" target="_blank">Wikipedia</a>:
</p>
        <p>
          <em>An Advent calendar is a special calendar which is used to count or celebrate the
days of Advent in anticipation of Christmas. Some calendars are strictly religious,
whereas others are secular in content. </em>
        </p>
        <p>
          <em>Today, most advent calendars are made for children. Many take the form of a large
rectangular card with many "windows", one of which is opened every day during Advent.
In less elaborate calendars, each window opens to reveal an image, a poem, or part
of a story such as the Nativity story itself. More elaborate Advent calendars have
a small gift concealed in each window, such as a toy or a chocolate item.</em>
        </p>
        <p>
Here are some examples: 
</p>
        <p>
          <em>
          </em>
        </p>
        <p>
          <em>
            <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="advent-calendar" border="0" alt="advent-calendar" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarcomingup_14A69/adventcalendar.jpg" width="238" height="281" />
          </em>
        </p>
        <p align="center">
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarcomingup_14A69/2007-11-26-advent_2.gif">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="2007-11-26-advent" border="0" alt="2007-11-26-advent" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SilverlightAdventCalendarcomingup_14A69/2007-11-26-advent_thumb.gif" width="244" height="244" />
          </a>
        </p>
        <p>
However, in my calendar, there’s no chocolate for every day you open it! I have something
much better… Each day, starting <strong>December 1st</strong>, I will be posting a
Silverlight article here on <a href="http://www.snowball.be">www.snowball.be</a>.
That’s right, a free article on Silverlight for every day you stop by! You don’t even
have to open a little door or something to get a free gift! 
</p>
        <p>
Christmas must be early this year! 
</p>
        <p>
        </p>
        <p>
        </p>
        <p>
Disclaimer: I HOPE to be able to post each day, as December is a very busy month for
me…
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=c2d4977d-3141-4f66-97c1-d861d5014fe2" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Christmas wallpapers</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/29/Christmas+Wallpapers.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,e25f4ecd-a12c-456d-88ff-8b5bb302640b.aspx</id>
    <published>2009-11-30T00:48:45.672+01:00</published>
    <updated>2009-12-02T00:48:45.6725+01:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm reposting this as many people have requested to see these again :)
</p>
        <p>
          <br />
 
</p>
        <p>
          <table border="0" cellspacing="0" cellpadding="4" width="100%">
            <tbody>
              <tr>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/1.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(1).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/3.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(2).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/4.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(3).jpg" />
                    </a>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/5.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(4).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/6.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(5).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/7.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(6).jpg" />
                    </a>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/8.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(7).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/10.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(8).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/11.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(9).jpg" />
                    </a>
                  </p>
                </td>
              </tr>
              <tr>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/12.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(10).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/13.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(11).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/14.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(14).jpg" />
                    </a>
                  </p>
                  <a href="http://www.codeflakes.net/data/christmas2007/12.jpg" target="_blank">
                  </a>
                </td>
              </tr>
              <tr>
                <td>
                  <p align="center">
                    <a href="http://www.codeflakes.net/data/christmas2007/2.jpg" target="_blank">
                      <img border="0" src="http://www.snowball.be/content/binary/www.snowball.be%20-%20Christmas%20Background%20(13).jpg" />
                    </a>
                  </p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.timi.be/gill/www.snowball.be%20-%20Christmas%20Background%20(14).jpg" target="_blank">
                    </a> 
</p>
                </td>
                <td>
                  <p align="center">
                    <a href="http://www.timi.be/gill/www.snowball.be%20-%20Christmas%20Background.jpg" target="_blank">
                    </a>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
        </p>
        <p>
 
</p>
        <table border="0" cellspacing="0" cellpadding="0" width="506">
          <tbody>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="Ponderosa Starburst, Fremont National Forest, Oregon " href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0001.jpg">
                  <img border="0" hspace="0" alt="Ponderosa Starburst, Fremont National Forest, Oregon " src="http://www.codeflakes.net/data/christmas2007new/thumb/0001.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="Change of Season, Sommer-Linde " href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0002.jpg">
                  <img border="0" hspace="0" alt="Change of Season, Sommer-Linde " src="http://www.codeflakes.net/data/christmas2007new/thumb/0002.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="Frosty's Cousin " href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0003.jpg">
                  <img border="0" hspace="0" alt="Frosty's Cousin " src="http://www.codeflakes.net/data/christmas2007new/thumb/0003.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0004.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0004.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0005.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0005.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0006.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0006.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0007.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0007.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0008.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0008.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0009.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0009.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0010.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0010.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0011.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0011.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0012.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0012.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0013.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0013.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0014.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0014.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0015.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0015.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0016.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0016.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0017.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0017.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0018.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0018.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0019.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0019.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/http://www.codeflakes.net/data/christmas2007new/0020.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0020.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0021.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0021.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0022.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0022.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0023.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0023.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0024.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0024.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0025.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0025.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0026.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0026.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0027.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0027.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0028.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0028.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0029.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0029.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0030.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0030.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0031.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0031.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0032.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0032.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0033.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0033.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0034.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0034.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0035.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0035.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0036.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0036.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0037.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0037.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0038.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0038.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0039.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0039.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0040.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0040.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0041.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0041.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0042.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0042.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0043.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0043.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0044.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0044.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0045.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0045.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0046.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0046.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0047.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0047.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0048.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0048.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0049.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0049.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0050.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0050.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0051.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0051.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0052.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0052.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0053.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0053.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0054.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0054.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0055.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0055.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0056.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0056.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0057.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0057.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0058.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0058.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0059.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0059.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0060.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0060.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0061.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0061.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0062.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0062.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0063.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0063.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0064.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0064.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0065.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0065.jpg" width="100" height="80" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0066.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0066.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0067.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0067.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0068.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0068.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0069.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0069.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0070.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0070.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0071.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0071.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0072.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0072.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0073.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0073.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0074.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0074.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0075.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0075.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0076.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0076.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0077.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0077.JPG" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0078.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0078.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0079.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0079.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0080.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0080.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0081.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0081.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0082.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0082.jpg" width="100" height="78" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0083.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0083.jpg" width="100" height="66" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="                                                                                                                           " href="http://www.codeflakes.net/data/christmas2007new/0084.jpg">
                  <img border="0" hspace="0" alt="                                                                                                                           " src="http://www.codeflakes.net/data/christmas2007new/thumb/0084.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0085.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0085.jpg" width="100" height="75" />
                </a>
              </td>
            </tr>
            <tr>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0086.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0086.jpg" width="100" height="75" />
                </a>
              </td>
              <td class="thumbnail" valign="top" align="middle">
                <a title="" href="http://www.codeflakes.net/data/christmas2007new/0087.jpg">
                  <img border="0" hspace="0" alt="" src="http://www.codeflakes.net/data/christmas2007new/thumb/0087.jpg" width="100" height="75" />
                </a>
              </td>
              <td>
 </td>
              <td>
 </td>
              <td>
 </td>
            </tr>
            <p>
            </p>
            <p>
              <a href="http://www.codeflakes.net/data/christmas2007/9.jpg" target="_blank">
                <img border="0" src="http://www.snowball.be/content/binary/deskdec2006thumb.jpg" />
              </a>
            </p>
            <p>
            </p>
            <p>
 
</p>
            <p>
            </p>
          </tbody>
        </table>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=e25f4ecd-a12c-456d-88ff-8b5bb302640b" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Exploring Silverlight 4: Printing in Silverlight 4</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/18/Exploring+Silverlight+4+Printing+In+Silverlight+4.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,64a7665f-588d-46ae-b70e-3ac43fae7199.aspx</id>
    <published>2009-11-19T00:38:20.687+01:00</published>
    <updated>2009-11-19T00:40:01.719125+01:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="PDC" label="PDC" scheme="http://www.snowball.be/CategoryView,category,PDC.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>
Remember my post on printing in Silverlight 3, using the WriteableBitmap. This class
allowed to export UI elements to an image and print from there. While it was working,
it wasn’t a great way of doing things.<br /><br />
Silverlight 4 brings real printing to the table. All printing is done using the PrintDocument
class. In it’s PrintPage event, we can specify what content needs to be printed. This
can be the entire screen, a control that’s part of the visual tree or even a control
that’s generated on the fly. Finally, we use the Print() method to perform the actual
printing of the document.
</p>
        <p>
Let’s take a look at some really easy code to do all this.
</p>
        <p>
The UI code is kept simple intentionally:
</p>
        <p>
        </p>
        <div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:3b8e5dfd-f9b7-4865-84d9-b10b858dda30" class="wlWriterEditableSmartContent">
          <pre style="BACKGROUND-COLOR: #ffffff; WORD-WRAP: break-word; WHITE-SPACE: pre-wrap; OVERFLOW: auto">
            <span style="COLOR: #000000">
            </span>
            <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">="White"</span>
            <span style="COLOR: #0000ff">&gt;</span>
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">&lt;</span>
            <span style="COLOR: #800000">TextBlock </span>
            <span style="COLOR: #ff0000">Height</span>
            <span style="COLOR: #0000ff">="25"</span>
            <span style="COLOR: #ff0000"> HorizontalAlignment</span>
            <span style="COLOR: #0000ff">="Left"</span>
            <span style="COLOR: #ff0000"> Margin</span>
            <span style="COLOR: #0000ff">="62,92,0,0"</span>
            <span style="COLOR: #ff0000"> Name</span>
            <span style="COLOR: #0000ff">="textBlock1"</span>
            <span style="COLOR: #ff0000"> Text</span>
            <span style="COLOR: #0000ff">="I
want to print!"</span>
            <span style="COLOR: #ff0000"> VerticalAlignment</span>
            <span style="COLOR: #0000ff">="Top"</span>
            <span style="COLOR: #ff0000"> Width</span>
            <span style="COLOR: #0000ff">="194"</span>
            <span style="COLOR: #ff0000"> FontWeight</span>
            <span style="COLOR: #0000ff">="Bold"</span>
            <span style="COLOR: #ff0000"> FontSize</span>
            <span style="COLOR: #0000ff">="15"</span>
            <span style="COLOR: #ff0000">
            </span>
            <span style="COLOR: #0000ff">/&gt;</span>
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">&lt;</span>
            <span style="COLOR: #800000">Button </span>
            <span style="COLOR: #ff0000">Content</span>
            <span style="COLOR: #0000ff">="Print"</span>
            <span style="COLOR: #ff0000"> Height</span>
            <span style="COLOR: #0000ff">="55"</span>
            <span style="COLOR: #ff0000"> HorizontalAlignment</span>
            <span style="COLOR: #0000ff">="Left"</span>
            <span style="COLOR: #ff0000"> Margin</span>
            <span style="COLOR: #0000ff">="62,213,0,0"</span>
            <span style="COLOR: #ff0000"> Name</span>
            <span style="COLOR: #0000ff">="PrintButton"</span>
            <span style="COLOR: #ff0000"> VerticalAlignment</span>
            <span style="COLOR: #0000ff">="Top"</span>
            <span style="COLOR: #ff0000"> Width</span>
            <span style="COLOR: #0000ff">="216"</span>
            <span style="COLOR: #ff0000"> Click</span>
            <span style="COLOR: #0000ff">="PrintButton_Click"</span>
            <span style="COLOR: #ff0000">
            </span>
            <span style="COLOR: #0000ff">/&gt;</span>
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">&lt;/</span>
            <span style="COLOR: #800000">Grid</span>
            <span style="COLOR: #0000ff">&gt;</span>
          </pre>
          <!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com -->
        </div>
        <p>
        </p>
        <p>
This looks like the following:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ExploringSilverlight4PrintinginSilverlig_8EC/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/ExploringSilverlight4PrintinginSilverlig_8EC/image_thumb_1.png" width="244" height="190" />
          </a>
        </p>
        <p>
In the click event of the button, we write some printing code.
</p>
        <p>
 
</p>
        <p>
        </p>
        <p>
        </p>
        <div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:c8e20ebc-9aad-4418-a824-3e5f7dd0cd3c" class="wlWriterEditableSmartContent">
          <pre style="BACKGROUND-COLOR: #ffffff; WORD-WRAP: break-word; WHITE-SPACE: pre-wrap; OVERFLOW: auto">
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">private</span>
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">void</span>
            <span style="COLOR: #000000"> PrintButton_Click(</span>
            <span style="COLOR: #0000ff">object</span>
            <span style="COLOR: #000000"> sender,
RoutedEventArgs e) { PrintDocument document </span>
            <span style="COLOR: #000000">=</span>
            <span style="COLOR: #000000">
            </span>
            <span style="COLOR: #0000ff">new</span>
            <span style="COLOR: #000000"> PrintDocument();
document.PrintPage </span>
            <span style="COLOR: #000000">+=</span>
            <span style="COLOR: #000000"> (s,
args) </span>
            <span style="COLOR: #000000">=&gt;</span>
            <span style="COLOR: #000000"> {
args.PageVisual </span>
            <span style="COLOR: #000000">=</span>
            <span style="COLOR: #000000"> LayoutRoot;
}; document.Print(); }</span>
          </pre>
          <!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com -->
        </div>
        <p>
This will now show a print preferences dialog, in which we can select a printer. The
result in this case is the entire UI being printed, because LayoutRoot was specified.
</p>
        <p>
We can also hook into the beginning and ending of the printing process using the StartPrint
and EndPrint event. These can be used to execute some code at the start or ending
of the printing process.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=64a7665f-588d-46ae-b70e-3ac43fae7199" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Silverlight 4 is here!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/18/Silverlight+4+Is+Here.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,00c9d856-d278-49bd-a9a3-dfddc4a41286.aspx</id>
    <published>2009-11-18T19:30:30.328375+01:00</published>
    <updated>2009-11-18T19:30:30.328375+01: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>
Today at the PDC09, Microsoft announced Silverlight 4, the 4th version of the RIA
platform.
</p>
        <p>
You can get the bits here:
</p>
        <li>
          <a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">Visual Studio 2010
Beta 2</a> or <a href="http://go.microsoft.com/fwlink/?LinkID=167874">Visual Web Developer
Express 2010 Beta 2</a> (pick one) 
</li>
        <li>
          <a href="http://go.microsoft.com/fwlink/?LinkID=177508">Silverlight Tools for Visual
Studio 2010</a>
        </li>
        <li>
          <a href="http://go.microsoft.com/fwlink/?LinkId=169446">Expression Blend for .NET
4 Preview</a> – for authoring Silverlight 4 and WPF 4 applications 
</li>
        <li>
          <a href="http://go.microsoft.com/fwlink/?LinkId=169231">WCF RIA Services</a> (formerly
.NET RIA Services) (NOTE: This is actually included in the SL Tools for Silverlight
4) 
</li>
        <li>
          <a href="http://go.microsoft.com/fwlink/?LinkID=167824">Silverlight 4 SDK CHM</a> (offline
documentation) – optionally <a href="http://go.microsoft.com/fwlink/?LinkID=111305">online
here</a> as well 
</li>
        <li>
Updated <a href="http://silverlight.codeplex.com">Silverlight Toolkit</a> for Silverlight
4 
</li>
        <li>
Developer runtimes: <a href="http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.exe">Windows</a> and <a href="http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.dmg">Mac</a> platforms 
</li>
        <li>
          <a href="http://go.microsoft.com/fwlink/?LinkID=169408">Silverlight 4 SDK only</a> –
not needed if you install the tools above 
</li>
        <li>
          <a href="http://smf.codeplex.com">Silverlight Media Framework</a> – a new, Open Source
media player framework for you to use.</li>
        <p>
(This list was shamelessly copied from <a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx?utm_source=Twitter-timheuer" target="_blank">Tim
Heuer’s blog post on Silverlight 4</a>)
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=00c9d856-d278-49bd-a9a3-dfddc4a41286" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>TechEd 2009: the report</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/15/TechEd+2009+The+Report.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,8bfec154-5d1d-4b6b-a9e5-4322d9cbe052.aspx</id>
    <published>2009-11-16T00:56:16.733+01:00</published>
    <updated>2009-11-16T01:03:37.2805+01:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.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>
After a week of way too many bratwurst (which I didn’t eat for the record), I’m home
again, from a TechEd in which quite a lot happened. Here’s my view on things.
</p>
        <p>
          <strong>Berlin, aber ja (yes, that’s about as far as my German goes)</strong>
        </p>
        <p>
For the first time, TechEd Europe took place in Berlin. When some time ago, I saw
the date that Microsoft planned to do its biggest conference on the European continent,
I was a bit worried. The conference was to start on the day of the celebrations of
the fall of the Berlin wall, now exactly 20 years ago. Because I planned on going
by car to the event, I feared quite some traffic problems. However, this turned out
to be a great choice. Not only did we attend the technical event, we were able to
attend a once-in-a-lifetime evening, witnessing the fall of the 1000 domino blocks,
representing the Berlin wall. Despite the rain, it was nice to see this.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEd2009thereport_D2A/4106997798_f226f96e44%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4106997798_f226f96e44[1]" border="0" alt="4106997798_f226f96e44[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEd2009thereport_D2A/4106997798_f226f96e44%5B1%5D_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
The city itself is huge and public transport is great. You can get anywhere within
minutes. It has a safe feeling as well, we were walking around quite late and it all
seemed quite OK.
</p>
        <p>
          <strong>Technical content</strong>
        </p>
        <p>
For the first time (as far as I know that is), Microsoft decided to make TechEd a
one-week event. Previous editions were split: one week was for devs, the second week
for IT Pros (or vice-versa depending on the year). While this new formula has its
advantages (like in: you can now take a peek over the hedge if you know what I mean),
it also has its disadvantages in my opinion. In some time slots, I personally felt
there were not enough dev-oriented sessions. At TechEd Barcelona 2007, I had to choose
between a good session, another good session and often another good session. Being
at the event as a pure developer, I missed that this year in some of the time slots
sadly. The good news is that some of the sessions were really good though. My
top sessions were Jeff Prosise’s Secrets in Silverlight and Stephen Forte’s Agile
Estimation.
</p>
        <p>
I personally do hope for a split event again next year, although I doubt it. With
a one-week event, the event is probably easier to organize and financially more interesting.
In unsure times like these, this is probably a heavy-weighing factor on the decision
making, which is understandable.
</p>
        <p>
          <strong>Speaker Idol</strong>
        </p>
        <p>
As announced, I took part in Speaker Idol this year. I won the first heat on Monday,
which got me a Flip HD camera :) . On Thursday, I didn’t win in the finals, although
I got a ticket for free for next year’s event! No pics yet, but I expect them to arrive
soon.
</p>
        <p>
          <strong>A bad Coke bottle</strong>
        </p>
        <p>
Right after the Speaker Idol finals on Thursday, I got injured. Opening a bottle of
Coke (only glass bottles at the event… why??), it broke in my hand. Result: 
a deep cut in a finger on my right hand and had to go to first aid. The bottle was
probably broken already and upon putting force on it to open it, it broke further.
Luckily, the doctors decided it did not need stitching.
</p>
        <p>
Typing is still quite difficult with so much band-aid on my finger, I keep hitting
too many keys at the same time.
</p>
        <p>
          <strong>Ask The Experts</strong>
        </p>
        <p>
I was also at the Silverlight booth for the Ask The Experts program. While working
there, I spent some time with Tim Heuer, Shawn Wildermuth, Emil Stoychev and others.
It was really nice to finally meet all of them!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEd2009thereport_D2A/4106282951_26829de304%5B1%5D_2.jpg">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="4106282951_26829de304[1]" border="0" alt="4106282951_26829de304[1]" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEd2009thereport_D2A/4106282951_26829de304%5B1%5D_thumb.jpg" width="244" height="184" />
          </a>
        </p>
        <p>
          <strong>A tech talk or two?</strong>
        </p>
        <p align="left">
While at the event, I did 2 TechEd Online TechTalks. The first one, in which I was
interviewed by my colleague Bart Wullems on building real world applications with
Silverlight, is online already at <a title="http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4" href="http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4">http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4</a> .
The second one on multi-touch in Silverlight apps will be online soon.
</p>
        <p>
          <strong>Pictures?</strong>
        </p>
        <p align="left">
Of course! Here are all the photos I made while at the event: <a title="http://www.flickr.com/photos/gillcleeren/sets/72157622685362577/" href="http://www.flickr.com/photos/gillcleeren/sets/72157622685362577/">http://www.flickr.com/photos/gillcleeren/sets/72157622685362577/</a> 
</p>
        <p>
        </p>
        <p>
See you in 2010 again, Berlin!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=8bfec154-5d1d-4b6b-a9e5-4322d9cbe052" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>SQL Server Day coming up, register now if you want to be there!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/15/SQL+Server+Day+Coming+Up+Register+Now+If+You+Want+To+Be+There.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,15491693-5351-4f37-97ce-3fd8d943a04d.aspx</id>
    <published>2009-11-15T23:38:32.109375+01:00</published>
    <updated>2009-11-15T23:38:32.109375+01:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In a few weeks, SQL Server User Group, aka SQLUG, will hold their second installment
of SQL Server Day. Registration is still possible. They just added a complete developer
track, so there’s something for everybody!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SQLServerDaycomingupregisternowifyouwant_14C74/Banner1_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Banner1" border="0" alt="Banner1" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SQLServerDaycomingupregisternowifyouwant_14C74/Banner1_thumb.png" width="184" height="155" />
          </a>
          <br />
          <br />
I’ll be there, delivering a session together with my colleague Kurt Claeys. This is
what our session will be about:
</p>
        <p>
          <strong>Looking beyond the database: How new .NET development technologies could change
the live of the SQL/DBA guy/girl</strong>
          <br />
          <em>The release of the new cloud based development platform Azure, the adoption of
object/relational mapping with ADO.NET Entity Framework/LINQ and the need to have
a restful approach to access dynamic data on a global scale is changing the way developers
look at SQL server, its relational constraints and T/SQL as query and DML language.
The tools and platforms such as WPF and Silverlight allow developers to build data-driven
applications much faster with writing less code.<br />
In this demo-driven session, Kurt Claeys and Gill Cleeren will explain what lives
beyond the data in the database, building a data-intensive application with the newest
platforms and tools, all in one hour!</em>
        </p>
        <p>
Below you can find all the info you need! 
</p>
        <p>
The <b>Belgian SQL Server User Group</b> (<a href="http://sqlug.be/">SQLUG.BE</a> vzw)
and <b>Microsoft</b> would like to invite you to the 2<sup>nd</sup> annual Belgian <b>SQL
Server Day</b>. With a strong set of sessions and speakers, the opportunity to connect
with over 250 of your peers and the first sneak preview of SQL Server 2008 R2 we’re
confident you’ll enjoy <b><u><a href="http://sqlserverday.be/">SQL Server Day 2009</a></u></b>. 
</p>
        <p>
We’ll kick off the day with an opening Keynote by Microsoft.<b></b>Together with
you, the Microsoft team will take a look at the power of the SQL Server Platform today
and how it will evolve with SQL Server 2008 R2 and SQL Azure. Expect a powerful session
filled with lots of demos that walk the talk. 
</p>
        <p>
We are very happy to announce that <b>Chris Webb</b> will fly in to cover one of the
technical sessions as well as the closing keynote, where he will point out how Microsoft
will achieve new breakthroughs in Self-Service Business Intelligence (BI) with PowerPivot
(aka. Gemini). 
</p>
        <p>
          <b>SQL Server Day 2009</b> also brings <b>you 8 technical sessions</b>, tailored to
your needs as a SQL Server and Microsoft Business Intelligence professional. A taste
of what to expect : 
</p>
        <p>
· Designing effective aggregations in Analysis Services 2008 
</p>
        <p>
· New features in Report Builder 3.0 
</p>
        <p>
· Policy Based Management 
</p>
        <p>
· Managing Data Movement 
</p>
        <p>
· Changes in SQL Server 2008 R2 
</p>
        <p>
· Effective ETL with Integration Services 
</p>
        <p>
· … and much <a href="http://sqlserverday.be/agenda">more</a></p>
        <p>
As always, all sessions are presented by recognized SQL Server specialists and SQL
Server MVPs. 
</p>
        <p>
          <a href="http://sqlserverday.be/register">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SQLServerDaycomingupregisternowifyouwant_14C74/clip_image001_cce103b9-9c9a-4b21-ae91-f20c2133777e.jpg" width="111" height="34" />
          </a>
        </p>
        <p>
          <a href="http://sqlserverday.be/register">Register now</a> to connect to other members
of the SQL Server Community, get answers to your questions and harness the energy
of SQL Server 2008 R2. 
</p>
        <p>
          <b>SQL Server Day 2009</b> will take place on <b>Thursday December 3<sup>rd</sup>,
2009 in Utopolis Mechelen</b>. 
</p>
        <p>
Full details for the event and registration can be found on <a href="http://www.sqlserverday.be/">www.sqlserverday.be</a>. 
</p>
        <p>
Looking forward to see you on <b>December 3<sup>rd</sup></b>, 
</p>
        <p>
          <b>The SQL Server Day Team.</b>
          <b>
          </b>
        </p>
        <p>
          <b>
          </b>
          <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/SQLServerDaycomingupregisternowifyouwant_14C74/clip_image002_3.gif" width="567" height="70" />
          <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=15491693-5351-4f37-97ce-3fd8d943a04d" />
          <br />
          <hr />
Snowball.be - The blog of Gill Cleeren 
</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>Breaking news: Scott Guthrie is visiting&amp;hellip; again!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/15/Breaking+News+Scott+Guthrie+Is+Visitinghellip+Again.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,44020eaf-432e-41e8-b4fb-d799db1a9c6c.aspx</id>
    <published>2009-11-15T23:25:17.09375+01:00</published>
    <updated>2009-11-15T23:25:17.09375+01:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.aspx" />
    <category term="Microsoft" label="Microsoft" scheme="http://www.snowball.be/CategoryView,category,Microsoft.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>
2009 has to be the year in which most “Microsoft VIPs” have been in Belgium! We already
had Brad Abrams, Juval Löwy, Dino Esposito and many more. You thought that was it
for this year? So was I…
</p>
        <p>
Until last week, Katrien De Graeve told me and Pieter (my Visug-colleague) she had
some news for us… MSDN and Visug will join forces for a <strong><a href="http://weblogs.asp.net/scottgu/" target="_blank">Scott
Guthrie</a></strong> event. Yes, "ScottGu” aka “TheGu” is coming to Belgium on December
4th. Erase any other appointments, meetings, vacations you have planned on that day
(afternoon only), as Scott will give presentations and probably a Q&amp;A session
as well.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/BreakingnewsScottGuthrieisvisitingagain_14959/scott-guthrie_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="scott-guthrie" border="0" alt="scott-guthrie" src="http://www.snowball.be/content/binary/WindowsLiveWriter/BreakingnewsScottGuthrieisvisitingagain_14959/scott-guthrie_thumb.jpg" width="235" height="351" />
          </a>
        </p>
        <p>
Location and exact content will  be posted very soon-ish, we know it’s very near,
but I expect to that we will have everything set up this week. The event will be free
in any case, thanks to Microsoft.
</p>
        <p>
For now, start thinking of questions you may have, you will soon be able to start
sending those in. As the event is only two weeks away, we hope many of you will be
blogging, tweeting, Facebook’ing, “whatever”ing a lot! 
</p>
        <p>
More news soon, right here!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=44020eaf-432e-41e8-b4fb-d799db1a9c6c" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>My TechEd Online TechTalk is online</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/15/My+TechEd+Online+TechTalk+Is+Online.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,24e927fd-d47c-4cfe-a323-6356c625aa77.aspx</id>
    <published>2009-11-15T22:09:05.421875+01:00</published>
    <updated>2009-11-15T22:09:05.421875+01: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="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>
At TechEd Europe 2009, together with my colleague Bart Wullems, I did a TechEd Online
TechTalk on Building Real World Silverlight applications. You can watch it here: <a title="http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4" href="http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4">http://www.msteched.com/online/view.aspx?tid=298625e9-142f-4b7f-8018-81615efd51c4</a> 
</p>
        <p>
A second one on building multitouch applications, together with a fellow Regional
Director Daron Yondem, will be online soon.
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=24e927fd-d47c-4cfe-a323-6356c625aa77" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>TechEd Europe almost here&amp;hellip; and here&amp;rsquo;s what I&amp;rsquo;ll be doing</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/11/05/TechEd+Europe+Almost+Herehellip+And+Herersquos+What+Irsquoll+Be+Doing.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,1a0dcb08-890e-4569-b8a7-6d0dcda2f9bf.aspx</id>
    <published>2009-11-05T09:06:01.844+01:00</published>
    <updated>2009-11-05T09:06:01.844+01:00</updated>
    <category term="Efficiency" label="Efficiency" scheme="http://www.snowball.be/CategoryView,category,Efficiency.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>
          <a href="http://www.msteched.com/europe/Public/default.aspx">TechEd 2009</a> is just
a few days away now, starting on Monday November 9th in the Mess Berlin. Coincidentally,
the day the event starts, marks the celebrations of the fall of the Berlin wall, now
exactly 20 years ago. I’m guessing Microsoft took the “Life without walls” seriously!
Authorities expect no less than one million people on the Berlin streets on Monday
night. We won’t be alone there, that’s for sure.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEdEuropealmosthereandhereswhatIllbed_7FF5/TechEd_Europe_Blog_SM_BDG_MVPs_2.gif">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TechEd_Europe_Blog_SM_BDG_MVPs" border="0" alt="TechEd_Europe_Blog_SM_BDG_MVPs" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEdEuropealmosthereandhereswhatIllbed_7FF5/TechEd_Europe_Blog_SM_BDG_MVPs_thumb.gif" width="124" height="94" />
          </a>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEdEuropealmosthereandhereswhatIllbed_7FF5/TechEd_Europe_Blog_SM_BDG_RDs_2.gif">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TechEd_Europe_Blog_SM_BDG_RDs" border="0" alt="TechEd_Europe_Blog_SM_BDG_RDs" src="http://www.snowball.be/content/binary/WindowsLiveWriter/TechEdEuropealmosthereandhereswhatIllbed_7FF5/TechEd_Europe_Blog_SM_BDG_RDs_thumb.gif" width="124" height="94" />
          </a>
        </p>
        <p>
I’ll be attending the event and you can come and see me at the following locations/times:
</p>
        <ul>
          <li>
Tuesday evening during the reception at the Silverlight booth</li>
          <li>
Wednesday from 14.45 till 17.30 at the Silverlight booth</li>
          <li>
Probably I’ll be at the booth on other times as well</li>
          <li>
On Tuesday I’ll be doing a TechEd TechTalk in the fishbowl around 15.00</li>
          <li>
I’ll be at the Speaker Idol booth as well, don’t know when yet</li>
          <li>
Together with other Regional Directors, I’ll be in the lounge</li>
        </ul>
        <p>
Of course, I’ll be blogging as much as possible from the event, so watch this space
for important updates!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=1a0dcb08-890e-4569-b8a7-6d0dcda2f9bf" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Test-Aankoop against expensive internet in Belgium</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/26/TestAankoop+Against+Expensive+Internet+In+Belgium.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,b0129145-ac2c-4b65-891f-145347e282ad.aspx</id>
    <published>2009-10-26T13:16:07.5025+01:00</published>
    <updated>2009-10-26T13:16:07.5025+01:00</updated>
    <category term="Internet" label="Internet" scheme="http://www.snowball.be/CategoryView,category,Internet.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Test-Aankoop, the Belgian consumer group, launched a campaign to stop the expensive
internet prices in Belgium. Part of this is a petition that can be signed <a href="http://quask.euroconsumers.org/FormServer/internettarieven_mb">here</a>.
</p>
        <p>
Read the article <a href="http://www.test-aankoop.be/internet/ten-strijde-tegen-het-dure-internet-s616753.htm">here</a> (Dutch).
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=b0129145-ac2c-4b65-891f-145347e282ad" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Windows 7: 7 second ads are cool</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/22/Windows+7+7+Second+Ads+Are+Cool.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,094aa2aa-db12-4c70-9bb4-6e8648624533.aspx</id>
    <published>2009-10-22T22:42:41.0698763+02:00</published>
    <updated>2009-10-22T22:42:41.0698763+02:00</updated>
    <category term="Windows 7" label="Windows 7" scheme="http://www.snowball.be/CategoryView,category,Windows7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="html">&lt;p&gt;
Some very short ads that were released for the launch of Windows 7!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;object width=425 height=344&gt;
&lt;param name="movie" value="http://www.youtube.com/v/jK-nMQiLzts&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/jK-nMQiLzts&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;object width=425 height=344&gt;
&lt;param name="movie" value="http://www.youtube.com/v/TGth7i2lCXY&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/TGth7i2lCXY&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;object width=425 height=344&gt;
&lt;param name="movie" value="http://www.youtube.com/v/DAD_Mtk88bg&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/DAD_Mtk88bg&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;object width=425 height=344&gt;
&lt;param name="movie" value="http://www.youtube.com/v/7szEK7ZFMHU&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hl=en&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowScriptAccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/7szEK7ZFMHU&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=094aa2aa-db12-4c70-9bb4-6e8648624533" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </content>
  </entry>
  <entry>
    <title>It's here!</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/21/Its+Here.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,7e3e2e76-7318-42f0-be39-50da6b784a07.aspx</id>
    <published>2009-10-22T00:18:20.804+02:00</published>
    <updated>2009-10-22T00:30:39.9136263+02:00</updated>
    <category term="Windows 7" label="Windows 7" scheme="http://www.snowball.be/CategoryView,category,Windows7.aspx" />
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="html">&lt;p&gt;
October 22nd is finally here, the day the world officially gets to know Windows 7,
the OS described by Gizmodo as the &lt;em&gt;"Snow Leopard"&lt;/em&gt; killer!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;object width=425 height=344&gt;
&lt;param name="movie" value="http://www.youtube.com/v/m3BrTmMPV4M&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/m3BrTmMPV4M&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.neowin.net/news/main/09/10/21/windows-7-begins-to-release-to-the-public-across-the-world"&gt;Neowin&lt;/a&gt; has
some nice pics from Wellington, NZ, where Win7 is already available because of the
time difference.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img border=0 src="http://www.snowball.be/content/binary/22-10-2009-0-27-00.jpg"&gt;&lt;img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=7e3e2e76-7318-42f0-be39-50da6b784a07" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Snowball.be - The blog of Gill Cleeren </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 Tips and tricks: The new Recent Projects module</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/21/Visual+Studio+2010+Tips+And+Tricks+The+New+Recent+Projects+Module.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,bb72d0a0-78d6-4e6e-93d8-c81521f458bb.aspx</id>
    <published>2009-10-21T23:31:03.5542513+02:00</published>
    <updated>2009-10-21T23:31:03.5542513+02:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.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>
The new shell written in WPF in VS2010 opens a whole set of options. Take for example
the Recent Projects module. In previous versions, it always showed the last opened
projects, without giving us any influence on what it should be displaying. It happened
to me a lot that I’m working on a project, but by giving a session with some demos,
my “real” projects were removed from the list.
</p>
        <p>
In VS2010, we now have the option to tweak it like we want. 
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipsandtricksThenewRecen_BE09/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/VisualStudio2010TipsandtricksThenewRecen_BE09/image_thumb.png" width="222" height="244" />
          </a>
        </p>
        <p>
For example, we can pin a project, so that it isn’t removed anymore, like so:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipsandtricksThenewRecen_BE09/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/VisualStudio2010TipsandtricksThenewRecen_BE09/image_thumb_1.png" width="244" height="163" />
          </a>
        </p>
        <p>
Or we can remove any temporary or old projects as shown below:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipsandtricksThenewRecen_BE09/image_6.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/VisualStudio2010TipsandtricksThenewRecen_BE09/image_thumb_2.png" width="244" height="151" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=bb72d0a0-78d6-4e6e-93d8-c81521f458bb" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Visual Studio 2010 Tips and tricks: Smarter IntelliSense through sub-string matching</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/21/Visual+Studio+2010+Tips+And+Tricks+Smarter+IntelliSense+Through+Substring+Matching.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,68609bb3-d73f-4670-b74d-84eba4fd1272.aspx</id>
    <published>2009-10-21T14:06:41.335+02:00</published>
    <updated>2009-10-21T14:08:40.9448763+02:00</updated>
    <author>
      <name>Gill Cleeren</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
When working with code, IntelliSense is invaluable. However, we always needed to remember
the first letters of the class or the control we wanted to do something with.
</p>
        <p>
In VS2010, this has changed. For example, I add a button called MySuperButton like
so:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipsandtricksSmarterInte_C140/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/VisualStudio2010TipsandtricksSmarterInte_C140/image_thumb.png" width="303" height="137" />
          </a>
        </p>
        <p>
Visual Studio will now allow me to find my button from IntelliSense by typing “super”:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/VisualStudio2010TipsandtricksSmarterInte_C140/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/VisualStudio2010TipsandtricksSmarterInte_C140/image_thumb_1.png" width="449" height="97" />
          </a>
        </p>
        <p>
It’s not needed to search on the first characters, it will search for sub-string occurrences!
</p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=68609bb3-d73f-4670-b74d-84eba4fd1272" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>The new MSDN is friendly to your connection and your browser</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/20/The+New+MSDN+Is+Friendly+To+Your+Connection+And+Your+Browser.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,efea0bc6-3591-4825-a9ad-8644bafd69f2.aspx</id>
    <published>2009-10-20T14:37:50.3823763+02:00</published>
    <updated>2009-10-20T14:37:50.3823763+02:00</updated>
    <category term="Microsoft" label="Microsoft" scheme="http://www.snowball.be/CategoryView,category,Microsoft.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>
Not only does the new MSDN site look a lot cleaner, it’s also adaptive to your browsing
needs. 
</p>
        <p>
Head to any page in the MSDN library and at the bottom, you should see a floating
Switch block.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/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/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/image_thumb.png" width="177" height="100" />
          </a>
        </p>
        <p>
This gives you the option to switch to a lightweight version…
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/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/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/image_thumb_1.png" width="244" height="145" />
          </a>
        </p>
        <p>
or a script-free version, handy for mobile devices.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/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/ThenewMSDNisfriendlytoyourconnectionandy_CDAE/image_thumb_2.png" width="244" height="180" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=efea0bc6-3591-4825-a9ad-8644bafd69f2" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
  <entry>
    <title>Setting up TFS Basic with Visual Studio 2010</title>
    <link rel="alternate" type="text/html" href="http://www.snowball.be/2009/10/20/Setting+Up+TFS+Basic+With+Visual+Studio+2010.aspx" />
    <id>http://www.snowball.be/PermaLink,guid,a6b4c4ad-dc6b-4ce1-9e52-a33e1639d538.aspx</id>
    <published>2009-10-20T13:50:00.663+02:00</published>
    <updated>2009-10-20T13:50:00.6636263+02:00</updated>
    <category term=".NET 4" label=".NET 4" scheme="http://www.snowball.be/CategoryView,category,NET4.aspx" />
    <category term="TFS" label="TFS" scheme="http://www.snowball.be/CategoryView,category,TFS.aspx" />
    <category term="Visual Studio.net" label="Visual Studio.net" scheme="http://www.snowball.be/CategoryView,category,VisualStudionet.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>
One of the new features of the 2010 platform, is the ability to install Team Foundation
Server on a client OS, like Vista or Windows 7, 32 or 64 bit. It runs on SQL Express
as database, which if not installed on your machine, will be installed by the setup
configuration of TFS. 
</p>
        <p>
My personal setup is going to be a virtual machine in which I install TFS Basic. From
my host OS, which has VS2010 installed along with Team Explorer, I can easily connect
to it. 
</p>
        <p>
In this post, I wanted to show how easy it is to get things running on a Windows 7
(virtual) machine. 
</p>
        <p>
          <strong>1. Installing Team Foundation Server</strong>
        </p>
        <p>
The installation for TFS basic is the same as for the fully-featured version. Run
setup.exe from the disk (32bit or 64bit, depending on your OS).
</p>
        <p>
You should see the following wizard.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/1_2.png">
            <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/SettingupTFSBasicwithVisualStudio2010_B60E/1_thumb.png" width="244" height="188" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/2_2.png">
            <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/SettingupTFSBasicwithVisualStudio2010_B60E/2_thumb.png" width="244" height="188" />
          </a>
        </p>
        <p>
By default, nothing is checked. Check the Team Foundation components checkbox.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/3_4.png">
            <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/SettingupTFSBasicwithVisualStudio2010_B60E/3_thumb_1.png" width="244" height="188" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/4_4.png">
            <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/SettingupTFSBasicwithVisualStudio2010_B60E/4_thumb_1.png" width="244" height="188" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/5_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="5" border="0" alt="5" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/5_thumb_1.png" width="244" height="188" />
          </a>
        </p>
        <p>
          <strong>2. Configuration of TFS so that it will become TFS Basic</strong>
        </p>
        <p>
At this point, things have been installed, but nothing is running yet. The configuration
wizard should start up, as shown in the following screenshot.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/6_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="6" border="0" alt="6" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/6_thumb_1.png" width="244" height="129" />
          </a>
        </p>
        <p>
Now we get the choice to either install basic, advanced, application tier or upgrade.
Select upgrade and click on Start Wizard. This wizard will now guide you through the
required steps. On my machine, SQL Server Express 2008 was already installed, so the
wizard skipped this installation.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/7_4.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="7" border="0" alt="7" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/7_thumb_1.png" width="244" height="184" />
          </a>
        </p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/8_6.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="8" border="0" alt="8" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/8_thumb_2.png" width="244" height="184" />
          </a>
        </p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/9_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="9" border="0" alt="9" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/9_thumb_2.png" width="244" height="184" /></a></p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/10_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="10" border="0" alt="10" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/10_thumb_2.png" width="244" height="184" /></a></p>
        <p>
The wizard will now check if all my selections are possible with my config. If so,
we can continue.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/11_6.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="11" border="0" alt="11" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/11_thumb_2.png" width="244" height="184" />
          </a>  
</p>
        <p>
Success, we’re good to go!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/12_6.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="12" border="0" alt="12" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/12_thumb_2.png" width="244" height="184" />
          </a>
        </p>
        <p>
Installation has started.
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/13_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="13" border="0" alt="13" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/13_thumb_2.png" width="244" height="184" /></a></p>
        <p>
Finished setting up everything…
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/14_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="14" border="0" alt="14" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/14_thumb_2.png" width="244" height="184" /></a></p>
        <p>
TFS Basic is ready, here’s the address of your personal TFS Basic server.
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/15_6.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="15" border="0" alt="15" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/15_thumb_2.png" width="244" height="184" /></a></p>
        <p>
          <strong>3. Team Explorer is called to the scene</strong>
        </p>
        <p>
To use my TFS instance from Visual Studio, I need to install Team Explorer. It can
be found on the installation iso from TFS. Run its setup.
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/16_4.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="16" border="0" alt="16" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/16_thumb_1.png" width="244" height="188" /></a></p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/17_2.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="17" border="0" alt="17" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/17_thumb.png" width="244" height="188" /></a></p>
        <p>
Installing…
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/18_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="18" border="0" alt="18" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/18_thumb.png" width="244" height="188" />
          </a>
        </p>
        <p>
And complete!
</p>
        <p>
 <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/19_2.png"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="19" border="0" alt="19" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/19_thumb.png" width="244" height="188" /></a></p>
        <p>
          <strong>4. Visual Studio 2010 now with Team Explorer</strong>
        </p>
        <p>
In Visual Studio’s Team Explorer, click on Connect with Team Project. Add your server
as shown below:
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/20_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="20" border="0" alt="20" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/20_thumb.png" width="244" height="152" />
          </a>
        </p>
        <p>
From File &gt; New Team Project, you can start a new team project.
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/21_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="21" border="0" alt="21" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/21_thumb.png" width="244" height="199" />
          </a>
        </p>
        <p>
And there we have it, a completely configured system with Visual Studio 2010 and TFS
Basic!
</p>
        <p>
          <a href="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/22_2.png">
            <img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="22" border="0" alt="22" src="http://www.snowball.be/content/binary/WindowsLiveWriter/SettingupTFSBasicwithVisualStudio2010_B60E/22_thumb.png" width="509" height="294" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.snowball.be/aggbug.ashx?id=a6b4c4ad-dc6b-4ce1-9e52-a33e1639d538" />
        <br />
        <hr />
Snowball.be - The blog of Gill Cleeren 
</div>
    </content>
  </entry>
</feed>