<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://tozon.info/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Andrej Tozon's blog</title><link>http://tozon.info/blogs/andrej/default.aspx</link><description>In the Attic</description><dc:language>en</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>Integrating Silverlight with Community Server 2008.5</title><link>http://tozon.info/blogs/andrej/archive/2008/11/03/Integrating-Silverlight-with-Community-Server-2008.5.aspx</link><pubDate>Mon, 03 Nov 2008 08:18:33 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:80272</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/80272.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=80272</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=80272</wfw:comment><description>&lt;p&gt;I’m sure Telligent will fully enable Silverlight parts into future Community Server releases, but until then, a couple of tricks are needed to make Silverlight play well with CS. The following points were made with Community Server 2008.5 release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Include Silverlight apps in posts&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The common way to include Silverlight in CS posts is by using HTML &lt;em&gt;iframe&lt;/em&gt;s. CS is blocking this tag by default so you have to edit &lt;strong&gt;communityserver.config&lt;/strong&gt; file and enable it. Look for the &lt;strong&gt;&amp;lt;Markup&amp;gt;&lt;/strong&gt; tag and go to the &lt;strong&gt;&amp;lt;Html&amp;gt; &lt;/strong&gt;section within it. Add the iframe line somewhere to that section:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;iframe src = &amp;quot;true&amp;quot; frameborder = &amp;quot;true&amp;quot; width = &amp;quot;true&amp;quot; height = &amp;quot;true&amp;quot; /&amp;gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Only attributes with values set to “true” will be allowed so don’t forget to add the attributes you plan to set on an iframe.&lt;/p&gt;  &lt;p&gt;Next, upload the Silverlight app to a web site folder. The files to upload are usually the application’s [app].html (host page), [app].xap (application) and Silverlight.js (JavaScript helper library). Make sure that the uploaded .html file is accessible through the web and the app is working.&lt;/p&gt;  &lt;p&gt;The last step is an easy one. Insert the iframe in your post wherever you want to put your Silverlight application. You’ll most commonly do that when editing posts in Html view. I usually put another div tag around an iframe:&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&amp;lt;div style=&lt;span style="color:#006080;"&gt;&amp;quot;width:100%;height:200px&amp;quot;&lt;/span&gt;&amp;gt;
  &amp;lt;iframe src=&lt;span style="color:#006080;"&gt;&amp;quot;/silverlight/app.html&amp;quot;&lt;/span&gt; frameborder=&lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; width=&lt;span style="color:#006080;"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt; height=&lt;span style="color:#006080;"&gt;&amp;quot;200&amp;quot;&lt;/span&gt; /&amp;gt;
&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Putting Silverlight into CS master page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;This one requires some more manual work, but you can use CS’s master page’s system to control where you want to include Silverlight. As I needed to have Silverlight-enabled on all pages, I picked the &lt;strong&gt;Master.master&lt;/strong&gt; file. I also used a different approach for embedding Silverlight – instead of iframe, I used a new Silverlight ASP.NET control, which makes things much easier. You’ll get this control in your toolbox once you install Silverlight SDK. This approach, however, will require you to “upgrade” your web.config to target .NET Framework 3.5. You can either do this manually by copying all the missing sections and other entries into it or by opening the site with Visual Studio 2008 – Visual Studio usually prompts for this kind of upgrade when opening ASP.NET 2.0 projects. You should also add the following reference line into the pages/controls section to make Silverlight possible on every page:&lt;/p&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;add assembly=&amp;quot;System.Web.Silverlight&amp;quot; namespace=&amp;quot;System.Web.UI.SilverlightControls&amp;quot; tagPrefix=&amp;quot;asp&amp;quot; /&amp;gt; &lt;/font&gt;&lt;/p&gt;

&lt;p&gt;My edit of Master.master file now looks like this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;p&gt;&lt;em&gt;...&lt;/em&gt;
&lt;em&gt;&amp;lt;div id=&lt;span style="color:#006080;"&gt;&amp;quot;CommonHeader&amp;quot;&lt;/span&gt;&amp;gt;
&lt;/em&gt;&lt;strong&gt;  &amp;lt;asp:ScriptManager ID=&lt;span style="color:#006080;"&gt;&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt; runat=&lt;span style="color:#006080;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; /&amp;gt;
  &amp;lt;asp:Silverlight ID=&lt;span style="color:#006080;"&gt;&amp;quot;sl&amp;quot;&lt;/span&gt; runat=&lt;span style="color:#006080;"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; Source=&lt;span style="color:#006080;"&gt;&amp;quot;/Silverlight/banner.xap&amp;quot;&lt;/span&gt; &lt;br /&gt;    Height=&lt;span style="color:#006080;"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt; Width=&lt;span style="color:#006080;"&gt;&amp;quot;100%&amp;quot;&lt;/span&gt; Windowless=&lt;span style="color:#006080;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; /&amp;gt;
&lt;/strong&gt;&lt;em&gt;    &amp;lt;div &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;=&lt;span style="color:#006080;"&gt;&amp;quot;Common&amp;quot;&lt;/span&gt;&amp;gt;&lt;/em&gt;
&lt;em&gt;...&lt;/em&gt;&lt;/p&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;[inserted lines bold]&lt;/p&gt;

&lt;p&gt;Because of the inserted Silverlight control, all existing header contents were pushed further down. To fix this, override affected elements’ CSS style. You’ll do this on the Control Panel | System Administration | Site Administration | Site Theme | Custom Styles (Advanced) page. Just enter the overrides:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;#CommonHeaderTitleArea
{
    &lt;span style="color:#0000ff;"&gt;position&lt;/span&gt;: &lt;span style="color:#006080;"&gt;relative;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;top&lt;/span&gt;: &lt;span style="color:#006080;"&gt;-113px;&lt;/span&gt;
}
#CommonHeaderUserArea
{
    &lt;span style="color:#0000ff;"&gt;position&lt;/span&gt;: &lt;span style="color:#006080;"&gt;relative;&lt;/span&gt;
    &lt;span style="color:#0000ff;"&gt;top&lt;/span&gt;: &lt;span style="color:#006080;"&gt;-113px;&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;[Note: my header has its height set to default – 113px, so I had to push it (-)113px up. Change this value according to your header height.&lt;/p&gt;

&lt;p&gt;These were just very quick (and dirty) fixes to enable Silverlight in your CS2008.5 site until Silverlight gets native support in Community Site. I’ll most likely be putting even more Silverlight into my CS so I may update this post with even more tips.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/11/03/Integrating-Silverlight-with-Community-Server-2008.5.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/11/03/Integrating-Silverlight-with-Community-Server-2008.5.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=80272" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Community/default.aspx">Community</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Layout/default.aspx">Layout</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>PDC is over</title><link>http://tozon.info/blogs/andrej/archive/2008/11/01/PDC-is-over.aspx</link><pubDate>Sun, 02 Nov 2008 00:03:00 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:80064</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/80064.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=80064</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=80064</wfw:comment><description>&lt;p&gt;Now &lt;strong&gt;we&lt;/strong&gt; dance :)&lt;/p&gt;  &lt;p&gt;&lt;img title="Pumpkinz" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="351" alt="Pumpkinz" src="http://tozon.info/images/blog/bccc775ab96d_85C0/hallopumpkins.jpg" width="554" border="0" /&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/11/01/PDC-is-over.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/11/01/PDC-is-over.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=80064" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Let there be Light!</title><link>http://tozon.info/blogs/andrej/archive/2008/10/14/Let-there-be-Light_2100_.aspx</link><pubDate>Tue, 14 Oct 2008 07:51:00 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:77864</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/77864.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=77864</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=77864</wfw:comment><description>&lt;p&gt;We all knew it was coming. &lt;br /&gt;Although not so soon. &lt;br /&gt;Now it is here. &lt;br /&gt;Silverlight 2.&lt;/p&gt;&lt;p&gt;Open your Visual Studio. &lt;br /&gt;Grab your trusty mouse. &lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/resources/install.aspx"&gt;Download the bits&lt;/a&gt;. &lt;br /&gt;And Light Up the Web!&lt;/p&gt;&lt;p&gt;&lt;font color="#c0c0c0"&gt;[4MB download 10 seconds install]&lt;/font&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="margin:0px;text-align:left;padding:4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/10/14/Let-there-be-Light_2100_.aspx"&gt;&lt;img border="0" height="18" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/10/14/Let-there-be-Light_2100_.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" width="82" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=77864" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Developing for ASP.NET mobile</title><link>http://tozon.info/blogs/andrej/archive/2008/09/29/Developing-for-ASP.NET-mobile.aspx</link><pubDate>Mon, 29 Sep 2008 08:44:33 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:76632</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>2</slash:comments><comments>http://tozon.info/blogs/andrej/comments/76632.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=76632</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=76632</wfw:comment><description>&lt;p&gt;Visual Studio 2008 introduced a lot of new features to support new technologies, adding some cool new designers to developer’s tool belt. On the other hand, support for some technologies was simply left out, leaving a some developers very unhappy. One of those was &lt;a href="http://tozon.info/blogs/andrej/archive/2007/11/29/Visual-Studio-2008-and-Business-Intelligence-Projects.aspx"&gt;support for SQL Server 2005 BI projects&lt;/a&gt; (including 2005 Reporting Services).&lt;/p&gt;  &lt;p&gt;A (long) year after its release, I learned that there was another feature dropped in VS2008 – support for designing ASP.NET mobile web forms. This doesn’t mean you can’t develop, compile and publish ASP.NET mobile forms; it simply means they pulled out the designer and mobile forms item templates out of Visual Studio 2008. Getting item templates back is the easy part, you can get them &lt;a href="http://blogs.msdn.com/webdevtools/archive/2007/09/17/tip-trick-asp-net-mobile-development-with-visual-studio-2008.aspx"&gt;here&lt;/a&gt;. For the design view support, I’m not currently aware of any plans to put it back in the future.&amp;#160; But really – with mobile browsers getting more powerful each day, capable of rendering rich(er) (x)html, do we still need the simplicity and extendibility of ASP.NET mobile forms? For the time being, the answer may still be yes, if you’re planning to support a wide range of mobile devices. Whatever the future, the current (un)support for ASP.NET mobile in Visual Studio works for me. It’s true that I’m unable to design mobile forms in design view, but I do that rarely even with their bigger brother - ASP.NET web forms.&lt;/p&gt;  &lt;p&gt;ASP.NET? Mobile?&lt;/p&gt;  &lt;p&gt;Strangely enough, I’m doing more web than client development lately. Go figure.&lt;/p&gt;  &lt;p&gt;Speaking of webby/clienty things… &lt;a href="http://silverlight.net/GetStarted/sl2rc0.aspx"&gt;Silverlight 2.0 RC0&lt;/a&gt; was just made available. Downloads include &lt;a href="http://go.microsoft.com/fwlink/?LinkId=129043"&gt;Microsoft Silverlight Tools for Visual Studio 2008 SP1&lt;/a&gt; and &lt;a href="http://www.microsoft.com/expression/try-it/default.aspx?filter=prerelease"&gt;Microsoft Expression Blend 2 Service Pack 1 Preview&lt;/a&gt;. Note that Microsoft Expression Blend 2 SP1 is a replacement for Expression 2.5, which is no more.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/09/29/Developing-for-ASP.NET-mobile.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/09/29/Developing-for-ASP.NET-mobile.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=76632" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Software/default.aspx">Software</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Expression/default.aspx">Expression</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://tozon.info/blogs/andrej/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Until we meet again...</title><link>http://tozon.info/blogs/andrej/archive/2008/08/23/Until-we-meet-again_2E002E002E00_.aspx</link><pubDate>Sat, 23 Aug 2008 16:30:23 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:74138</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/74138.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=74138</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=74138</wfw:comment><description>&lt;p&gt;You left so sudden   &lt;br /&gt;I couldn't even say goodbye.    &lt;br /&gt;You've lived a hard life,    &lt;br /&gt;but did everything    &lt;br /&gt;to make mine easier.    &lt;br /&gt;Your faith, courage and love    &lt;br /&gt;will continue to live on    &lt;br /&gt;through your words and wishes:    &lt;br /&gt;&amp;quot;&lt;em&gt;Love one another&lt;/em&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;I'll miss you, Mom!&lt;/p&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=74138" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Creating splash screens with Expression Designer</title><link>http://tozon.info/blogs/andrej/archive/2008/08/15/Creating-splash-screens-with-Expression-Designer.aspx</link><pubDate>Fri, 15 Aug 2008 22:28:50 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:70686</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/70686.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=70686</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=70686</wfw:comment><description>&lt;p&gt;Did you know you can create &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;cool looking splash screens for your WPF application&lt;/a&gt; right there with the &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;Of course you did. &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt; provides you with all you need to create free-shaped, part-transparent, drop-shadowed graphics and I bet the the &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;WPF splash screen support&lt;/a&gt; is going to be baked into the next release of &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=blend" target="_blank"&gt;Expression Blend&lt;/a&gt; as well.&lt;/p&gt;  &lt;p&gt;This is a quick walk through designing a splash screen with the &lt;a href="http://www.microsoft.com/expression/products/Overview.aspx?key=design" target="_blank"&gt;Expression Designer&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;1. With Expression Designer open, create a new rectangle and set its &lt;strong&gt;Corner Radius&lt;/strong&gt; property to about &lt;strong&gt;30px&lt;/strong&gt; (depending your rectangle’s size).&lt;/p&gt;  &lt;p&gt;2. Set rectangle’s color to match your application theme and make it a bit transparent by setting &lt;strong&gt;Opacity&lt;/strong&gt; to around &lt;strong&gt;70%&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="Rectangle" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="134" alt="Rectangle" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image.png" width="341" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;3. Find the &lt;strong&gt;Effects&lt;/strong&gt; property section and click the &lt;strong&gt;Add Effect&lt;/strong&gt; button. Choose &lt;strong&gt;Effects&lt;/strong&gt; | &lt;strong&gt;Drop Shadow&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="Add Effect" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="166" alt="Add Effect" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_3.png" width="321" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;4. Decrease &lt;strong&gt;Softness&lt;/strong&gt; and &lt;strong&gt;Offset&lt;/strong&gt; and increase &lt;strong&gt;Opacity&lt;/strong&gt; properties to make the shadow more compact. You will end up with something like this:&lt;/p&gt;  &lt;p&gt;&lt;img title="Drop Shadow and Transparence" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="216" alt="Drop Shadow and Transparence" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_4.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;5. Create a new layer and put a new rectangle on it. Make it the same size as the first one and put it on the same spot to make them both aligned exactly.&lt;/p&gt;  &lt;p&gt;6. Set its stroke to None and fill it with a transparent gradient: First Stop Alpha: 80%, Second Stop Alpha: 0%.&lt;/p&gt;  &lt;p&gt;7. Move gradient’s origin more to the side and make it larger.&lt;/p&gt;  &lt;p&gt;&lt;img title="Gradient" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="273" alt="Gradient" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_5.png" width="342" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Your rectangle should now look just a little bit more exciting:&lt;/p&gt;  &lt;p&gt;&lt;img title="Light source" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="201" alt="Light source" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_6.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;8. Time for some text… With the &lt;strong&gt;Text&lt;/strong&gt; tool, create your application title. I’ve chosen 36 pt Arial Rounded MT Bold font with white color fill. Applying some transparency to the text will make it absorb some background color for a more glassy look. You could add some &lt;strong&gt;Outer Glow Effect&lt;/strong&gt; to make it even cooler.&lt;/p&gt;  &lt;p&gt;9. Add all other text you want to show in your splash screen. Here’s what I got so far:&lt;/p&gt;  &lt;p&gt;&lt;img title="Title &amp;amp; Text" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="206" alt="Title &amp;amp; Text" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_7.png" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;10. If you have any graphics that could communicate to the user what your application is all about, you could use that as well. It might also be a screenshot from the actual application if you can’t find anything better. I used a screenshot of my sample &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx"&gt;Live Europe Weather Map&lt;/a&gt; application. Adding a bitmap to the existing Expression Design project is really easy – just select &lt;strong&gt;File&lt;/strong&gt; | &lt;strong&gt;Impor&lt;/strong&gt;t… and open your graphics - it will get added to the current layer so you will probably want to create a new layer before doing that. And don’t forget to set some transparency to that as well:&lt;/p&gt;  &lt;p&gt;&lt;img title="Bitmap" style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="220" alt="Bitmap" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/image_8.png" width="444" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;11. Almost done. To break out of dull symmetric rectangly shape, you can mix in some additional decorations, like I did to point out that this is a whole new version of the application [the yellow badge is from the &lt;a href="http://www.bittbox.com/freebies/free-vector-badges-glass/" target="_blank"&gt;bittbox badges collection&lt;/a&gt;:&lt;/p&gt;  &lt;p align="center"&gt;&amp;#160;&lt;a href="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/splash.png"&gt;&lt;img title="Final Splash" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="296" alt="Final Splash" src="http://tozon.info/images/blog/CreatingsplashscreenswithExpressionDesig_E12B/splash_thumb.png" width="550" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And this is the final result for now. We’ve got transparency, irregular shape, drop shadow… Of course, this works for a sample, but for a real-world application I would have to put some additional work into it; pay more attention to the details, colors, gradients, etc.&lt;/p&gt;  &lt;p&gt;12. When satisfied with your work, just select all objects, select &lt;strong&gt;File&lt;/strong&gt; | &lt;strong&gt;Export…&lt;/strong&gt; and choose PNG as your target format. After the file is saved on your disk, all you need is &lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;incorporate it in your WPF application&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Expression Design offers a lot more effects and options that were shown in this quick walkthrough. I am particularly happy to see how easy it is to play with different effects, mixing and layering them in different combination. There is, of course, also export to different Xaml instances, which makes it even more sweet.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;While writing this post, I noticed that the WPF team published a new &lt;a href="http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962" target="_blank"&gt;WPF Splash Screen Item Templates for Visual Studio 2008 SP1&lt;/a&gt;. This gives you additional option to add a splash screen to your WPF application – a new (&lt;em&gt;Splash Screen (WPF)&lt;/em&gt;) item will be available in your templates window when adding a new item. Selecting that will insert a default graphics to your project and set it as the splash screen. You’ll have to customize the graphics yourself though. This is a nice option, although I’d like to see some form of a wizard with some styling options, font/title selections, etc… In the next version of Visual Studio perhaps…&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/15/Creating-splash-screens-with-Expression-Designer.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/15/Creating-splash-screens-with-Expression-Designer.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=70686" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/WPF/default.aspx">WPF</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Expression/default.aspx">Expression</category><category domain="http://tozon.info/blogs/andrej/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Splash Screen in WPF 3.5 SP1</title><link>http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx</link><pubDate>Mon, 11 Aug 2008 21:03:03 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:69999</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>10</slash:comments><comments>http://tozon.info/blogs/andrej/comments/69999.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=69999</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=69999</wfw:comment><description>&lt;p&gt;Besides improving application startup time, .NET Framework 3.5 &lt;strong&gt;SP1&lt;/strong&gt; also allows developers to add a splash screen to WPF applications. The splash screen is shown using native code, even before WPF application starts to load. In reality this means the splash screen would show immediately when application is started, and fade away a couple of seconds later, when application is fully loaded and main screen displayed.&lt;/p&gt;  &lt;p&gt;WPF Splash screen is just and nothing more than a plain bitmap image. Common formats are supported, and if you use a PNG format with a specified alpha channel, transparent areas will be shown accordingly. Just remember to keep it small. Choosing a couple of megabytes large bitmap for your splash screen won’t reduce the loading time. Adding additional information to the image during runtime (title, version number) is also not possible; everything you want to show should be designed in advance and incorporated into a single image.&lt;/p&gt;  &lt;p&gt;WPF splash screens can be added to an application in two ways:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Showing splash screen manually&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1. Create a new &lt;strong&gt;PNG image&lt;/strong&gt;, which will be your splash screen.&lt;/p&gt;  &lt;p&gt;2. Start your &lt;strong&gt;Visual Studio 2008 SP1&lt;/strong&gt; and create a new &lt;strong&gt;WPF project&lt;/strong&gt;. [make sure .NET 3.5 is specified as the target FX]&lt;/p&gt;  &lt;p&gt;3. Choose &lt;strong&gt;Project&lt;/strong&gt; | &lt;strong&gt;Add Existing Item&lt;/strong&gt;… Find and select your splash screen image.&lt;/p&gt;  &lt;p&gt;4. Open &lt;strong&gt;App.xaml&lt;/strong&gt; file in design view and look in the properties window ;)&lt;/p&gt;  &lt;p&gt;&lt;img title="Events in VS2008 WPF designer" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="399" alt="Events in VS2008 WPF designer" src="http://tozon.info/images/blog/SplashScreeninWPF_137E2/image.png" width="281" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Yes, there’s an event panel in WPF designer! And properties/events sorting option buttons!&lt;/p&gt;  &lt;p&gt;5. Create a &lt;strong&gt;Startup&lt;/strong&gt; event handler:&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, StartupEventArgs e)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     SplashScreen screen = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SplashScreen(&lt;span style="color:#006080;"&gt;&amp;quot;sp1splash.png&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     screen.Show(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;6. Compile and run.&lt;/p&gt;

&lt;p&gt;The SplashScreen constructor takes the name of the resource, which is a splash screen image. The boolean parameter in the Show() method specifies, whether the splash screen should fade out when application is fully loaded. False means you’ll have to hide the splash screen manually using the Close() method.&lt;/p&gt;

&lt;p&gt;If you don’t like writing code, this gets even easier:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Showing splash screen declaratively&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1. Create a new &lt;strong&gt;PNG image&lt;/strong&gt;, which will be your splash screen.&lt;/p&gt;

&lt;p&gt;2. Start your &lt;strong&gt;Visual Studio 2008 SP1&lt;/strong&gt; and create a new &lt;strong&gt;WPF project&lt;/strong&gt;. [make sure .NET 3.5 is specified as the target FX]&lt;/p&gt;

&lt;p&gt;3. Choose &lt;strong&gt;Project&lt;/strong&gt; | &lt;strong&gt;Add Existing Item&lt;/strong&gt;… Find and select your splash screen image.&lt;/p&gt;

&lt;p&gt;4. Select the newly added image in the solution explorer and show its properties.&lt;/p&gt;

&lt;p&gt;5. Change the &lt;strong&gt;Build Action&lt;/strong&gt; to &lt;strong&gt;SplashScreen&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;6. Compile and run.&lt;/p&gt;

&lt;p&gt;The splash screen shows immediately upon the application startup and fades out when the main window is loaded and shown. How’s that for cool new user experience :)&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Additional note: SplashScreen class works in WPF desktop apps only, XBAPs have their own mechanism for starting up.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Splash-Screen-in-WPF.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69999" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Software/default.aspx">Software</category><category domain="http://tozon.info/blogs/andrej/archive/tags/WPF/default.aspx">WPF</category><category domain="http://tozon.info/blogs/andrej/archive/tags/User+Experience/default.aspx">User Experience</category></item><item><title>Live Europe Weather Map in action</title><link>http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx</link><pubDate>Mon, 11 Aug 2008 09:12:14 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:69915</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>2</slash:comments><comments>http://tozon.info/blogs/andrej/comments/69915.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=69915</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=69915</wfw:comment><description>&lt;p&gt;&lt;a href="http://tozon.info/blogs/andrej/archive/2008/08/04/Live-Europe-Weather-Map-with-Windows-Live-Tools-Map-Control.aspx"&gt;As promised&lt;/a&gt;, here’s my &lt;a href="http://www.anthology.si/liveweather"&gt;Live Europe Weather Map in action&lt;/a&gt;. This is still just a basic example of displaying icon pushpins on a map, and because I’m using &lt;a href="http://dev.live.com/tools"&gt;Virtual Earth ASP.NET Map Control&lt;/a&gt;, I don’t need to worry about how map is handled and pushpins are displayed, I only need to provide data for the pushpins.&lt;/p&gt;  &lt;p&gt;&lt;img title="Live Europe Weather Map" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="416" alt="Live Europe Weather Map" src="http://tozon.info/images/blog/LiveEuropeWeatherMapinaction_89ED/ve2.jpg" width="554" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;The first version of the Weather Map from a couple of years ago used to scrape the data off a Html Page. Recently, the &lt;a href="http://meteo.arso.gov.si/met/en/" target="_blank"&gt;National Environmental Agency&lt;/a&gt; started publishing weather data in &lt;a href="http://meteo.arso.gov.si/met/en/service/" target="_blank"&gt;a more collection-friendly data formats&lt;/a&gt;, so I switched to these. &lt;/p&gt;  &lt;p&gt;The current version of Live European Weather Map collects Xml files, containing weather observations for European Capitals and additional cities.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Data Collection&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I decided to go with LINQ to SQL option for shaping my data entity. Some may argue that LINQ to SQL isn’t a serious technology, but for small, compact projects like this, it gives me just what I need:&lt;/p&gt;  &lt;p&gt;1. Instead of generating my data classes manually, I can create a table in my database (SQL Express in this case) and pull my classes out of that.&lt;/p&gt;  &lt;p&gt;2. I can create my data entity by drag and dropping a table from the data source to the LINQ to SQL Class Designer in Visual Studio 2008, and my data class would get generated automatically. Here's what I’m currently collecting for weather conditions:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="442" alt="image" src="http://tozon.info/images/blog/LiveEuropeWeatherMapinaction_89ED/image.png" width="197" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;3. I can use this class to collect the data and store in into the database, or I can simply just store the collected data into ASP.NET Cache and forget the database completely.&lt;/p&gt;  &lt;p&gt;Of course, I could’ve done it some other way (plenty of options), but this one seemed the easiest and quickest.&lt;/p&gt;  &lt;p&gt;Weather data collection is done in a background, with a HttpModule and a timer, set to fire the collection process every 60 minutes (configurable through web.config):&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Init(HttpApplication application)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; interval = GetCollectIntervalSetting();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (timer == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;  interval &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;         timer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Timer(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TimerCallback(BackgroundCollectionCallback), application.Context, 0, interval);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; BackgroundCollectionCallback(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     WeatherCollector.UpdateConditions();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Using LINQ to SQL, collected data is inserted into the database:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UpdateConditions()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     List&amp;lt;WeatherCondition&amp;gt; items = Collect();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;     WeatherDataContext context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WeatherDataContext();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     context.ExecuteCommand(&lt;span style="color:#006080;"&gt;&amp;quot;delete dbo.WeatherCondition&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;     context.WeatherConditions.InsertAllOnSubmit(items);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     context.SubmitChanges();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;… and later read from it:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; WeatherCondition[] Read()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     WeatherDataContext context = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WeatherDataContext();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     var conditions = from item &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; context.WeatherConditions&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;                      select item;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; conditions.ToArray();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;… just to finally get shown on the map:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (IsPostBack)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;     AddWeatherPins();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddWeatherPins()&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;     WeatherCondition[] conditions = WeatherCollector.Read();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; conditions.Length; i++)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         WeatherCondition condition = conditions[i];&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.ConditionIcon == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt; || condition.ConditionIcon.Length == 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;         AddPin(condition);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;     };&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddPin(WeatherCondition condition)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt; {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;     StringBuilder sb = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringBuilder();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;     sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;{0} {1}&amp;lt;/b&amp;gt;, {2}&amp;quot;&lt;/span&gt;, condition.Temperature, condition.TemperatureUnit, condition.Condition);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Weather.Length &amp;gt; 0)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;, {0}&amp;quot;&lt;/span&gt;, condition.Weather);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;     sb.Append(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  36:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.WindStrength.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  37:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  38:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Wind: {0}, {1} {2}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.WindDirection, condition.WindStrength, condition.WindStrengthUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  39:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  40:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Humidity.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  41:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  42:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Humidity: {0} {1}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Humidity, condition.HumidityUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  43:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  44:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Visibility.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  45:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  46:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Visibility: {0} {1}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Visibility, condition.VisibilityUnit);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  47:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  48:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (condition.Pressure.HasValue)&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  49:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  50:&lt;/span&gt;         sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;Pressure: {0} {1} {2}&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;, condition.Pressure, condition.PressureUnit, condition.PressureText);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  51:&lt;/span&gt;     }&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  52:&lt;/span&gt;     sb.AppendFormat(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;lt;br /&amp;gt;Updated: {0}&amp;lt;/p&amp;gt;&amp;quot;&lt;/span&gt;, condition.UpdatedTime);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  53:&lt;/span&gt;&amp;#160; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  54:&lt;/span&gt;     Shape pin = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Shape(ShapeType.Pushpin, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; LatLongWithAltitude((&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;)condition.Latitude, (&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;)condition.Longitude));&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  55:&lt;/span&gt;     pin.Title = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;{0}, {1}&amp;quot;&lt;/span&gt;, condition.City, condition.CountryCode);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  56:&lt;/span&gt;     pin.CustomIcon = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;&amp;quot;images/{0}.png&amp;quot;&lt;/span&gt;, condition.ConditionIcon);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  57:&lt;/span&gt;     pin.Description = sb.ToString();&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  58:&lt;/span&gt;     map.AddShape(pin);&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  59:&lt;/span&gt; }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Note that a large portion of the code is spent for describing pushpin’s popup content.&lt;/p&gt;

&lt;p&gt;Again, this is just a drag’n’dropped Virtual Earth Map Control put to work here, without any specific client or server-side events. Looking forward to explore those in the future.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/11/Live-Europe-Weather-Map-in-action.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69915" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category></item><item><title>VSM4WPF</title><link>http://tozon.info/blogs/andrej/archive/2008/08/09/VSM4WPF.aspx</link><pubDate>Sat, 09 Aug 2008 07:50:52 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:69574</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/69574.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=69574</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=69574</wfw:comment><description>&lt;p&gt;While next release of WPF (3.5 SP1) won't yet align with Silverlight's &amp;quot;&lt;a href="http://scorbs.com/2008/06/11/parts-states-model-with-visualstatemanager-part-1-of" target="_blank"&gt;Parts &amp;amp; States Model&lt;/a&gt;&amp;quot;&amp;#160; by not introducing VisualStateManager into its API, it's good to know that VSM is definitely coming to WPF. Even more, &lt;a href="http://blogs.msdn.com/johngossman/default.aspx" target="_blank"&gt;John Gossman&lt;/a&gt; has just released a prototype of his &lt;a href="http://blogs.msdn.com/johngossman/archive/2008/08/08/visualstatemanager-for-desktop-wpf.aspx" target="_blank"&gt;VisualStateManager for desktop WPF&lt;/a&gt;, which is compatible with Silverlight Beta 2 VSM implementation.&lt;/p&gt;  &lt;p&gt;Before VSM is built into the core of WPF, this prototype lets us explore and play with this &amp;quot;new way&amp;quot; of controls' state transitioning in WPF applications. Sweet.&lt;/p&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69574" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/WPF/default.aspx">WPF</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight Olympics</title><link>http://tozon.info/blogs/andrej/archive/2008/08/08/Silverlight-Olympics.aspx</link><pubDate>Fri, 08 Aug 2008 18:09:04 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:69507</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/69507.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=69507</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=69507</wfw:comment><description>&lt;p&gt;Want to tune into 2008 Beijing Summer Olympic Games with &lt;a href="http://silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;Not in the United States, you say?&lt;/p&gt;  &lt;p&gt;Well, tough luck ;)&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="416" alt="NBC Olympics" src="http://tozon.info/images/blog/SilverlightOlympics_11710/image.png" width="554" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;This IP restriction thing is getting sillier by the day... Isn't Internet supposed to be global? What happened to &lt;em&gt;World Wide&lt;/em&gt; Web? :)&lt;/p&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69507" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Software/default.aspx">Software</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>The tide is high – new MS downloads</title><link>http://tozon.info/blogs/andrej/archive/2008/08/06/The-tide-is-high-_1320_-new-MS-downloads.aspx</link><pubDate>Wed, 06 Aug 2008 18:57:51 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:69202</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/69202.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=69202</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=69202</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/subscriptions"&gt;SQL Server 2008&lt;/a&gt; RTM is out!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en"&gt;Microsoft Sync Framework v1.0&lt;/a&gt; RTM is out!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sync Services [now @ v2] is “synchronized” with Sync Framework &lt;/li&gt;    &lt;li&gt;Peer 2 peer database sync support &lt;/li&gt;    &lt;li&gt;Sync with device’s Database &lt;/li&gt;    &lt;li&gt;SQL2008 Change Tracking supported &lt;/li&gt;    &lt;li&gt;Sync process tracing &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A couple of features of the above products require VS2008/.NET 3.5 SP1, which means VS2008 / .NET 3.5 service pack duo should be released real soon now [by August 11th, as stated on MSDN). &lt;/p&gt;  &lt;p&gt;Like it’s not hot enough already… turning my air-con down to keep my boxes cool and running…&lt;/p&gt;  &lt;p&gt;[Update] &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx"&gt;SQL Server Compact 3.5 SP1&lt;/a&gt; is out!&lt;/p&gt;  &lt;p&gt;[Update] &lt;a href="http://go.microsoft.com/fwlink/?LinkId=124150" target="_blank"&gt;.NET FX 3.5 SP1&lt;/a&gt; is out!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ADO.NET Data Services&lt;/li&gt;    &lt;li&gt;Entity Framework&lt;/li&gt;    &lt;li&gt;ASP.NET Dynamic data&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;[Update] &lt;a href="http://go.microsoft.com/fwlink/?LinkId=122094"&gt;Visual Studio 2008 SP1&lt;/a&gt; is out!    &lt;br /&gt;[Update] Need to update &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;amp;displaylang=en"&gt;Silverlight Tools for VS2008&lt;/a&gt; too.&lt;/p&gt;  &lt;p&gt;Sources: &lt;a href="http://blogs.msdn.com/euanga/archive/2008/08/06/sql-server-2008-rtm.aspx"&gt;here&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/sync/archive/2008/08/06/top-new-features-in-sync-services-for-ado-net-v2.aspx"&gt;here&lt;/a&gt;, &lt;a href="http://coolthingoftheday.blogspot.com/2008/08/sql-server-2008-rtms-and-is-now.html"&gt;here&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/stevelasker/archive/2008/08/07/sql-server-compact-3-5-sp1-released.aspx"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/06/The-tide-is-high-_1320_-new-MS-downloads.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/06/The-tide-is-high-_1320_-new-MS-downloads.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=69202" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category><category domain="http://tozon.info/blogs/andrej/archive/tags/Software/default.aspx">Software</category></item><item><title>Live Europe Weather Map with Windows Live Tools Map Control</title><link>http://tozon.info/blogs/andrej/archive/2008/08/04/Live-Europe-Weather-Map-with-Windows-Live-Tools-Map-Control.aspx</link><pubDate>Mon, 04 Aug 2008 21:28:16 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:68896</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>5</slash:comments><comments>http://tozon.info/blogs/andrej/comments/68896.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=68896</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=68896</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p align="left"&gt;A while ago I built &lt;a href="http://tozon.info/blogs/andrej/archive/2006/05/21/300.aspx"&gt;a sample weather map&lt;/a&gt; using Atlas [now Microsoft Ajax] and VirtualEarthMap control, which used real-time data to display current weather conditions.&lt;/p&gt;  &lt;p align="left"&gt;VirtualEarthMap control was steadily progressing all this time as a part of a separate SDK, until released as a new ASP.NET control with the latest Windows Live Tools for Microsoft Visual Studio release last week [July CTP, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=D7C6DF11-2283-4CAC-9723-172F5C33EFBB&amp;amp;displaylang=en" target="_blank"&gt;download here&lt;/a&gt;].&lt;/p&gt;  &lt;p align="left"&gt;Working with the control appears to be easy. It took me about 15 minutes [including Tools’ download+setup] to port the previous version to use this new control. No &lt;a href="http://en.wikipedia.org/wiki/Rtfm" target="_blank"&gt;RTFM&lt;/a&gt;, just drag and drop, set properties and copy/modify some relevant code. And still, the current implementation consumes only small part of functionality this control offers, leaving a lot of space for additional enhancements. &lt;/p&gt;  &lt;p align="left"&gt;Here’s a screenshot of the control in action:&lt;/p&gt;  &lt;p align="center"&gt;&lt;img title="Europe Weather" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="453" alt="Europe Weather" src="http://tozon.info/images/blog/46693efd530c_13E8F/image.png" width="554" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;What the application does is capture the weather data from the national &lt;a href="http://www.arso.gov.si/english/"&gt;Environmental Agency&lt;/a&gt; and display them on the map as custom pushpins, each pushpin representing a city, where the readings are being collected; hovering over each pushpin will give you more information about that city weather station’s readings.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’m going to post a live example with some code after I give this control some more time to show me what it can really do.&lt;/p&gt;&lt;div class="wlWriterHeaderFooter" style="text-align:left;margin:0px;padding:4px 4px 4px 4px;"&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http://tozon.info/blogs/andrej/archive/2008/08/04/Live-Europe-Weather-Map-with-Windows-Live-Tools-Map-Control.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://tozon.info/blogs/andrej/archive/2008/08/04/Live-Europe-Weather-Map-with-Windows-Live-Tools-Map-Control.aspx&amp;amp;bgcolor=0080C0&amp;amp;fgcolor=FFFFFF&amp;amp;border=000000&amp;amp;cbgcolor=D4E1ED&amp;amp;cfgcolor=000000" border="0/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://tozon.info/aggbug.aspx?PostID=68896" width="1" height="1"&gt;</description><category domain="http://tozon.info/blogs/andrej/archive/tags/Development/default.aspx">Development</category></item><item><title>Label.Target Pt.2: The return of the (not so) attached property</title><link>http://tozon.info/blogs/andrej/archive/2008/07/31/Label.Target-Pt.2_3A00_-The-return-of-the-_2800_not-so_2900_-attached-property.aspx</link><pubDate>Fri, 01 Aug 2008 01:21:27 GMT</pubDate><guid isPermaLink="false">d163d6f7-e5f8-4639-9454-10a76eef6df8:68258</guid><dc:creator>Andrej Tozon</dc:creator><slash:comments>0</slash:comments><comments>http://tozon.info/blogs/andrej/comments/68258.aspx</comments><wfw:commentRss>http://tozon.info/blogs/andrej/commentrss.aspx?PostID=68258</wfw:commentRss><wfw:comment>http://tozon.info/blogs/andrej/rsscomments.aspx?PostID=68258</wfw:comment><description>&lt;p&gt;Following my &lt;a href="http://tozon.info/blogs/andrej/archive/2008/07/29/Label.TargetProperty-as-a-Source.aspx"&gt;previous example&lt;/a&gt;, this is another experiment with the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.label.target.aspx" target="_blank"&gt;Label.Target&lt;/a&gt; property.&lt;/p&gt;  &lt;p&gt;Suppose you want to restrict user’s progression with data input on a form by disabling some crucial input fields, which input depends on some other fields on the form. There’s more than a couple of ways for doing this and the first solution that springs to mind would be doing it by employing business object data validation. But if you need a pure UI/XAML solution, this can be the alternative:&lt;/p&gt;  &lt;p&gt;&lt;img title="image" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="107" alt="image" src="http://tozon.info/images/blog/a938fb31fa8e_1418C/image.png" width="323" border="0" /&gt;&amp;#160; &lt;br /&gt;[&lt;a href="http://tozon.info/ant/ux/ux3a.xaml" target="_blank"&gt;See it live – loose Xaml page ahead&lt;/a&gt; ]&lt;/p&gt;  &lt;p&gt;What’s happening in the sample above – the second TextBox gets enabled only when the first TextBox is not empty. The same goes for the third box, except here’s the second box that has to have some text entered into it.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;This was done with the help of data triggers:&lt;/p&gt;  &lt;div&gt;   &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;     &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=firstBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_1st:&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;firstBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=secondBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_2nd:&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;secondBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox.Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TargetType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{x:Type TextBox}&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTrigger&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Binding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Path=Text.Length, ElementName=firstBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;           &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Setter&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Property&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;IsEnabled&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTrigger&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox.Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=thirdBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;3rd:&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;thirdBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox.Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TargetType&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{x:Type TextBox}&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTrigger&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Binding&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Path=Text.Length, ElementName=secondBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;           &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Setter&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Property&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;IsEnabled&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTrigger&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style.Triggers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox.Style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;There’s a lot of repetitive Xaml code above that can be put away by using a style and an attached property. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;[&lt;strong&gt;Note&lt;/strong&gt;: I’m going to hijack the Label.Target dependency property here just because it suits the needs for this sample - it’s not even registered as an attached property and this wouldn’t even compile in Visual Studio! In a real application you would want to produce a completely new attached property to avoid all potential troubles that may result from such (mis)use]&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As mentioned in the previous post, a Label.Target property can hold a reference to another control on the page. We’re going to use the property to point to the dependency source control:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;
    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=firstBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_1st:&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;firstBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=secondBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;_2nd:&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;secondBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;   &lt;span style="color:#ff0000;"&gt;Label&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=firstBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Target&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding ElementName=thirdBox}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Content&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;3rd:&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBox&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;thirdBox&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Column&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Grid&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Row&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;2&amp;quot;&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, m