<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">andyBlog [andy britcliffe]</title><subtitle type="html">Blogtastic</subtitle><id>http://blogs.msdn.com/andybrit/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/andybrit/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-02-02T13:29:13Z</updated><entry><title>Entering the world of Accelerators - Find it on TripAdvisor</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/08/28/entering-the-world-of-accelerators-find-it-on-tripadvisor.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/08/28/entering-the-world-of-accelerators-find-it-on-tripadvisor.aspx</id><published>2008-08-28T22:35:36Z</published><updated>2008-08-28T22:35:36Z</updated><content type="html">&lt;p&gt;So I thought it was time I built my own accelerator for &lt;a href="http://www.microsoft.com/ie8"&gt;IE8&lt;/a&gt; as, well the guys in the &lt;a href="http://www.microsoft.com/ie8"&gt;IE team&lt;/a&gt; have made it so easily surely even I can build one :-)&lt;/p&gt; &lt;p&gt;So I had a think about services I used, and quickly a favourite came to the top, after all who doesn't like going on holiday (that's vacation for my transatlantic colleagues and readers). So when searching around for a holiday I like to use TripAdvisor.com as the user reviews are great. &lt;/p&gt; &lt;p&gt;Now often my workflow goes something like this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Search GenericHolidaySite.com for a location I'm interested in  &lt;li&gt;Cope and paste that location into &lt;a href="http://www.tripadvisor.com/"&gt;TripAdvisor.com&lt;/a&gt; to see the hightest rated hotels.  &lt;li&gt;Go back to GenericHolidaySite.com and look at each of the hotel names in the results lists and cross reference them with &lt;a href="http://www.tripadvisor.com/"&gt;TripAdvisor.com&lt;/a&gt; ratings.  &lt;li&gt;After 3 hours I've found a good hotel but wasted too much time :-)&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So please step forward Find on TripAdvisor! accelerator. It took me all of 15 minutes to build this thanks to this on &lt;a href="http://msdn.microsoft.com/en-us/library/cc289775(VS.85).aspx"&gt;MSDN&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;For the interested out there here is my finished XML for my accelerator:&lt;/p&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="UTF-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:openServiceDescription&lt;/span&gt;
    &lt;span class="attr"&gt;xmlns:os&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.microsoft.com/schemas/openservicedescription/1.0"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:homepageUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.tripadvisor.com&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:homepageUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:display&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Find on TripAdvisor!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:name&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Get the inside scoop on that hotel or resort.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:description&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;http://www.tripadvisor.com/favicon.ico&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:icon&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:display&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:activity&lt;/span&gt; &lt;span class="attr"&gt;category&lt;/span&gt;&lt;span class="kwrd"&gt;="Travel"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:activityAction&lt;/span&gt; &lt;span class="attr"&gt;context&lt;/span&gt;&lt;span class="kwrd"&gt;="selection"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;      
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:execute&lt;/span&gt; &lt;span class="attr"&gt;action&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.tripadvisor.com/Search"&lt;/span&gt; &lt;span class="attr"&gt;method&lt;/span&gt;&lt;span class="kwrd"&gt;="get"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;os:parameter&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="q"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="{selection}"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:execute&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:activityAction&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:activity&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;os:openServiceDescription&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;and now my workflow is: &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;font face="tre"&gt;Search GenericHolidaySite.com for a location I'm interested in&lt;/font&gt;&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;&lt;font face="tre"&gt;Highlight the name of the hotel in the search results, right click and select Find on TripAdvisor!&lt;/font&gt;&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;&lt;font face="tre"&gt;Have a beer and look forward to the holiday!!!&lt;/font&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;You can get the Accelerator from &lt;a href="http://www.ieaddons.com/en/details/other/Find_on_TripAdvisor/"&gt;here&lt;/a&gt;. Have fun!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8904005" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="RIA" scheme="http://blogs.msdn.com/andybrit/archive/tags/RIA/default.aspx" /><category term="IE8" scheme="http://blogs.msdn.com/andybrit/archive/tags/IE8/default.aspx" /></entry><entry><title>IE8 Beta 2 hits the streets</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/08/27/ie8-beta-2-hits-the-streets.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/08/27/ie8-beta-2-hits-the-streets.aspx</id><published>2008-08-27T22:16:32Z</published><updated>2008-08-27T22:16:32Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2008/08/27/internet-explorer-8-beta-2-now-available.aspx"&gt;Details at the IE Blog here.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/windows/internet-explorer/download-ie.aspx"&gt;Download it here.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8901134" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="IE8" scheme="http://blogs.msdn.com/andybrit/archive/tags/IE8/default.aspx" /></entry><entry><title>Getting ready for IE8</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/06/18/getting-ready-for-ie8.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/06/18/getting-ready-for-ie8.aspx</id><published>2008-06-18T15:14:04Z</published><updated>2008-06-18T15:14:04Z</updated><content type="html">&lt;p&gt;With BillG announcing IE8 Beta 2's arrival in August &lt;a href="http://blogs.msdn.com/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx"&gt;Jefferson has a great post on the IE Blog&lt;/a&gt; explaining how to ensure your web apps correctly render with IE8. &lt;/p&gt; &lt;p&gt;I'd especially recommend &lt;u&gt;reading and understanding&lt;/u&gt; the explanation around &lt;em&gt;"X-UA-Compatible: IE=7"&lt;/em&gt; and &lt;em&gt;"X-UA-Compatible: IE=EmulateIE7"&lt;/em&gt; meta tags.&lt;/p&gt; &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8616119" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="IE8" scheme="http://blogs.msdn.com/andybrit/archive/tags/IE8/default.aspx" /></entry><entry><title>Detecting network activity with IE8 Beta 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/05/23/detecting-network-activity-with-ie8-beta-1.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/05/23/detecting-network-activity-with-ie8-beta-1.aspx</id><published>2008-05-23T22:18:26Z</published><updated>2008-05-23T22:18:26Z</updated><content type="html">&lt;p&gt;So I've been having a dig around the developer experience with the new &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx"&gt;IE8 beta 1&lt;/a&gt; we released back at &lt;a href="http://visitmix.com/2008/default.aspx"&gt;Mix 08&lt;/a&gt; and one of the cool features I've come across is genuine network connectivity detection.&lt;/p&gt; &lt;p&gt;Previously with IE you were only able to detect if the user had set IE to offline mode explicitly and would not be able to detect if a network connect was or wasn't present.&lt;/p&gt; &lt;p&gt;However this has now all changed as calling alert(window.navigator.onLine) will give you a honest true or false as to whether there is network connectivity. Added to this is that IE8 gives you a couple of event handlers to notify the browser (and hence you webpage) when the connectivity status changes.&lt;/p&gt; &lt;p&gt;Here is a very simple example of a basic web page with the handlers wired up to alert on change of connection status:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: #a31515"&gt;DOCTYPE &lt;/span&gt;&lt;span style="color: red"&gt;html PUBLIC &lt;/span&gt;&lt;span style="color: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;html &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.w3.org/1999/xhtml"&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Test IE8 Online/Offline notification&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;

    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text/javascript" &lt;/span&gt;&lt;span style="color: red"&gt;language&lt;/span&gt;&lt;span style="color: blue"&gt;="JavaScript"&amp;gt;    
        function &lt;/span&gt;offline()
        {
            alert(&lt;span style="color: #a31515"&gt;"offline with IE8"&lt;/span&gt;);
        }
        
        &lt;span style="color: blue"&gt;function &lt;/span&gt;online()
        {
            alert(&lt;span style="color: #a31515"&gt;"online with IE8"&lt;/span&gt;);
        }  
    &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;

&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;head&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;body &lt;/span&gt;&lt;span style="color: red"&gt;onoffline&lt;/span&gt;&lt;span style="color: blue"&gt;="offline()" &lt;/span&gt;&lt;span style="color: red"&gt;ononline&lt;/span&gt;&lt;span style="color: blue"&gt;="online()"&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Disconnect and reconnect your network to see the alert status&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;body&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;html&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8540988" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Javascript" scheme="http://blogs.msdn.com/andybrit/archive/tags/Javascript/default.aspx" /><category term="RIA" scheme="http://blogs.msdn.com/andybrit/archive/tags/RIA/default.aspx" /><category term="IE8" scheme="http://blogs.msdn.com/andybrit/archive/tags/IE8/default.aspx" /></entry><entry><title>Silverlight 2: Generate Images on the fly</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/04/23/silverlight-2-generate-images-on-the-fly.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/04/23/silverlight-2-generate-images-on-the-fly.aspx</id><published>2008-04-23T18:56:17Z</published><updated>2008-04-23T18:56:17Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/jstegman"&gt;Joe Stegman&lt;/a&gt; has been hard at work making this happen and has now released an initial version of his &lt;a href="http://blogs.msdn.com/jstegman/archive/2008/04/21/dynamic-image-generation-in-silverlight.aspx"&gt;PNG image generator here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Very cool - Great work Joe!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8419306" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight+2/default.aspx" /></entry><entry><title>Silverlight 2: Web Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/03/25/silverlight-2-web-services.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/03/25/silverlight-2-web-services.aspx</id><published>2008-03-25T17:38:48Z</published><updated>2008-03-25T17:38:48Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/silverlightws/"&gt;The product team have just fired up a blog on this topic.&lt;/a&gt; Worth adding to your favourite feed reader.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8335908" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight+2/default.aspx" /><category term="Web Services" scheme="http://blogs.msdn.com/andybrit/archive/tags/Web+Services/default.aspx" /></entry><entry><title>Silverlight 2: accessing default control templates</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/03/25/silverlight-2-accessing-default-control-templates.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/03/25/silverlight-2-accessing-default-control-templates.aspx</id><published>2008-03-25T17:11:49Z</published><updated>2008-03-25T17:11:49Z</updated><content type="html">&lt;p&gt;As you dig deeper with Silverlight 2 you will start to want to customise some of the built in controls. Now a nice way to start working with a new style I've found in WPF land is begin with the default template in place and then tweak from there. Now in WPF this is really easy to do with Blend but in SL 2 it's currently a little more involved by either &lt;a href="http://www.aisto.com/roeder/dotnet/Download.aspx?File=Reflector"&gt;reflectoring&lt;/a&gt; the Silverlight Controls dll and examining the generic.xaml resource or by accessing the styles on MSDN &lt;a href="http://msdn2.microsoft.com/en-us/library/cc278075(vs.95).aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;However a neat alternative is a very cool &lt;a href="http://blogs.msdn.com/delay/archive/2008/03/22/improved-access-to-silverlight-2-s-generic-xaml-resources-silverlightdefaultstylebrowser-available-via-clickonce.aspx"&gt;WPF tool over at Delay's blog&lt;/a&gt; that gives you access to these templates - handy stuff!! &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8335875" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author></entry><entry><title>Silverlight 2 ListBox, ListBoxItem, ScrollViewer, and ScrollContentPresenter - from the horses mouth.</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/03/06/silverlight-2-listbox-listboxitem-scrollviewer-and-scrollcontentpresenter-from-the-horses-mouth.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/03/06/silverlight-2-listbox-listboxitem-scrollviewer-and-scrollcontentpresenter-from-the-horses-mouth.aspx</id><published>2008-03-06T20:52:32Z</published><updated>2008-03-06T20:52:32Z</updated><content type="html">&lt;p&gt;If you're &lt;a href="http://silverlight.net/GetStarted/#betajump"&gt;digging into Silverlight 2&lt;/a&gt; and the controls available then you should check out &lt;a href="http://blogs.msdn.com/delay/default.aspx"&gt;Delay's blog&lt;/a&gt; as he has &lt;a href="http://blogs.msdn.com/delay/archive/2008/03/05/lb-sv-faq-examples-notes-tips-and-more-for-silverlight-2-beta-1-s-listbox-and-scrollviewer-controls.aspx"&gt;produced a great FAQ/notes post&lt;/a&gt; on the controls he was working on for Silverlight 2 Beta 1. &lt;/p&gt; &lt;p&gt;Well worth a read.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8074943" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight+2/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight/default.aspx" /><category term="Controls" scheme="http://blogs.msdn.com/andybrit/archive/tags/Controls/default.aspx" /></entry><entry><title>Using ObservableCollections and DataBinding with Silverlight 2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/03/05/1-22-2008-using-observablecollections-and-databinding-with-silverlight-2.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/03/05/1-22-2008-using-observablecollections-and-databinding-with-silverlight-2.aspx</id><published>2008-03-05T14:00:07Z</published><updated>2008-03-05T14:00:07Z</updated><content type="html">&lt;p&gt;So hot on the heels of the announcement of Silverlight 2 Beta 1 at &lt;a href="http://visitmix.com/2008/default.aspx"&gt;Mix08&lt;/a&gt; I wanted to show you two of the coolest features (in my opinion) available to you now to play with. New to the feature set of Silverlight 2 is DataBinding and Observable Collections. For those of you who are familiar with WPF you will be well aware of the benefits of the two features mentioned.&amp;nbsp; For those not, there is a nice article &lt;a href="http://blah.winsmarts.com/2007-1-WPF__DataBinding.aspx"&gt;here&lt;/a&gt; that explains in more detail.  &lt;p&gt;I really wanted to explore these in Silverlight so I've produced a simple code example that shows the use of these two features in the Beta 1 release. I really think it gives a very powerful indication of the direction of Silverlight and also the possibilities for creating truly Rich Internet Applications. It also demonstrates the goal of the product team to really have a WPF feature set in Silverlight.  &lt;p&gt;The demo contains an ItemsControl that is declaratively data bound to a ObservableCollection of strings. The example then shows that directly manipulating the collection (adding/removing items) is automagically reflected in the UI without the need to touch any of the user interface or binding mechanism. If you've lived in the world of AJAX development you should immediately see the power of this compared to a trying to do this kind of behaviour through JavaScript.  &lt;p&gt;So we start by defining a StackPanel containing an ItemsControl which will display our collection and apply the Data Binding syntax in our Xaml.  &lt;p&gt;&amp;lt;UserControl x:Class="BindingAndCollectionsEx.Page"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;a href="http://schemas.microsoft.com/client/2007&amp;quot;"&gt;http://schemas.microsoft.com/client/2007"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x="&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;"&gt;http://schemas.microsoft.com/winfx/2006/xaml"&lt;/a&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Width="400" Height="300"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemsControl x:Name="itemsControl"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ItemsControl.ItemTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DataTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextBlock Text="{Binding}" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/DataTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemsControl.ItemTemplate&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ItemsControl&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button Width="100" Height="50" Background="RoyalBlue" MouseLeftButtonDown="Rectangle_MouseLeftButtonDown" Content="Click" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt;&lt;br&gt;&amp;lt;/UserControl&amp;gt;  &lt;p&gt;Then in our code behind we create our collection and set the ItemsControl source to the collection and the declare the mouse click event to add items to the collection.&lt;/p&gt; &lt;p&gt;public partial class Page : UserControl&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ObservableCollection&amp;lt;string&amp;gt; collection = new ObservableCollection&amp;lt;string&amp;gt;(); &lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Page()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Loaded += new RoutedEventHandler(Page_Loaded);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Handles the Loaded event of the Page control.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="sender"&amp;gt;The source of the event.&amp;lt;/param&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="e"&amp;gt;The &amp;lt;see cref="System.Windows.RoutedEventArgs"/&amp;gt; instance containing the event data.&amp;lt;/param&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Page_Loaded(object sender, RoutedEventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.collection.Add("One");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.collection.Add("Two");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.collection.Add("Three");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.collection.Add("Four");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.collection.Add("Five");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.itemsControl.ItemsSource = collection;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Handles the MouseLeftButtonDown event of the Button control.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="sender"&amp;gt;The source of the event.&amp;lt;/param&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="e"&amp;gt;The &amp;lt;see cref="System.Windows.Input.MouseButtonEventArgs"/&amp;gt; instance containing the event data.&amp;lt;/param&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collection.Remove("Five");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collection.Insert(1, "--&amp;gt; inserted");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; collection.Add("--&amp;gt; added");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;If you run the project you will see the string collection displayed that is bound to the ItemsCollection control and a button.  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/1222008UsingObservableCollectionsanddata_CA0A/collecitons_screengrab_before_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="213" alt="collecitons_screengrab_before" src="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/1222008UsingObservableCollectionsanddata_CA0A/collecitons_screengrab_before_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Pressing the button will remove an item, insert an item at the start and add an item at the end. Notice you do nothing to the UI, all you are doing is manipulating the ObservableCollection that is bound. The result is the UI reflecting the changes in the collection:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/1222008UsingObservableCollectionsanddata_CA0A/collecitons_screengrab_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="213" alt="collecitons_screengrab" src="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/1222008UsingObservableCollectionsanddata_CA0A/collecitons_screengrab_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Powerful stuff I'm sure you will agree!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8037491" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Javascript" scheme="http://blogs.msdn.com/andybrit/archive/tags/Javascript/default.aspx" /><category term="Silverlight 2" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight+2/default.aspx" /><category term="DataBinding" scheme="http://blogs.msdn.com/andybrit/archive/tags/DataBinding/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight/default.aspx" /><category term="RIA" scheme="http://blogs.msdn.com/andybrit/archive/tags/RIA/default.aspx" /></entry><entry><title>Nokia + Silverlight = Mobile RIA</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/03/05/nokia-silverlight-mobile-ria.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/03/05/nokia-silverlight-mobile-ria.aspx</id><published>2008-03-05T03:33:55Z</published><updated>2008-03-05T03:33:55Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.nokia.com/A4136001?newsid=1197788"&gt;Nokia have announced&lt;/a&gt; they are adopting &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; for the S60 on the &lt;strong&gt;symbian operating system&lt;/strong&gt; as well as for Series 40 devices and Nokia Internet tablets. This is great news for the adoption of &lt;a href="http://www.silverlight.net"&gt;Silverlight&lt;/a&gt; and pushes the possibilities of mobile development forward, and of course kicks off what should be an exciting next few days of &lt;a href="http://visitmix.com/"&gt;Silverlight announcements&lt;/a&gt;!!!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8039368" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight+2/default.aspx" /><category term="Nokia" scheme="http://blogs.msdn.com/andybrit/archive/tags/Nokia/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/andybrit/archive/tags/Silverlight/default.aspx" /><category term="RIA" scheme="http://blogs.msdn.com/andybrit/archive/tags/RIA/default.aspx" /><category term="Mobile" scheme="http://blogs.msdn.com/andybrit/archive/tags/Mobile/default.aspx" /></entry><entry><title>Develop on Virtual Earth with Intellisense support</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/02/26/develop-on-virtual-earth-with-intellisense-support.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/02/26/develop-on-virtual-earth-with-intellisense-support.aspx</id><published>2008-02-26T20:20:53Z</published><updated>2008-02-26T20:20:53Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/devkeydet/archive/2008/02/26/javascript-intellisense-for-the-virtual-earth-map-control.aspx"&gt;Marc Schweigert&lt;/a&gt; has created a great new project on &lt;a href="http://codeplex.com/"&gt;CodePlex&lt;/a&gt; that allows you to get JavaScript Intellisense for the Virtual Earth Map Control in Visual Studio 2008.&lt;/p&gt; &lt;p&gt;He's created a great &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=386000"&gt;screen cast here&lt;/a&gt; to get you started and the project &lt;a href="http://codeplex.com/vejs"&gt;can be found here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Have fun.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7906915" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="Javascript" scheme="http://blogs.msdn.com/andybrit/archive/tags/Javascript/default.aspx" /><category term="Virtual Earth" scheme="http://blogs.msdn.com/andybrit/archive/tags/Virtual+Earth/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/andybrit/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Joining the world of MSDN Blogs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/andybrit/archive/2008/02/02/joining-the-world-of-msdn-blogs.aspx" /><id>http://blogs.msdn.com/andybrit/archive/2008/02/02/joining-the-world-of-msdn-blogs.aspx</id><published>2008-02-02T16:29:13Z</published><updated>2008-02-02T16:29:13Z</updated><content type="html">&lt;p&gt;So this is my first post so I thought I'd post a brief bio so you can get to know me a little better. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/JoiningtheworldofMSDNBlogs_BD96/ab_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="ab" src="http://blogs.msdn.com/blogfiles/andybrit/WindowsLiveWriter/JoiningtheworldofMSDNBlogs_BD96/ab_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I've recently joined Microsoft in the UK as a Consultant in the Delivery Developer team. Day to day you'll find me in the depths of .Net, C# and with a focus on WPF, Silverlight and asp.net building out solutions for our many clients. &lt;/p&gt; &lt;p&gt;As a general rule of thumb you can expect the content on here to reflect those topics, however I am also interested in general engineering practices and also Internet startups so I may stray off track now and again if I think it's interesting.&lt;/p&gt; &lt;p&gt;I hope it will be of interest.&lt;/p&gt; &lt;p&gt;Andy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7391034" width="1" height="1"&gt;</content><author><name>andybrit</name><uri>http://blogs.msdn.com/members/andybrit.aspx</uri></author><category term="General" scheme="http://blogs.msdn.com/andybrit/archive/tags/General/default.aspx" /></entry></feed>