<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Adam Kinney posts tagged with 'silverlight'</title><description>Adam Kinney blog posts filtered by a specific tag</description><link>http://adamkinney.com/blog/tags/silverlight/default.aspx</link><language>en-us</language><pubDate>Sat, 19 Jul 2008 19:04:42 GMT</pubDate><generator>Oxite</generator><item><title>Yosemite Deep Zoom project from xRez is now live</title><description>&lt;p&gt;Last week the &lt;a href="http://adamkinney.com/blog/345/default.aspx"&gt;xRez Yosemite project on Surface was revealed&lt;/a&gt; and now this week the &lt;a href="http://www.xrez.com/yose_proj/Yose_result.html"&gt;Silverlight Deep Zoom version is live&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I've added a few screenshots below to give an idea of the of the experience, but of course, it doesn't even come to close to trying &lt;a href="http://www.xrez.com/yose_proj/Yose_result.html"&gt;the xRez site&lt;/a&gt; yourself.&lt;/p&gt;  &lt;p&gt;Deep Zoom has caught on rather quickly as one of the hottest features of Silverlight (&lt;a href="http://www.diigo.com/list/adamkinney/deep-zoom-sites"&gt;Deep Zoom Sites examples&lt;/a&gt;), but this is one of the first sites I've seen with so many pixels to share.&amp;#160; 45 gigapixels of Yosemite Park are available on the site.&amp;#160; Truly awesome stuff.&amp;#160; I can't wait to see more projects like this.&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2678051266/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3107/2678051266_047a1db427.jpg" width="500" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2678051520/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3010/2678051520_de3f5a2e33.jpg" width="500" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2678051824/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3259/2678051824_5a348b28b2.jpg" width="500" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2678052300/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3135/2678052300_8699a543cd.jpg" width="500" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2677237475/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3137/2677237475_b5b49126ab.jpg" width="500" height="356" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Screenshots from xRez Yosemite site by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2677237989/"&gt;&lt;img alt="Screenshots from xRez Yosemite site" src="http://farm4.static.flickr.com/3111/2677237989_c5bea69009.jpg" width="500" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Great job &lt;a href="http://www.xrez.com"&gt;xRez&lt;/a&gt; and &lt;a href="http://labs.live.com/"&gt;Live Labs&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;&lt;img src="http://adamkinney.com/images/blog/xrezsig.jpg" /&gt;&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/347/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/347/default.aspx</comments><link>http://adamkinney.com/blog/347/default.aspx</link><pubDate>Thu, 17 Jul 2008 19:17:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/347/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/347/trackback/default.aspx</trackback:ping><category>Silverlight</category><category>visualization</category></item><item><title>Animation Hands On lab for Silverlight 2</title><description>&lt;p&gt;&lt;img src="http://adamkinney.com/images/blog/animorangeship.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;This Hands On lab was originally written for a training event we held last month.&amp;#160; While I'm guessing we'll post in some official fashion in the future I thought why not share it in the meantime.&lt;/p&gt;  &lt;p&gt;The Lab is made up of four sections:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Animation API overview&lt;/strong&gt; - a general look at the concepts behind the Animation API including Storyboards, Keyframes and Object Animations. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Using Blend to Design Animations &lt;/strong&gt;- I hold your hand through creating your first animation Blend including which button to push and when.&amp;#160; Screenshots of the buttons are inline with the text.&amp;#160; &lt;a href="http://www.edwardtufte.com/tufte/"&gt;Tufte&lt;/a&gt; would be proud. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Reusing Storyboards&lt;/strong&gt; - This section demonstrates how to use C# code to reuse Storyboards once they've run. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;The Empty Storyboard pattern&lt;/strong&gt; - I posted about the &lt;a href="http://adamkinney.com/blog/339/default.aspx"&gt;empty storyboard pattern before&lt;/a&gt; and this section walks you through the concept and the code. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-1e3310e77ddfeb1b.skydrive.live.com/embedrowdetail.aspx/Silverlight%202%20Beta%202%20Training%20Lab/Animations%20in%20Silverlight.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;I'm a lot happier with this one over the last &lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Dynamic%20Animations.zip"&gt;Animations Lab from MIX08&lt;/a&gt;.&amp;#160; That one was very &amp;quot;copy and past this here, now hit F5, and watch some thing move that you don't understand&amp;quot;.&amp;#160; Additionally the Animation API has improved quite a bit from Beta 1 to Beta 2.&lt;/p&gt;  &lt;p&gt;If you're already into Animations in Silverlight this may be review, but if you're just getting started this should be a helpful primer.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/346/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/346/default.aspx</comments><link>http://adamkinney.com/blog/346/default.aspx</link><pubDate>Fri, 11 Jul 2008 01:06:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/346/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://adamkinney.com/blog/346/trackback/default.aspx</trackback:ping><category>animation</category><category>Silverlight</category></item><item><title>Extreme Panoramic Project on Surface and Silverlight</title><description>&lt;p&gt;Thanks to Scoble for posting the great &lt;a href="http://qik.com/video/125418"&gt;xRez Studio - extreme pano project&lt;/a&gt; video today.&amp;#160; The project itself is interesting and the deliver is the frosting on the cake.&lt;/p&gt;  &lt;p&gt;70 photographers hiking through Yosemite Park, toting robotic cameras, and positioned by GPS coordinates.&amp;#160; They then synchronize their shot taking via radio and in 40 minutes they have 10,000 photos of the park.&amp;#160; More details can be found on the &lt;a href="http://www.xrez.com/yose_proj/Yose_idea.html"&gt;Yosemite Extreme Panoramic Project site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;How could you possibly display all of the photos in a usable and effective way?&lt;/p&gt;  &lt;p&gt;*cue &lt;a href="http://labs.live.com/Seadragon.aspx"&gt;SeaDragon&lt;/a&gt; music*&lt;/p&gt; &lt;a title="Screenshots from teh xRez Surface video by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2653446153/"&gt;&lt;img height="125" alt="Screenshots from teh xRez Surface video" src="http://farm4.static.flickr.com/3241/2653446153_7429d9529d.jpg" width="500" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;a href="http://qik.com/video/125418"&gt;Scoble interviews&lt;/a&gt; two of the members of the xRez team Eric Hansen and Greg Downing, while they explain the project and demo the application.&amp;#160; Photos are overlayed on top of the shooting location map which is displayed in panoramic, multi-touch zooming goodness.&lt;/p&gt;  &lt;p&gt;The video gives you an idea of the interaction of the application and the depth of detail available in each of the panoramas.&amp;#160; Since it did come from Scoble's phone though, the quality isn't real high.&amp;#160; For an idea of what the photos actually look like you can check out their &lt;a href="http://www.flickr.com/groups/xrez_yosemite/pool/"&gt;xRez Yosemite Shoot photo pool&lt;/a&gt; on flickr.&lt;/p&gt;  &lt;p&gt;Towards the end of the film Greg mentions that there will be an online version available soon via Silverlight.&amp;#160; I'll definitely be keeping an eye out for that.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/345/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/345/default.aspx</comments><link>http://adamkinney.com/blog/345/default.aspx</link><pubDate>Wed, 09 Jul 2008 23:18:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/345/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/345/trackback/default.aspx</trackback:ping><category>photos</category><category>Silverlight</category><category>Surface</category></item><item><title>Two new Silverlight Contests</title><description>&lt;p style="float: right; margin-bottom: 10px; argin-left: 10px"&gt;&lt;a href="http://gosilverlight.org"&gt;&lt;img src="http://gosilverlight.org/images/badges/stacked_small_slbc_08.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The first contest is the &lt;a href="http://gosilverlight.org"&gt;Silverlight Control Builder Contest&lt;/a&gt; put on by a few people you might know &lt;a href="http://www.pagebrooks.com/"&gt;Page Brooks&lt;/a&gt; and Silverlight Cream's &lt;a href="http://www.wynapse.com/"&gt;David Campbell&lt;/a&gt;. Custom controls submitted will be judged on their usefulness, creativity, experience and how easy they are to template.&lt;/p&gt;  &lt;p&gt;And the big bonus is that all controls submitted will be made available as open source and free to reuse.&lt;/p&gt;  &lt;p&gt;For a jumpstart on creating your own awesome controls, I've posted &lt;a href="http://adamkinney.com/blog/343/default.aspx"&gt;the code for a simple HelloWorld custom control&lt;/a&gt; that demonstrates the basic architecture.&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;Sans fancy logo, there is also a &lt;a href="http://michaelsync.net/2008/06/11/contest-write-an-article-about-silverlight-2-beta2-and-win-silverlight-2-in-action-ebook"&gt;Silverlight Article Competition&lt;/a&gt; going on where the prize is a e-book copy of the new &lt;a href="http://www.manning.com/campbell/"&gt;Silverlight 2 in Action book&lt;/a&gt;.&amp;#160; So basically, if you write one worthy article on Silverlight 2, you will get a return of 12 chapters of Silverlight 2 goodness.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Good luck to all those who enter in either contest!&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/344/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/344/default.aspx</comments><link>http://adamkinney.com/blog/344/default.aspx</link><pubDate>Mon, 30 Jun 2008 21:28:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/344/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://adamkinney.com/blog/344/trackback/default.aspx</trackback:ping><category>controls</category><category>Silverlight</category></item><item><title>Building a Simple Custom Control in Silverlight 2</title><description>&lt;p&gt;With the recent announcement of the &lt;a href="http://gosilverlight.org/"&gt;Silverlight Controls Builder Contest&lt;/a&gt;, I thought it may be useful to post code that creates a very simple custom control.&amp;#160; &lt;/p&gt;  &lt;p&gt;The example I'm posting isn't even worth a screenshot as all the control does is render the text &amp;quot;Hello &lt;em&gt;property_value_here&lt;/em&gt;&amp;quot;.&amp;#160; Something like:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="3"&gt;Hello Gilbert&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The value of the sample is that it provides code and architecture to demonstrate the basics of creating a simple control. A few items to note:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The control lives in a separate assembly as the application &lt;/li&gt;    &lt;li&gt;The generic.xaml file is used to define the default template of the control &lt;/li&gt;    &lt;li&gt;DefaultStyleKey must be set in order for your control to show up without a custom template defined &lt;/li&gt;    &lt;li&gt;A DependencyProperty is used to enable animation and binding &lt;/li&gt;    &lt;li&gt;You can change the value by entering text in the TextBlock and clicking the button. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;iframe style="border-right: #dde5e9 1px solid; padding-right: 0px; border-top: #dde5e9 1px solid; padding-left: 0px; padding-bottom: 0px; margin: 3px; border-left: #dde5e9 1px solid; width: 240px; padding-top: 0px; border-bottom: #dde5e9 1px solid; height: 66px; background-color: #ffffff" marginwidth="0" marginheight="0" src="http://cid-1e3310e77ddfeb1b.skydrive.live.com/embedrowdetail.aspx/Silverlight/HelloControl.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;For a deeper look at creating custom controls I would recommend Karen Corby's 4 part &lt;a href="http://scorbs.com/2008/06/25/parts-states-model-with-visualstatemanager-part-4-of-4/"&gt;Parts &amp;amp; States Model with VisualStateManager&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/343/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/343/default.aspx</comments><link>http://adamkinney.com/blog/343/default.aspx</link><pubDate>Mon, 30 Jun 2008 21:19:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/343/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/343/trackback/default.aspx</trackback:ping><category>controls</category><category>Silverlight</category></item><item><title>Xbox Gamercard updated for Silverlight 2 Beta 2</title><description>&lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a title="Xbox Friends Watch Gamercard by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2386366218/"&gt;&lt;img height="166" alt="Xbox Friends Watch Gamercard" src="http://farm3.static.flickr.com/2249/2386366218_e7a0b20b81_o.png" width="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;After a few changes the &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Xbox Friends Watch Gamercard&lt;/a&gt; now runs on Beta 2.&amp;#160; The few changes I had to make included&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;updating the project file in Visual Studio to match Beta 2&lt;/li&gt;    &lt;li&gt;Adding System.Net as a reference since the WebClient class has moved there&lt;/li&gt;    &lt;li&gt;Changing Storyboard.GetClockState to &lt;em&gt;AnimationInstance&lt;/em&gt;.GetCurrentState to match the API update.&lt;/li&gt;    &lt;li&gt;Moving from ToolTips to the ToolTipService on the HyperlinkButtons.&lt;/li&gt;    &lt;li&gt;Changing MouseLeftButtonDown event handlers to handle the Click event on Buttons, now that MouseLeftButtonDown event no longer fire.&lt;/li&gt;    &lt;li&gt;The final change had to do with adding a setting in the AppManifest.xml to allow the XAP to be hosted on a different server than the page its embedded on and still make the cross domain call.&amp;#160; Emil Stoychev has more detail about the &lt;a href="http://www.silverlightshow.net/items/Silverlight-X-Domain-Scenario.aspx"&gt;X-Domain Scenario on SilverlightShow&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Get your own &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Gamercard on the script builder page&lt;/a&gt;.&amp;#160; Even if you already have the Gamercard on your page, you will still need to update your embed code to reflect the new changes.&lt;/p&gt;  &lt;p&gt;Now to find the time to play the Xbox...&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/342/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/342/default.aspx</comments><link>http://adamkinney.com/blog/342/default.aspx</link><pubDate>Thu, 26 Jun 2008 18:34:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/342/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>6</slash:comments><trackback:ping>http://adamkinney.com/blog/342/trackback/default.aspx</trackback:ping><category>demo</category><category>gaming</category><category>Silverlight</category><category>Xbox</category><category>XboxFriendsWatch</category></item><item><title>Tweening Equations for Silverlight</title><description>&lt;p&gt;I remember the days back on the were-here forums (now sadly defunct) when there was this guy who went by the alias rpenner and he schooled us all in math and showed us how to do very cool things in ActionScript.&amp;#160; &lt;a href="http://www.robertpenner.com"&gt;Robert Penner&lt;/a&gt;'s equations have been perfected, &lt;a href="http://www.robertpenner.com/easing/"&gt;published&lt;/a&gt; and &lt;a href="http://thewpfblog.com/?p=12"&gt;translated&lt;/a&gt; to C#.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://thewpfblog.com/?p=12"&gt;Lee Brimelow originally translated the equations&lt;/a&gt; to C# for use in WPF and the beauty of Silverlight being a subset of WPF is that the same equations work just as well.&amp;#160; (The only small change needed was to remove the reference to an unused default library System.Windows.Navigation).&lt;/p&gt;  &lt;p&gt;I've been focused quite a bit lately on how best to &lt;a href="http://adamkinney.com/blog/339/default.aspx"&gt;do dynamic animations in Silverlight&lt;/a&gt; and after seeing &lt;a href="http://coreysportfolio.com/post/2008/06/More-fun-with-Silverlight-2-Beta-2-Empty-Storyboards.aspx"&gt;Corey Miller's tweening sample&lt;/a&gt; based on Penner's equations, I was energized to go find the library and apply it in Silverlight.&lt;/p&gt;  &lt;p&gt;This first part was easy, since Lee (Thanks man!) had already done the translation.&amp;#160; The second part was then applying the equations using the Empty Storyboard method for Silverlight.&amp;#160; As a result, I've come up a few different code samples:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/WPFPenner/source.zip"&gt;WPFPenner.cs&lt;/a&gt;&lt;/strong&gt; - This is the original C# translation, minus the WPF only library reference.&amp;#160; I've also added an enum of the easing types, which I use for reference in another sample.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/tweeningtest/source.zip"&gt;TweeningTest&lt;/a&gt;&lt;/strong&gt; - A very basic application that demonstrates the usage of an equation in code.&amp;#160; Two methods of modifying the position of element are shown, both TranslateTransform and Canvas Left and Top.&amp;#160; The TranslateTransform is nice because it works within the Grid as well as the Canvas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/offtotheraces/source.zip"&gt;OffToTheRaces&lt;/a&gt;&lt;/strong&gt; - This is a simple application that can be used to preview the different easing types.&amp;#160; Its a bit of an extreme sample since the easings are dynamic, but you can make the horses run and then randomize them to bring up new horses.&amp;#160; You can also check out Robert Penner's original &lt;a href="http://www.robertpenner.com/easing/easing_demo.html"&gt;Equations Visualizer&lt;/a&gt; to get an idea of the equations.&lt;/p&gt;  &lt;p&gt;&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="500" height="300"&gt; 			&lt;param name="source" value="http://adamkinney.com/studios/dynamicart/offtotheraces/OffToTheRaces.xap" /&gt; 			&lt;param name="background" value="white" /&gt; 			 			&lt;a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;"&gt;      			&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; 			&lt;/a&gt; 		&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;Moving beyond the basic Linear equation for animation can greatly enhance the experience you create.&amp;#160; The easier we can make it do this the better and I think the equations are a good start.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/341/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/341/default.aspx</comments><link>http://adamkinney.com/blog/341/default.aspx</link><pubDate>Wed, 25 Jun 2008 09:21:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/341/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>5</slash:comments><trackback:ping>http://adamkinney.com/blog/341/trackback/default.aspx</trackback:ping><category>animation</category><category>Silverlight</category></item><item><title>Procedural Animation in Silverlight 2</title><description>&lt;p&gt;After some research, I'm recommending the use of Empty Storyboards for procedural animations.&lt;/p&gt;  &lt;p&gt;What is an &amp;quot;Empty Storyboard&amp;quot;?&amp;#160; It is a Storyboard with no animations or specific target that simulates a game loop or per frame callback by having a short duration and once its Completed it Begins itself again.&lt;/p&gt;  &lt;p&gt;A simple example looks like this in C#:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;Storyboard timer = new Storyboard();      &lt;br /&gt;timer.Duration = TimeSpan.FromMilliseconds(500);       &lt;br /&gt;timer.Completed += new EventHandler(timer_Completed);       &lt;br /&gt;timer.Begin();&lt;/p&gt;    &lt;p&gt;void timer_Completed(object sender, EventArgs e){      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (conditionToKeepGoing)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; timer.Begin();       &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;The other two options include the DispatcherTimer, which is not suitable for this type of quick ticking, and Storyboards with defined Targets and Animations.&lt;/p&gt;  &lt;p&gt;Modifying Animation values at run-time does work smoothly and as expected.&amp;#160; But you are limiting your flexibility by tying every Target property that's animated to a matching Animation instance.&amp;#160; With an Empty Storyboard you are free to modify any property based on your calculations.&lt;/p&gt;  &lt;p&gt;A combination of the two Storyboard method will most likely end up becoming the most powerful pattern.&amp;#160; During the game loop, within the empty Storyboard you can calculate your scene and when a different state is desired, you can call into an object's prepared routines or Storyboards with linked Animations.&lt;/p&gt;  &lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/hellobeta2/"&gt;&lt;img src="http://adamkinney.com/studios/dynamicart/hellobeta2/ss.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I've modified the original &lt;a href="http://adamkinney.com/blog/336/default.aspx"&gt;HelloBeta2&lt;/a&gt; to use an Empty Storyboard and there is commented out code which adds a Storyboard to each Line as its drawn that moves its second point after initial placement.&amp;#160; This simulates the &amp;quot;known routine&amp;quot; idea, and I could easily update the new location for the second point at run-time.&lt;/p&gt;  &lt;p&gt;I've also added a StrokeWidth loop and DashArray, but that was just for my own entertainment.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/hellobeta2/"&gt;See the Procedural Animation sample run&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://adamkinney.com/studios/dynamicart/hellobeta2/hellobeta2.zip"&gt;Grab the source code&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://adamkinney.com/blog/339/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/339/default.aspx</comments><link>http://adamkinney.com/blog/339/default.aspx</link><pubDate>Wed, 18 Jun 2008 09:49:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/339/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>7</slash:comments><trackback:ping>http://adamkinney.com/blog/339/trackback/default.aspx</trackback:ping><category>animation</category><category>Silverlight</category></item><item><title>3rd party Silverlight controls</title><description>&lt;p&gt;This is a list of all the 3rd Party controls that have demos or samples running on the latest version of Silverlight.&lt;/p&gt; &lt;style type="text/css"&gt;

	#vendors tr td{border-bottom:dotted 1px #a4a4a4}&lt;/style&gt;  &lt;table id="vendors" cellspacing="0" cellpadding="6" width="500" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://labs.componentone.com/Sapphire/"&gt;ComponentOne&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;A full suite of components including custom layout panels, menus, treeview, textboxes, charts and more. &lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://labs.componentone.com/Sapphire/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_componentone.jpg" /&gt;&lt;/a&gt; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.devexpress.com/Products/NET/Components/Silverlight/Grid/"&gt;DevExpress&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;A free datagrid with grouping, sorting, resizing, template support, multi-row selection and more.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.devexpress.com/Products/NET/Components/Silverlight/Grid/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_devexpress.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.infragistics.com/hot/silverlight.aspx"&gt;Infragistics&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;A large collection of charts and gauges for data visualization.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.infragistics.com/hot/silverlight.aspx"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_infragistics.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://intersoftpt.com/WebAqua/"&gt;Intersoft&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;Two alternative controls to the standard menu, FishEye and CoverFlow.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://intersoftpt.com/WebAqua/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_intersoft.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://community.netikatech.com/demos/"&gt;NETiKA Tech&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;An implementation of the standard Windows Forms control library, developed as Windows Forms Applications and run as Silverlight applications.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://community.netikatech.com/demos/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_netikatech.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.telerik.com/products/silverlight/"&gt;Telerik&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;A full suite of components including menus, tabcontrols, treeviews, mediaplayer, progressbar and more. &lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.telerik.com/products/silverlight/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_telerik.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://www.visifire.com/"&gt;Visifire&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;A large collection of open source data visualization components.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://www.visifire.com/"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_visifire.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;a href="http://xceed.com/Upload_Silverlight_Intro.html"&gt;Xceed&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top"&gt;An asynchronous, multiple file upload control with data compression.&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://xceed.com/Upload_Silverlight_Intro.html"&gt;&lt;img src="http://adamkinney.com/images/blog/slcv_xceed.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I'll keep this page up to date as Silverlight evolves and control offerings grow.&lt;/p&gt;  &lt;p&gt;Silverlight 2 has just hit Beta 2 and they are already some really nice offerings available.&amp;#160; Take a minute and check out some of the cool demo applications on each site that show off the controls.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/338/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/338/default.aspx</comments><link>http://adamkinney.com/blog/338/default.aspx</link><pubDate>Tue, 17 Jun 2008 00:43:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/338/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/338/trackback/default.aspx</trackback:ping><category>controls</category><category>Silverlight</category></item><item><title>Hello Silverlight Beta 2</title><description>&lt;p&gt;&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="500" height="500"&gt;&lt;param name="source" value="http://adamkinney.com/studios/HelloBeta2/HelloBeta2.xap" /&gt;&lt;param name="background" value="black" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /&gt; &lt;/a&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;So &lt;a href="http://silverlight.net/GetStarted/"&gt;nice to see you&lt;/a&gt; out in the wild!&lt;/p&gt;  &lt;p&gt;Dave Campbell has &lt;a href="http://geekswithblogs.net/WynApseTechnicalMusings/archive/2008/06/07/122695.aspx"&gt;a nice list of Beta 2 blog posts&lt;/a&gt; to read ranging from a &lt;a href="http://joel.neubeck.net/2008/06/silverlight-2-game-framework-example/"&gt;Silverlight 2 Game Framework&lt;/a&gt; to &lt;a href="http://adoguy.com/2008/06/06/What_s_Changed_in_Silverlight_2_Beta_2.aspx"&gt;What's changed in Beta 2&lt;/a&gt; to &lt;a href="http://blogs.msdn.com/silverlight_sdk/archive/2008/06/06/datagrid-control-beta-2-changes.aspx"&gt;DataGrid Control Beta 2 Changes&lt;/a&gt; and more.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/336/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/336/default.aspx</comments><link>http://adamkinney.com/blog/336/default.aspx</link><pubDate>Sun, 08 Jun 2008 16:29:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/336/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/336/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Jose Fajardo on DG.TV showing killer Deep Zoom ideas</title><description>&lt;p&gt;I was just having a bit of a chat with &lt;a href="http://blogs.msdn.com/msmossyblog/"&gt;Scott Barnes&lt;/a&gt; (welcome to the US!) today about Deep Zoom and its untapped potential.&amp;#160; And surprise, look what surfaces from Down Under and was posted tomorrow, a video showing off some awesome applications of Deep Zoom. Thanks go to &lt;a href="http://delicategeniusblog.com"&gt;Michael Kordahi&lt;/a&gt; for meeting up with &lt;a href="http://www.cynergysystems.com/blogs/page/josefajardo"&gt;Jose Fajardo&lt;/a&gt; after REMIX08 Australia and capturing Jose's demos.&amp;#160; &lt;/p&gt; &lt;iframe scrolling="no" frameBorder="0" src="http://silverlight.services.live.com/invoke/35679/2008_05_28_jose_fajardo/iframe.html" style="width: 480px; height: 360px"&gt;&lt;/iframe&gt;&lt;img src="http://adamkinney.com/blog/335/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/335/default.aspx</comments><link>http://adamkinney.com/blog/335/default.aspx</link><pubDate>Fri, 30 May 2008 03:14:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/335/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>3</slash:comments><trackback:ping>http://adamkinney.com/blog/335/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>SilverlightDevCampSeattle merges with BarCamp Seattle</title><description>&lt;p&gt;&lt;img src="http://adamkinney.com/images/blog/sldc_barcamp.jpg" /&gt; &lt;/p&gt;  &lt;p&gt;The just &lt;a href="http://adamkinney.com/blog/328/default.aspx"&gt;recently announced SilverlightDevCamp Seattle&lt;/a&gt; has been merged with the upcoming &lt;a href="http://barcamp.org/BarCampSeattle"&gt;BarCamp Seattle&lt;/a&gt;.&amp;#160; They were both on the same weekend and there are only so many geeks in Seattle that like to camp indoors on the weekend, so why not setup one campsite.&lt;/p&gt;  &lt;p&gt;The advantage of this is a larger more diverse crowd.&amp;#160; The disadvantage is following the BarCamp style of session scheduling there is no room for giving a special preference to a certain technology.&lt;/p&gt;  &lt;p&gt;At this point, I'm just going to refer to it as &amp;quot;BarCamp Seattle with a possibility of Silverlight content&amp;quot;.&amp;#160;&amp;#160; BCSwaPoSC still sounds like a good time and I plan on camping there for the weekend.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/332/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/332/default.aspx</comments><link>http://adamkinney.com/blog/332/default.aspx</link><pubDate>Tue, 27 May 2008 19:08:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/332/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>3</slash:comments><trackback:ping>http://adamkinney.com/blog/332/trackback/default.aspx</trackback:ping><category>conferences</category><category>Silverlight</category></item><item><title>Making the ALT.NET Geek Code badge video</title><description>&lt;p&gt;Last week &lt;a href="http://www.hanselman.com/blog/ALTNETGeekCodeShouldYouCareAboutTheseALTNETGuys.aspx"&gt;Scott Hanselman posted the ALT.NET Geek code page&lt;/a&gt; which allows you to choose different processes and tools that make you happy.&amp;#160; After making your selections you are given to identify yourself and your interests to others who can translate the code.&lt;/p&gt;  &lt;p&gt;Scott's code reads as:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselman.com/altnetgeekcode/default.aspx?q=IOC(SM):IOC(CW):IOC(Nin):MOC(RM):MOC(MQ):MOC(TM):MOC(!?):TDD(NU):TDD(Xu):TDD(Mb):SCC(Svn):SCC(Git):SCC(TFS):SCC(Lame):SCC(Gmail):ORM(NH):ORM(SS):ORM(L2S):XPP(++):DDD(T+):DDD(+):DDD(!?):JSL(Jq):JSL(MS):JSL(p+):JSL(s+):CIS(CC):CIS(psh+):CIS(bat-):GoF(++)"&gt;IOC(SM):IOC(CW):IOC(Nin):MOC(RM):MOC(MQ):MOC(TM):MOC(!?):TDD(NU):TDD(Xu):TDD(Mb):SCC(Svn):SCC(Git):SCC(TFS):SCC(Lame):SCC(Gmail):ORM(NH):ORM(SS):ORM(L2S):XPP(++):DDD(T+):DDD(+):DDD(!?):JSL(Jq):JSL(MS):JSL(p+):JSL(s+):CIS(CC):CIS(psh+):CIS(bat-):GoF(++)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This was code was in need of some serious visualization goodness and I was happy to oblige.&amp;#160; The following video explains the story of the ALT.NET Geek Code badge.&lt;/p&gt;  &lt;p&gt;&lt;iframe src="http://channel9.msdn.com/embedvideo.aspx?PostID=401246&amp;amp;silverlight=true" frameborder="0" width="320" scrolling="no" height="301"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://adamkinney.com/downloads/altnetbadge.zip"&gt;Download the Application Source&lt;/a&gt;&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/329/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/329/default.aspx</comments><link>http://adamkinney.com/blog/329/default.aspx</link><pubDate>Tue, 29 Apr 2008 23:53:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/329/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/329/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>SilverlightDevCamp Seattle - June 13-14th 2008</title><description>&lt;p&gt;&lt;img src="http://adamkinney.com/images/blog/silverlightdevcamp.png" alt="" /&gt; &lt;/p&gt; &lt;p&gt;Two of my favorite events I attended last year were the SilverlightDevCamps in &lt;a href="http://www.barcamp.org/SilverlightDevCampSF"&gt;San Francisco&lt;/a&gt; and &lt;a href="http://www.barcamp.org/SilverlightDevCampChicago"&gt;Chicago&lt;/a&gt;.&amp;nbsp; The DevCamp event is run in a community-driven barcamp style where conversation is open and free and results in intriguing dialogue and sessions. (&lt;a href="http://adamkinney.com/blog/255/default.aspx"&gt;my SF Recap&lt;/a&gt;, &lt;a href="http://adamkinney.com/blog/256/default.aspx"&gt;video from SF&lt;/a&gt;, &lt;a href="http://www.flickr.com/search/?q=silverlightdevcampsf"&gt;photos from SF&lt;/a&gt;, &lt;a href="http://www.flickr.com/search/?q=SilverlightDevCampChicago&amp;amp;m=text"&gt;photos from Chicago&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;The time has come for a &lt;a href="http://silverlightdevcampseattle.com"&gt;SilverlightDevCamp in Seattle&lt;/a&gt; and this one should be very interesting.&amp;nbsp; Its the first DevCamp since the release of the Silverlight 2 beta at MIX and the amount of features and functionality has about tripled in size since Silverlight 1.0.&lt;/p&gt; &lt;p&gt;Looking forward to an awesome event!&lt;/p&gt; &lt;hr&gt;  &lt;p style="float: right; margin-left: 10px"&gt;&lt;a href="http://www.brockett.net/silverlightdevcampseattle/?page_id=3"&gt;&lt;img src="http://s3.amazonaws.com/twitter_production/profile_images/53111905/sldccontest_bigger.png" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Oh and they are holding a &lt;a href="http://www.brockett.net/silverlightdevcampseattle/?page_id=3"&gt;contest for a SilverlightDevCamp Seattle logo&lt;/a&gt;.&amp;nbsp; Prizes include untold riches from the sponsors and recognition at the event of your design skills.&amp;nbsp; If only Seattle had some iconic totem or building to use as a starting point...&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/328/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/328/default.aspx</comments><link>http://adamkinney.com/blog/328/default.aspx</link><pubDate>Tue, 22 Apr 2008 22:17:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/328/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/328/trackback/default.aspx</trackback:ping><category>conferences</category><category>Silverlight</category></item><item><title>Building the Gamercard Part 3, Updating the UI</title><description>&lt;p&gt;This is Part 3 in a series covering how the &lt;a href="http://adamkinney.com/blog/322/default.aspx"&gt;Xbox Gamercard&lt;/a&gt; application was made using Silverlight 2.&amp;#160; In this part I will cover how the interface is updated once the data is retrieved.&lt;/p&gt;  &lt;p&gt;In the first part of the series I showed a few highlights of how the UI was created.&amp;#160; In the second part, I showed the call to the web service and how the results were parsed using LINQ to create a .NET object.&amp;#160; In this part, I will show how an instance of the custom &lt;em&gt;XboxInfo&lt;/em&gt; class is used as the data source for Data Binding the UI Elements.&lt;/p&gt;  &lt;h2&gt;Data Binding&lt;/h2&gt;  &lt;p&gt;Returning to the parsing code from &lt;a href="http://adamkinney.com/blog/326/default.aspx"&gt;part 2&lt;/a&gt;, the web service results are returned as a string which is handed to a parsing method.&amp;#160; Within the method an &lt;em&gt;XDocument&lt;/em&gt; is created that a LINQ query is run against that returns an &lt;em&gt;XboxInfo&lt;/em&gt; class instance.&amp;#160; The DataContext is then set to the instance and this is where the Data binding magic begins.&lt;/p&gt; &lt;code&gt;XDocument xDoc = XDocument.Parse(xmlContent);    &lt;br /&gt;XboxInfo gamer = ...//LINQ query     &lt;br /&gt;this.DataContext = gamer;&lt;/code&gt;   &lt;p&gt;In the above code, &lt;em&gt;this&lt;/em&gt; is referring to an instance of my XboxGamerCard.Page class which is the UserControl used as the main or RootVisual control of the application.&amp;#160; This class is where the main UI is declared in XAML including the main Grid control from &lt;a href="http://adamkinney.com/blog/325/default.aspx"&gt;Part 1&lt;/a&gt;.&amp;#160; Rather than writing the familiar manual &lt;em&gt;lnkGamerTag.Text = gamer.GamerTag &lt;/em&gt;type code we can use Data Binding to update the UI.&lt;/p&gt;  &lt;p&gt;A simple example of the binding is shown below.&amp;#160; The Content property of the HyperlinkButton is set to a GamerTag property of the DataContext.&amp;#160; Once the DataContext of the UserControl is set, the Bindings are notified and the values are updated.&amp;#160; In the case of the Binding below, the DataContext is checked for a GamerTag property.&amp;#160; If it exists the value of the HyperlinkButton.Content property is set automatically to the GamerTag value.&amp;#160; If the DataContext GamerTag property were to change again, the Content property would be updated as well.&amp;#160; The target property and the data source are now connected via the Binding instance.&lt;/p&gt;  &lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://adamkinney.com/blog/322/default.aspx"&gt;&lt;img src="http://adamkinney.com/studios/xboxfriendswatch/images/xbf_gamercard.png" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;&lt;code&gt;&amp;lt;HyperlinkButton Content=&amp;quot;{Binding GamerTag}&amp;quot; ... /&amp;gt;&lt;/code&gt; &lt;/p&gt;  &lt;p&gt;Another interesting feature of Data Binding is converting values.&amp;#160; The screenshot of the Gamercard to the right shows four green lights indicating that the status of this Quemark person is online rather than offline, which is indicated by a single red light.&lt;/p&gt;  &lt;p&gt;Using the Binding syntax below, the Canvas.Visibility property is bound to the StatusText property and a custom converter is set.&amp;#160;&amp;#160; Notice in the syntax, that StatusText is preceded by PresenceInfo.&amp;#160; A property of the XboxInfo class, PresenceInfo is a custom class as well with a string property titled StatusText.&amp;#160; With the &amp;quot;.&amp;quot; notation you can navigate the property chain.&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&amp;lt;Canvas Visibility=&amp;quot;{Binding PresenceInfo.StatusText,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/code&gt;&lt;code&gt;Converter={StaticResource StatusVisiblityConverter}}&amp;quot;&amp;gt;...&amp;lt;/Canvas&amp;gt;&lt;/code&gt; &lt;/p&gt;  &lt;p&gt;The StatusText property is a string but the Visibility property is an enum of type System.Windows.Visibility.&amp;#160; By implementing the &lt;em&gt;IValueConverter &lt;/em&gt;the custom converter class can be used to check a string value and return a Visibility enum value.&amp;#160; The code is simple to write and looks like the following:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;public class StatusVisiblity : IValueConverter      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public object Convert(object value, Type targetType, object parameter, CultureInfo culture)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string statusText = (string)value;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (statusText == &amp;quot;Offline&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return Visibility.Collapsed;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return Visibility.Visible;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;One other interesting area is RecentGames, a property of the XboxInfo class of type List&amp;lt;XboxUserGameInfo&amp;gt;.&amp;#160; In order to show this collection, The RecentGames property is used as the datasource for an ItemsSource property of ItemsControl added to the page.&amp;#160; When bound, each item in the collection is shown using the the defined ItemTemplate where Binding are defined using the properties of the XboxUserGameInfo class.&lt;/p&gt; &lt;code&gt;&amp;lt;ItemsControl ItemsSource=&amp;quot;{Binding RecentGames}&amp;quot; ...&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ...     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ItemsControl.ItemTemplate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DataTemplate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid ...&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Rectangle ... /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Image Width=&amp;quot;32&amp;quot; Height=&amp;quot;32&amp;quot; Source=&amp;quot;{Binding Game.Image32Url}&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ...     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Image&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DataTemplate&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ItemsControl.ItemTemplate&amp;gt;     &lt;br /&gt;&amp;lt;/ItemsControl&amp;gt;&lt;/code&gt;   &lt;p&gt;Databinding can be very useful and is definitely worth looking more into.&amp;#160; Not only does it save the developer some lines of code, it can also be useful during design-time due to the Data Binding support within Expression Blend.&amp;#160; That sounds like another blog post in the works...&lt;/p&gt;  &lt;p&gt;For more information on Data Binding check out Jesse Liberty's &lt;a href="http://silverlight.net/learn/tutorials/databinding.aspx"&gt;Data Binding Tutorial&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Refreshing the Data&lt;/h2&gt;  &lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/scriptpage.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;The last piece I am going to talk about covers browser integration.&amp;#160; The &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Gamercard Script Builder&lt;/a&gt; page (pictured to the right), has a textbox where you enter your Gamertag and when you TAB out of it the embed script is added to the textarea below.&amp;#160; In addition the Gamercard application to the right is updated and you see a preview of what your card will look like.&lt;/p&gt;  &lt;p&gt;Due to the awesome browser integration available in Silverlight 2 this was very simple to do.&amp;#160; The first step is to expose the &lt;em&gt;RequestGamerXml&lt;/em&gt; method (explained in &lt;a href="http://adamkinney.com/blog/326/default.aspx"&gt;Part 2&lt;/a&gt;) to JavaScript which is done by adding an attribute to the public method and registering the class instance as a ScriptableObject.&lt;/p&gt; &lt;code&gt;   &lt;p&gt;[ScriptableMember]      &lt;br /&gt;public void RequestGamerXml(string gamerTag){...}&lt;/p&gt;    &lt;p&gt;void Page_Loaded(object sender, RoutedEventArgs e)      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; HtmlPage.RegisterScriptableObject(&amp;quot;GamerCard&amp;quot;, this);       &lt;br /&gt;}&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;Then in the JavaScript function call into that object and pass a variable to the exposed method.&amp;#160; &lt;em&gt;slPlugIn&lt;/em&gt; is the id of the object tag used to instantiate the Silverlight application.&lt;/p&gt; &lt;code&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;    &lt;br /&gt;function genScript(){     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ...     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; document.getElementById(&amp;quot;slPlugin&amp;quot;).content.GamerCard.RequestGamerXml(tagEntered);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ...     &lt;br /&gt;}     &lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/code&gt;   &lt;p&gt;And that's it!&amp;#160; Now every time the Gamertag entered changes, the RequestGamerXml method is called and the DataContext is reset.&amp;#160; Thanks to the Bindings in place the interface Elements are updated to stay in synch with the data source.&lt;/p&gt;  &lt;p&gt;For more information on browser integration try the &lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Browser%20Integration.zip"&gt;Browser Integration Hands-on Lab&lt;/a&gt; from MIX08.&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;This was a fun project and the ideas keep on coming.&amp;#160; Expect to see more in the future from the &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/"&gt;Xbox Friends Watch Lab&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Other parts in this series are available:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://adamkinney.com/blog/325/default.aspx"&gt;Building the Gamercard Part 1, Composing the UI&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://adamkinney.com/blog/326/default.aspx"&gt;Building the Gamercard Part 2, Retrieving the Data&lt;/a&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;img style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="my diigo links" src="http://www.diigo.com/images/ii_blue.gif" /&gt;&amp;#160;&lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight+databinding"&gt;silverlight+databinding&lt;/a&gt;, &lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight"&gt;silverlight&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://adamkinney.com/blog/327/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/327/default.aspx</comments><link>http://adamkinney.com/blog/327/default.aspx</link><pubDate>Thu, 17 Apr 2008 23:41:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/327/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/327/trackback/default.aspx</trackback:ping><category>databinding</category><category>Silverlight</category><category>XboxFriendsWatch</category></item><item><title>Building the Gamercard Part 2, Retrieving the Data</title><description>&lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://adamkinney.com/blog/322/default.aspx"&gt;&lt;img src="http://adamkinney.com/studios/xboxfriendswatch/images/xbf_gamercard.png" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;p&gt;This is Part 2 in a series covering how the &lt;a href="http://adamkinney.com/blog/322/default.aspx"&gt;Xbox Gamercard&lt;/a&gt; application was made using Silverlight 2.&amp;#160; In this part I will cover how the data is retrieved.&lt;/p&gt;  &lt;p&gt;First off, the &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/"&gt;Xbox Friends Watch&lt;/a&gt; series of experiments would not be possible without the existence of the &lt;a href="http://duncanmackenzie.net/blog/put-up-a-rest-api-for-xbox-gamertag-data/default.aspx"&gt;Xbox Gamertag Data Service&lt;/a&gt;.&amp;#160; The service provides both SOAP and REST based access and I'll being showing you how the REST-based service was used within the application.&lt;/p&gt;  &lt;h2&gt;Get the data&lt;/h2&gt;  &lt;p&gt;When the application loads it looks within the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb980046.aspx"&gt;InitParams&lt;/a&gt; parameters for a &lt;em&gt;gamertag&lt;/em&gt; Key.&amp;#160; The value is then passed to a RequestGamerXML function that creates a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.webclient(VS.95).aspx"&gt;WebClient&lt;/a&gt; instance and queues and asynchronous request to the Gamertag Data service.&lt;/p&gt; &lt;code&gt;public void RequestGamerXml(string gamerTag)    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string xboxUrl = string.Format(&amp;quot;http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag={0}&amp;quot;, gamerTag);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WebClient xboxService = new WebClient();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xboxService.DownloadStringCompleted += new DownloadStringCompletedEventHandler(xboxService_DownloadStringCompleted);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xboxService.DownloadStringAsync(new Uri(xboxUrl));     &lt;br /&gt;}&lt;/code&gt;   &lt;p&gt;The completed event handler is then called once the request is complete, providing the opportunity to handle errors and pass the result string to a parsing function.&lt;/p&gt; &lt;code&gt;private void xboxService_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (e.Error == null)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; loadGamer(e.Result);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else{...}     &lt;br /&gt;}&lt;/code&gt;   &lt;p&gt;The WebClient class is perfect for simple requests like this, but for more advanced network requests check otu the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest(VS.95).aspx"&gt;HttpWebRequest&lt;/a&gt; class.&lt;/p&gt;  &lt;p&gt;For more information on Networking check out Karen Corby's two networking part series (&lt;a href="http://scorbs.com/2008/04/05/silverlight-http-networking-stack-part-1-site-of-origin-communication"&gt;Part 1&lt;/a&gt;, &lt;a href="http://scorbs.com/2008/04/15/silverlight-http-networking-stack-part-2-cross-domain-communication-overview"&gt;Part 2&lt;/a&gt;) and Laurent Bugnion's &lt;a href="http://www.galasoft.ch/mydotnet/articles/article-2008032301.html"&gt;Downloading Zipped files&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;From XML to objects&lt;/h2&gt;  &lt;p&gt;Now that the data has been returned from the REST service as string, the values need to be parsed for display.&amp;#160; Luckily there just happens to be a new simple and fun way to do this using &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;LINQ, new in Silverlight 2, is a huge topic in and of itself and there are many &lt;a href="http://channel9.msdn.com/Showforum.aspx?forumid=14&amp;amp;tagid=58"&gt;videos&lt;/a&gt;, &lt;a href="http://channel9.msdn.com/Showforum.aspx?forumid=38&amp;amp;tagid=58"&gt;screencasts&lt;/a&gt; and &lt;a href="http://www.technorati.com/search/linq?authority=a4"&gt;blog posts&lt;/a&gt; about it.&amp;#160; In the context of the Gamercard application it is interesting because you can perform powerful language-integrated queries, sets and transforms.&amp;#160; Specifically turning the string results into an &lt;em&gt;XboxInfo&lt;/em&gt; class with all of its property values set and sub classes created and populated as well.&lt;/p&gt;  &lt;p&gt;First take a look at the XML response: &lt;a title="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=festive%20turkey" href="http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=festive%20turkey"&gt;http://duncanmackenzie.net/services/GetXboxInfo.aspx?GamerTag=festive%20turkey&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looking at the XML you can get an idea of the backing classes needed to serialize and deserialize that data.&amp;#160; The classes I've created have typed properties but otherwise very closely match to the XML result's schema.&lt;/p&gt;  &lt;p&gt;The XML string is used to create a new &lt;em&gt;XDocument&lt;/em&gt; instance which can then be queried against to return an &lt;em&gt;XboxInfo&lt;/em&gt; instance:&lt;/p&gt; &lt;code&gt;   &lt;p&gt;XDocument xDoc = XDocument.Parse(xmlContent); &lt;/p&gt;    &lt;p&gt;XboxInfo gamer = (from XboxInfo in xDoc.Descendants(&amp;quot;XboxInfo&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select new XboxInfo       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PresenceInfo = new PresenceInfo()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Info = (string)XboxInfo.Element(&amp;quot;PresenceInfo&amp;quot;).Element(&amp;quot;Info&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Info2 = (string)XboxInfo.Element(&amp;quot;PresenceInfo&amp;quot;).Element(&amp;quot;Info2&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Online = (string)XboxInfo.Element(&amp;quot;PresenceInfo&amp;quot;).Element(&amp;quot;Online&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StatusText = (string)XboxInfo.Element(&amp;quot;PresenceInfo&amp;quot;).Element(&amp;quot;StatusText&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GamerTag = (string)XboxInfo.Element(&amp;quot;Gamertag&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ProfileUrl = (string)XboxInfo.Element(&amp;quot;ProfileUrl&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TileUrl = (string)XboxInfo.Element(&amp;quot;TileUrl&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GamerScore = (string)XboxInfo.Element(&amp;quot;GamerScore&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zone = (string)XboxInfo.Element(&amp;quot;Zone&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RecentGames = (from XboxUserGameInfo in XboxInfo.Element(&amp;quot;RecentGames&amp;quot;).Descendants(&amp;quot;XboxUserGameInfo&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select new XboxUserGameInfo       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Game = new Game()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name = (string)XboxUserGameInfo.Element(&amp;quot;Game&amp;quot;).Element(&amp;quot;Name&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image32Url = (string)XboxUserGameInfo.Element(&amp;quot;Game&amp;quot;).Element(&amp;quot;Image32Url&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Image64Url = (string)XboxUserGameInfo.Element(&amp;quot;Game&amp;quot;).Element(&amp;quot;Image64Url&amp;quot;),&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TotalAchievements = (string)XboxUserGameInfo.Element(&amp;quot;Game&amp;quot;).Element(&amp;quot;TotalAchievements&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TotalGamerScore = (string)XboxUserGameInfo.Element(&amp;quot;Game&amp;quot;).Element(&amp;quot;TotalGamerScore&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Achievements = (string)XboxUserGameInfo.Element(&amp;quot;Achievements&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GamerScore = (string)XboxUserGameInfo.Element(&amp;quot;GamerScore&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DetailsURL = (string)XboxUserGameInfo.Element(&amp;quot;DetailsURL&amp;quot;),       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LastPlayed = (DateTime)XboxUserGameInfo.Element(&amp;quot;LastPlayed&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }).Take(5).ToList&amp;lt;XboxUserGameInfo&amp;gt;()       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }).First();&lt;/p&gt; &lt;/code&gt;  &lt;p&gt;That may look like a mouthful but if you compare the XML results and the query you can see the relationship between the two.&amp;#160; The end result a fully populated XboxInfo object that can be used to update the interface.&lt;/p&gt;  &lt;p&gt;For more information on LINQ read the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb308959.aspx"&gt;overview on MSDN&lt;/a&gt; and Scott Guthrie's tutorial &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/05/14/Using-LINQ-with-ASP.NET-_2800_Part-1_2900_.aspx"&gt;Using LINQ with ASP.NET&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Other parts in this series are available:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://adamkinney.com/blog/325/default.aspx"&gt;Building the Gamercard Part 1, Composing the UI&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://adamkinney.com/blog/327/default.aspx"&gt;Building the Gamercard Part 3, Updating the UI&lt;/a&gt;     &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;img style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="my diigo links" src="http://www.diigo.com/images/ii_blue.gif" /&gt;&amp;#160;&lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight+networking"&gt;silverlight+networking&lt;/a&gt;, &lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight"&gt;silverlight&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;img src="http://adamkinney.com/blog/326/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/326/default.aspx</comments><link>http://adamkinney.com/blog/326/default.aspx</link><pubDate>Thu, 17 Apr 2008 23:40:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/326/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/326/trackback/default.aspx</trackback:ping><category>networking</category><category>Silverlight</category><category>XboxFriendsWatch</category></item><item><title>Building the Gamercard Part 1, Composing the UI</title><description>&lt;p&gt;I recently published an &lt;a href="http://adamkinney.com/blog/322/default.aspx"&gt;Xbox Gamercard&lt;/a&gt; based on &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt; 2 Beta 1.&amp;#160; In that post a talked a little bit about the XAP model which now allows you to embed Silverlight applications via the object.&amp;#160; In Silverlight 1.0 application instantiation was handled via JavaScript and HTML with loose files.&amp;#160; Now with the XAP model we have a single file and object tag support which allows for simpler embedding of an application.&amp;#160; Especially by a non-developer web user, which is the main audience for the Gamercard application.&lt;/p&gt;  &lt;p&gt;In this three part series I will highlight a few of the new features in Silverlight 2 and how the application was built. In this first part, I'll cover how the interface for the application was composed.&lt;/p&gt;  &lt;h2&gt;First stop the Grid&lt;/h2&gt;  &lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/gridlines.jpg" /&gt; &lt;/div&gt;  &lt;p&gt;Ah, the mighty &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid(VS.95).aspx"&gt;Grid&lt;/a&gt;, master of layout panels.&amp;#160; The Grid is the embodiment of what you always wanted from the HTML table. That is, of course, back in the&amp;#160; old days when you were still using the table for layout.&lt;/p&gt;  &lt;p&gt;The screenshot to the right shows the Grid used for the Gamercard with the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid.showgridlines(VS.95).aspx"&gt;ShowGridLines&lt;/a&gt; property turned on.&amp;#160; GridLines can be very useful as an aid when in design mode, whether you're working in Blend or Visual Studio.&amp;#160; The Grid is the main container of all the elements seen on the screen.&lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;div style="float: right; margin-bottom: 10px"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/grid_rows_and_span.jpg" /&gt;&lt;/div&gt;  &lt;div style="float: right; margin-bottom: 2px; margin-left: 10px"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/grid_columns.jpg" /&gt;&lt;/div&gt;  &lt;p&gt;Like the HTML table, the Grid is made up of Columns and Rows and elements can span multiple Columns or Rows using ColumnSpan and RowSpan, respectively.&lt;/p&gt;  &lt;p&gt;Unlike the HTML table there is no table cell concept.&amp;#160; Each Element&amp;#160; defines its location using &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid_attachedproperties(VS.95).aspx"&gt;attached properties provided by the Grid class&lt;/a&gt; instead.&lt;/p&gt;  &lt;p&gt;The TextBlock at the bottom of the grid with the text value of &amp;quot;Shadowrun (G 885/1000)&amp;quot; is defined in XAML as:&lt;/p&gt; &lt;code&gt;&amp;lt;TextBlock Grid.Row=&amp;quot;4&amp;quot; Grid.ColumnSpan=&amp;quot;2&amp;quot; ...&amp;#160; /&amp;gt;&lt;/code&gt;   &lt;p&gt;This places the TextBlock in the first column (0) which is the default value of Grid.Column and in the fourth Row based on the value set.&amp;#160; It also spans both columns to make room for longer text that would not fit in the first column which has a width of 76 pixels.&lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/grid_lengths.jpg" /&gt; &lt;/div&gt;  &lt;p&gt;Columns and Rows are defined and their values are set using the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid.columndefinitions(VS.95).aspx"&gt;ColumnDefinitions&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid.rowdefinitions(VS.95).aspx"&gt;RowDefinitions&lt;/a&gt;. In the case of the Gamercard, the height and width of each column and row is set to a specific value except for the last one which is set using the star (*) syntax.&lt;/p&gt;  &lt;p&gt;The star denotes proportional sizing, which means here the last Row and Column take up the remaining space in the Grid not yet claimed by other Columns or Rows.&lt;/p&gt;  &lt;p&gt;Proportional sizing can also be used across Columns or Rows.&amp;#160; For example, the width of the first column could be set to &amp;quot;*&amp;quot; and the second set to &amp;quot;2*&amp;quot;.&amp;#160; If the Grid was 150 pixels wide, the first column would end up being 50 pixels wide and the second column would be 100 pixels wide.&lt;/p&gt;  &lt;p&gt;For more on Grids check out Jesse Liberty's &lt;a href="http://silverlight.net/learn/tutorials/controls.aspx"&gt;Controls Tutorial&lt;/a&gt; or his &lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=33733"&gt;Grids and Stack panels&lt;/a&gt; video.&lt;/p&gt;  &lt;h2&gt;Composing Controls&lt;/h2&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;div style="float: right; margin-bottom: 2px; margin-left: 10px"&gt;&lt;img src="http://adamkinney.com/images/xbfgc/linkcomposition.jpg" /&gt; &lt;/div&gt;  &lt;p&gt;Another great feature of Silverlight is the ability to compose controls.&amp;#160; In the Gamercard application, a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.hyperlinkbutton(VS.95).aspx"&gt;HyperlinkButton&lt;/a&gt; control is used to link to the Gamertag profile page.&amp;#160; Rather than simply using text for the link, in this case I wanted to use the the Profile Image which was easily accomplished using the XAML below:&lt;/p&gt; &lt;code&gt;&amp;lt;HyperlinkButton ....&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;HyperlinkButton.ToolTip&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ToolTip Content=&amp;quot;View Profile&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/HyperlinkButton.ToolTip&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Canvas&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Rectangle Width=&amp;quot;64&amp;quot; Height=&amp;quot;64&amp;quot; RadiusX=&amp;quot;3&amp;quot; RadiusY=&amp;quot;3&amp;quot; Fill=&amp;quot;#333&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Image Width=&amp;quot;64&amp;quot; Height=&amp;quot;64&amp;quot; ...&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Image.Clip&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RectangleGeometry RadiusX=&amp;quot;3&amp;quot; RadiusY=&amp;quot;3&amp;quot; Rect=&amp;quot;1,1,62,62&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Image.Clip&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Image&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Canvas&amp;gt;     &lt;br /&gt;&amp;lt;/HyperlinkButton&amp;gt;&lt;/code&gt;   &lt;p&gt;The first child element is the attached property for &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.tooltip(VS.95).aspx"&gt;ToolTip&lt;/a&gt;, similar to the Grid.Row property mentioned above.&amp;#160; Although not a part of the HyperlinkButton's composition, this shows a simple version of implementing the Content property.&amp;#160; The same property is available on the HyperLinkButton control which could be set to a string value, which is how we would define a simple text link.&lt;/p&gt;  &lt;p&gt;As mentioned though, we want to customize the Template of the Content property which is done implicitly when child nodes that are not attached properties or added within the Control.&amp;#160; Content can only hold a single child, which was why the Canvas element is added first as a simple container.&amp;#160; After that a Rectangle and an Image control is added to provide the custom look.&amp;#160; And due to the composing functionality, the Hyperlink links to the profile page whether you click the Rectangle or the Image.&lt;/p&gt;  &lt;p&gt;The extra attributes on Rectangle and Image provide the round corners as well as clipping the raster image so it appears that it has transparent round corners.&amp;#160; I found the clipping method to be very useful when customizing images provided by an external service.&lt;/p&gt;  &lt;p&gt;...pausing to think about more mashup possibilities...&lt;/p&gt;  &lt;p&gt;For more on Composing Controls check out Jesse Liberty's &lt;a href="http://silverlight.net/learn/tutorials/controls.aspx"&gt;Controls Tutorial&lt;/a&gt;.&amp;#160; And if you have not watched it yet please check out &lt;a href="http://scorbs.com/2008/03/09/mix08-creating-rich-dynamic-user-interfaces-with-silverlight-2-controls/"&gt;Karen Corby's Controls presentation at MIX08&lt;/a&gt;.&amp;#160; The slides and sample code is available and she does a great job showing off how to compose, style and skin controls. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;p&gt;Other parts in this series are available:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://adamkinney.com/blog/326/default.aspx"&gt;Building the Gamercard Part 2, Retrieving the Data&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://adamkinney.com/blog/327/default.aspx"&gt;Building the Gamercard Part 3, Updating the UI&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="my diigo links" src="http://www.diigo.com/images/ii_blue.gif" /&gt;&amp;#160;&lt;a title="more info on XAP" href="http://www.diigo.com/user/adamkinney/xap"&gt;XAP&lt;/a&gt;, &lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight+controls"&gt;silverlight+controls&lt;/a&gt;, &lt;a title="more info on Silverlight controls" href="http://www.diigo.com/user/adamkinney/silverlight"&gt;silverlight&lt;/a&gt;&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/325/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/325/default.aspx</comments><link>http://adamkinney.com/blog/325/default.aspx</link><pubDate>Thu, 17 Apr 2008 23:39:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/325/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/325/trackback/default.aspx</trackback:ping><category>controls</category><category>Silverlight</category><category>XboxFriendsWatch</category></item><item><title>PDX Webfoot and then Olympia</title><description>&lt;p&gt;&lt;a href="http://pdxwebfoot.com"&gt;&lt;img src="http://adamkinney.com/images/blog/pdxwebfoot.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This Saturday I will be attending and speaking at the &lt;a href="http://pdxwebfoot.com"&gt;PDX Webfoot&lt;/a&gt; event.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Webfoot is a web-focused event for all creatures, techie and non-techie alike. Bring the whole family for a day of education, entertainment, and fun!&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If you take a look at the &lt;a href="http://pdxwebfoot.com/Schedule.aspx"&gt;schedule&lt;/a&gt;, you'll see that we'll be talking about topics like Safe Internet Browsing, IE8, Flex and Silverlight.&amp;nbsp; We should have a pretty interesting crowd as the different groups involved include the &lt;a href="http://thecodetrip.com/1/pdx-webfoot"&gt;CodeTrip crew&lt;/a&gt;, &lt;a href="http://www.padnug.org/padnug/meetings.aspx?ID=148"&gt;PADNUG&lt;/a&gt;, &lt;a href="http://pdxux.net/default.aspx"&gt;PDXUX&lt;/a&gt; and Ryan Miller form the &lt;a href="http://pdxria.com/"&gt;Portland Adobe Developer User Group&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;After the event in Portland I will be riding the CodeTrip bus to help out with the &lt;a href="http://thecodetrip.com/1/codetrip-olympia-expo"&gt;Olympia event&lt;/a&gt;, which is the final stop before the tour ends at the MVP Summit back in Seattle and near much closer to where my car will be.&lt;/p&gt; &lt;p&gt;(And for those of you from the PDXUX group, I'll make sure I am well -fed and well-rested before Saturday.)&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/324/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/324/default.aspx</comments><link>http://adamkinney.com/blog/324/default.aspx</link><pubDate>Mon, 07 Apr 2008 21:12:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/324/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/324/trackback/default.aspx</trackback:ping><category>conferences</category><category>Silverlight</category></item><item><title>Silverlight Sidebar Gadgets on Windows Vista 64-bit edition</title><description>&lt;p style="float: right"&gt;&lt;a title="Silverlight-based Sidebar gadgets by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2388288652/"&gt;&lt;img height="512" alt="Silverlight-based Sidebar gadgets" src="http://farm3.static.flickr.com/2110/2388288652_fddb6e385a_o.jpg" width="155" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;At this time (version 2 Beta 1), in the life of Silverlight there is no 64-bit support.&amp;nbsp; I'm not certain if or when 64-bit support will appear, but I don't think Vista 64-bit users should go without Silverlight. And the good news is they don't have to.&lt;/p&gt; &lt;p&gt;In most cases, running Silverlight applications should not be an issue.&amp;nbsp; IE7 and Firefox run in 32-bit mode by default allowing Silverlight to run as expected.&lt;/p&gt; &lt;p&gt;A different scenario which needs some attention is Sidebar Gadgets that use Silverlight.&amp;nbsp; The Windows Sidebar application (sidebar.exe) runs by default in 64-bit mode and in order to use a Silverlight-based gadget you need to run sidebar.exe in 32-bit mode.&lt;/p&gt; &lt;p&gt;You can do this simply by closing the default Sidebar and navigating to &lt;em&gt;C:\Program Files (x86)\Windows Sidebar&lt;/em&gt; and double-clicking &lt;em&gt;sidebar.exe&lt;/em&gt;.&amp;nbsp; Now you can successfully run the new &lt;a href="http://duncanmackenzie.net/blog/sidebar-gadgets-for-channel-9-channel-8-and-more/default.aspx"&gt;Channel 9 gadget&lt;/a&gt; or &lt;a href="http://adamkinney.com/studios/xboxfriendswatch"&gt;Xbox Friends Watch&lt;/a&gt; in your sidebar and enjoy knowing what the latest C9 video or or when your Xbox friends are online.&lt;/p&gt; &lt;p&gt;If you're happy with the results, you can make sure the 32-bit version of Sidebar is added to your system startup by following the step below:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;If you are still running the 64-bit Sidebar, right-click the Sidebar and select Properties.  &lt;li&gt;Uncheck the &lt;em&gt;Start Sidebar when Windows starts &lt;/em&gt;option and hit OK  &lt;li&gt;Open &lt;em&gt;C:\Program Files (x86)\Windows Sidebar&lt;/em&gt; in Windows Explorer  &lt;li&gt;Right-click &lt;em&gt;sidebar.exe&lt;/em&gt; and select Copy  &lt;li&gt;Right-click the Windows Orb and select Explore&lt;br&gt;&lt;img alt="Windows Orb" src="http://www.microsoft.com/windows/Framework/images/vista/windows-vista.gif" /&gt;  &lt;li&gt;In Windows Explorer navigate to the folder entitled &lt;em&gt;..Programs/Startup&lt;/em&gt;  &lt;li&gt;Right-click in the folder and select Paste Shortcut&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://adamkinney.com/blog/323/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/323/default.aspx</comments><link>http://adamkinney.com/blog/323/default.aspx</link><pubDate>Fri, 04 Apr 2008 23:03:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/323/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>5</slash:comments><trackback:ping>http://adamkinney.com/blog/323/trackback/default.aspx</trackback:ping><category>Channel 10</category><category>Channel 9</category><category>gadgets</category><category>Sidebar Gadgets</category><category>Silverlight</category><category>Windows Vista</category><category>XboxFriendsWatch</category></item><item><title>Xbox Friends Watch - releasing v1 of the new Gamercard</title><description>&lt;h2&gt;Xaps&lt;/h2&gt;  &lt;p&gt;One of my favorite new features of Silverlight 2 is the new Application model.&amp;#160; Moving on from version 1.0, where JavaScript instantiation was the only way to start your app and you were restricted to the same origin as the web page, enter the Xap.&amp;#160; The new packaging model, not only bundles your assets into one file enabling simpler deployment, it also enables application instantiation via the object tag.&amp;#160; Plus, the Xap can live on a separate server than the web page, which enables the creation of embeddable applications with Silverlight. &lt;/p&gt;  &lt;p&gt;&amp;lt;applause!&amp;gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://www.diigo.com/user/adamkinney/xap?tab=250"&gt;More information about Xaps and the new Application Model&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Xbox Friends Watch Gamercard&lt;/h2&gt;  &lt;p&gt;In celebration of this functionality, I've expanded on the &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/"&gt;Xbox Friends Watch&lt;/a&gt; line and added a new &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Gamercard&lt;/a&gt;.&amp;#160; &lt;a href="http://www.xbox.com"&gt;Xbox.com&lt;/a&gt; currently offers a gamercard which renders a fairly static set of html and images which is embedded via an iframe.&amp;#160; Using Silverlight for its interactivity, data stack and portability and the &lt;a href="http://duncanmackenzie.net/blog/put-up-a-rest-api-for-xbox-gamertag-data/default.aspx"&gt;Xbox Gamertag Data Service&lt;/a&gt; I thought I would be able to enhance the experience as well as expose the status information provided by the Data Service.&lt;/p&gt;  &lt;p&gt;Below is the result of my experiment and using the &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Gamercard page&lt;/a&gt; you can create a script to add the Gamercard to your site.&lt;/p&gt;  &lt;p&gt;&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2-b1" width="204" height="160"&gt;&lt;param name="source" value="http://adamkinney.com/xbf/XboxGamerCard.xap" /&gt;&lt;param name="background" value="#00000000" /&gt;&lt;param name="Windowless" value="True" /&gt;&lt;param name="enableHtmlAccess" value="True" /&gt;&lt;param name="initParams" value="gamertag=quemark" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=108182" style="text-decoration: none;"&gt;&lt;img src="http://adamkinney.com/xbf/gci.jpg" alt="Get Microsoft Silverlight" style="border-style: none" /&gt;&lt;/a&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://adamkinney.com/studios/xboxfriendswatch/gamercard.html"&gt;Add the Gamercard to your page&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Next Steps&lt;/h2&gt;  &lt;p&gt;My next post will include some of the technical details covering how the Gamercard was created and some of the techniques I used to work with Silverlight 2.&lt;/p&gt;  &lt;p&gt;If you're interested in following the saga of the Xbox Friends Watch components you can subscribe to &lt;a href="http://adamkinney.com/blog/tags/XboxFriendsWatch/rss/default.aspx"&gt;my XBF feed&lt;/a&gt;, follow &lt;a href="http://twitter.com/xbf"&gt;XBF on Twitter&lt;/a&gt; or follow &lt;a href="http://www.facebook.com/pages/Xbox-Friends-Watch/8849870070"&gt;XBF on Facebook&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/322/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/322/default.aspx</comments><link>http://adamkinney.com/blog/322/default.aspx</link><pubDate>Thu, 03 Apr 2008 06:50:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/322/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>5</slash:comments><trackback:ping>http://adamkinney.com/blog/322/trackback/default.aspx</trackback:ping><category>demo</category><category>gaming</category><category>Silverlight</category><category>Xbox</category><category>XboxFriendsWatch</category></item><item><title>Silverlight rehab session recorded last week</title><description>&lt;p&gt;There are a few of us here, who really, really like Silverlight.&amp;nbsp; In some cases a little bit too much.&amp;nbsp; They filmed one of our group therapy sessions last week to raise awareness.&lt;/p&gt; &lt;p&gt;I hope this video can help bring comfort to some of you, knowing that you're not alone. &lt;/p&gt; &lt;p&gt;&lt;iframe src="http://on10.net/blogs/tina/21760/player/" frameborder="0" width="320" scrolling="no" height="325"&gt;&lt;/iframe&gt;&lt;br&gt;&lt;a href="http://on10.net/blogs/tina/Silverlight-Rehab/"&gt;Silverlight Rehab - You're not alone&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;Stay in the light!&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/321/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/321/default.aspx</comments><link>http://adamkinney.com/blog/321/default.aspx</link><pubDate>Mon, 31 Mar 2008 16:26:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/321/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>4</slash:comments><trackback:ping>http://adamkinney.com/blog/321/trackback/default.aspx</trackback:ping><category>Channel 10</category><category>Silverlight</category></item><item><title>Xbox Friends Watch - v1.2 has been posted</title><description>&lt;p&gt;&lt;a href="http://adamkinney.com/studios/xboxfriendswatch/XboxFriendsWatch.gadget"&gt;Download 1.2 now&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a very small update that is the same as version 1.1, except that a fix has been added to allow the sidebar gadget to run if you have installed the &lt;a href="http://silverlight.net/GetStarted/"&gt;Silverlight 2 Beta 1 runtime&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There was a small bug in path resolution that the team is aware of and will hopefully be able to fix in future releases.&lt;/p&gt;  &lt;p&gt;When setting the source parameter during application initialization the workaround involves making the path absolute using the gadget protocol. &lt;/p&gt;  &lt;p&gt;Old code:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;source: &amp;quot;xaml/SideBar.xaml&amp;quot;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;New code:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;source: &amp;quot;x-gadget:///xaml/SideBar.xaml&amp;quot;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;I know this is not the promised version 2 that many of you are looking for, but getting past this bug is a step in the right direction.&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://livegadgets.net/"&gt;Donovan&lt;/a&gt; for finding the solution!&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/320/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/320/default.aspx</comments><link>http://adamkinney.com/blog/320/default.aspx</link><pubDate>Wed, 26 Mar 2008 19:03:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/320/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>7</slash:comments><trackback:ping>http://adamkinney.com/blog/320/trackback/default.aspx</trackback:ping><category>Sidebar Gadgets</category><category>Silverlight</category><category>XboxFriendsWatch</category></item><item><title>Interviewed at MIX, audio now available</title><description>&lt;p&gt;In case you haven't heard, we meaning Microsoft threw a little party in Vegas this month called MIX.&amp;nbsp; You should really come &lt;a href="http://visitmix.com"&gt;visit MIX&lt;/a&gt; sometime maybe next year, say around March 18-20th in 2009?&lt;/p&gt; &lt;p&gt;We like to have 72 hour conversations and talk about all the things we have going on for the web.&amp;nbsp; This year we announced &lt;a href="http://silverlight.net/GetStarted/"&gt;Silverlight 2 Beta 1&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Man I was excited, and maybe after listening to these two interviews a bit overly excited.&amp;nbsp; On Wednesday I received two emails within 20 minutes of each other notifying me that my interviews had been posted.&lt;/p&gt; &lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://www.sparklingclient.com/"&gt;&lt;img src="http://adamkinney.com/images/blog/sparklingclient.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;First, I was interviewed by Erik Mork from the &lt;a href="http://www.sparklingclient.com"&gt;Sparkling Client podcast&lt;/a&gt;.&amp;nbsp; Sparkling Client is podcast they have recently started, but judging by the production quality and the content, I feel they are off to a good start.&amp;nbsp; My interview is available as &lt;a href="http://www.sparklingclient.com/?p=25"&gt;Show 6: interview with Adam Kinney of Microsoft&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Erik and Monica do nice job leading into the content and my favorite interviewee-caught-in-the-headlights quote is when I say "algorithms to be figured out".&amp;nbsp; Other than algorithms we discuss Silverlight 2 and the direction that we are headed with it.&lt;/p&gt; &lt;p&gt;The goal of Sparkling Client is to be concise 15-minute podcast that entertains as well as informs their audience about Silverlight and the rich web to come.&amp;nbsp; You can find more shows on their site &lt;a href="http://www.sparklingclient.com/"&gt;SparklingClient.com&lt;/a&gt;.&lt;/p&gt; &lt;p style="float: left; margin-bottom: 10px; margin-right: 10px"&gt;&lt;a href="http://thirstydeveloper.com/"&gt;&lt;img src="http://adamkinney.com/images/blog/thirstydeveloper.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://thirstydeveloper.com/"&gt;The Thirsty Developer&lt;/a&gt; is another podcast that I interviewed for at MIX.&amp;nbsp; &lt;a href="http://davebost.com/blog/"&gt;Dave Bost&lt;/a&gt; and &lt;a href="http://larryclarkin.com/"&gt;Larry Clarkin&lt;/a&gt; two Microsoft evangelists from the Midwest produce this show which has a nice "hanging out in Chicago" feel.&lt;/p&gt; &lt;p&gt;Dave interviewed me about Silverlight 2 and we cover what it is and what some of the great new features are.&lt;/p&gt; &lt;p&gt;I listened to this one and found a few errors that I should clear up.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Templates - when discussing styling and skinning, I meant to discuss templates but ended up discussing the ContentPresenter and its ability to composite arbitrary controls.&amp;nbsp; This is not changing the template of the control but rather changing the content.&amp;nbsp; &lt;a href="http://www.cynergysystems.com/blogs/page/josefajardo?entry=skinning_a_button_4_different"&gt;Jose Fajardo has an interesting post covering skinning and styling&lt;/a&gt; which is a bit more accurate.&lt;/li&gt; &lt;li&gt;Installation - I just wanted to strengthen the point that the installation process is still as customizable as before in 1.0.&amp;nbsp; &lt;a href="http://flickr.com/photos/adamkinney/2350449434/"&gt;Hard Rock has a nice custom screen&lt;/a&gt; and &lt;a href="http://flickr.com/photos/adamkinney/2349616345/"&gt;FaceOut does too&lt;/a&gt; and they include a timer to start the application as soon as Silverlight is installed.&amp;nbsp; Kudos for the timer!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It was a very fun process to be a part of and I thank both parties for their kind words.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/319/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/319/default.aspx</comments><link>http://adamkinney.com/blog/319/default.aspx</link><pubDate>Fri, 21 Mar 2008 18:21:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/319/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/319/trackback/default.aspx</trackback:ping><category>conferences</category><category>devigner</category><category>MIX</category><category>MIX08</category><category>Silverlight</category></item><item><title>Presenting Silverlight 2 at the PDXUX meeting next week</title><description>&lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://pdxux.net/2008/March.aspx"&gt;&lt;img src="http://whitepdx.com/blogs/kelly/images/pdxux.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Next week I will be presenting an overview of Silverlight 2 at the March &lt;a href="http://pdxux.net/2008/March.aspx"&gt;PDXUX meeting&lt;/a&gt; in Hillsboro, OR, US.&lt;/p&gt; &lt;p&gt;The PDXUX defines itself as:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;This is a group for both developers &lt;strong&gt;&lt;em&gt;and&lt;/em&gt;&lt;/strong&gt; designers, something unique in Portland as all other groups target either one or the other. The "UX" in the name stands for "User Experience", something which both designers and developers must care about and work on together in order to succeed. The primary goals of this group include: unity, design, platform, reality.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I've always wanted to attend a Special interest Group like this, so why not start by speaking at one.&amp;nbsp; There is certainly plenty to talk about with the recent release of the Silverlight 2 Beta.&amp;nbsp; I've been holding in Silverlight 2 goodness, I'll probably just jumble my words together in excitement.&lt;/p&gt; &lt;p&gt;To make up for the possible overly-excited state, I will be bringing copies of the &lt;em&gt;First Look at Microsoft Silverlight 2&lt;/em&gt; book that was &lt;a href="http://franksworld.com/blog/archive/2008/03/05/8431.aspx"&gt;included with the MIX08 Swag Bag&lt;/a&gt;.&amp;nbsp; Hopefully enough for everyone, so if you plan to come make sure you &lt;a href="http://whitepdx.com/blogs/kelly/default.aspx"&gt;let Kelly know&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/318/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/318/default.aspx</comments><link>http://adamkinney.com/blog/318/default.aspx</link><pubDate>Fri, 14 Mar 2008 22:33:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/318/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/318/trackback/default.aspx</trackback:ping><category>conferences</category><category>Silverlight</category></item><item><title>NBC Olympics Silverlight - site preview review</title><description>&lt;p&gt;&lt;a href="http://www.pcworld.com/article/id,143232-page,1/article.html"&gt;PC World published a great article on the Olympics website&lt;/a&gt; last Friday which, before going into feature and technical details, begins with this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;How would you like to be handed this IT project: create a website that will present 2,200 hours of live, interactive video, plus integrated broadcast coverage. The site will have huge spikes of traffic, and operate under worldwide scrutiny, so it has to be designed for performance. It has to be done in the next 150 days; no schedule extensions are possible. And it must deliver a brilliant user experience.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If you look at the content, the scalability needs, the experience and the feature set the NBC Olympics application really looks like one to keep an eye on.&amp;nbsp; Instead of pointing you to the demo (1:17:25 - 1:26:30) given during the &lt;a href="http://visitmix.com/blogs/2008Sessions/KYN0801/"&gt;first keynote at MIX08&lt;/a&gt; again, I thought I'd show a few screenshots.&lt;/p&gt; &lt;h2&gt;Detail View&lt;/h2&gt; &lt;p&gt;&lt;a title="Detail View by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2331666770/"&gt;&lt;img height="290" alt="Detail View" src="http://farm4.static.flickr.com/3084/2331666770_f3eaf27250.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This is the default view when you choose a video to watch.&amp;nbsp; Big high-quality video showing commentary, stats and player information.&amp;nbsp; A nice clean look with plenty of other videos to choose form on the side.&lt;/p&gt; &lt;h2&gt;Large View&lt;/h2&gt; &lt;p&gt;&lt;a title="Large View Replay by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2331666730/"&gt;&lt;img height="290" alt="Large View Replay" src="http://farm4.static.flickr.com/3020/2331666730_b832e75d29.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This is the large view of the video which provides that 10ft experience (well maybe 3ft if you're still at your desk).&amp;nbsp; Includes overlaying interactive menu and stats display.&lt;/p&gt; &lt;p&gt;If you compare this screenshot and the previous one you may notice that they are showing off the same &lt;a href="http://en.wikipedia.org/wiki/Lebron_James"&gt;LeBron&lt;/a&gt; dunk.&amp;nbsp; As part of the demo, after the dunk happened in the detail view, they flipped to full screen and then rewound the live video to watch the dunk again in a larger view.&amp;nbsp; We used to just have VCR-like controls on the web, very happy to now see DVR-like controls is becoming the new standard.&lt;/p&gt; &lt;h2&gt;Share with a Friend&lt;/h2&gt; &lt;p&gt;&lt;a title="Share With A Friend by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2330839155/"&gt;&lt;img height="290" alt="Share With A Friend" src="http://farm3.static.flickr.com/2275/2330839155_b74f14e025.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After an alert pops on his screen he switches from basketball to gymnastics.&amp;nbsp; Knowing his wife wouldn't want to miss it he clicks the Share button and away an email goes, likely with link to the live video so they can watch together.&amp;nbsp; Olympics and the social web meet and become friends.&lt;/p&gt; &lt;h2&gt;Sports Browser&lt;/h2&gt; &lt;p&gt;&lt;a title="Sports Browser by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2330839121/"&gt;&lt;img height="290" alt="Sports Browser" src="http://farm3.static.flickr.com/2190/2330839121_2fdbff2ff8.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;With 34 different sports going on at the same time this results in 2200 different hours of video and many many choices of what to watch.&amp;nbsp; That's what the Sports browser is for.&amp;nbsp; Although I'm not quite sure what data points are used to construct the graph it looks interesting.&lt;/p&gt; &lt;h2&gt;Large View with Picture in Picture&lt;/h2&gt; &lt;p&gt;&lt;a title="Picture in Picture by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2330839097/"&gt;&lt;img height="290" alt="Picture in Picture" src="http://farm4.static.flickr.com/3122/2330839097_55af3c83fc.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Much better than toggling between the "Last" button on your remote to monitor to channels is the Picture in Picture feature.&amp;nbsp; I'm guessing along with DVR-like controls this will become another future standard feature, because sometimes you just need to watch more than one video stream to be happy.&lt;/p&gt; &lt;h2&gt;The Control Room&lt;/h2&gt; &lt;p&gt;&lt;a title="Control Room by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2330839073/"&gt;&lt;img height="290" alt="Control Room" src="http://farm3.static.flickr.com/2054/2330839073_b9ab269cca.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And finally the ultimate screen for the arm-chair director, the Control Room.&amp;nbsp; Choose your sport, choose your view and enjoy the bliss of being able to watch more Olympic coverage than ever before.&amp;nbsp; &lt;/p&gt; &lt;p&gt;17 days of 34 sports which results in 2200 hours of video, shown live and then made available as video on-demand, it will be even harder than catching up with the 50 hours of &lt;a href="http://sessions.visitmix.com/"&gt;MIX content&lt;/a&gt; I downloaded.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/317/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/317/default.aspx</comments><link>http://adamkinney.com/blog/317/default.aspx</link><pubDate>Thu, 13 Mar 2008 18:55:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/317/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/317/trackback/default.aspx</trackback:ping><category>MIX</category><category>MIX08</category><category>Silverlight</category></item><item><title>Catching up with Silverlight 2</title><description>&lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://www.flickr.com/photos/funkysurfer/2321025077/in/photostream/"&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2037/2321025077_cf22538d44_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Starting last week on March 5th after &lt;a href="http://visitmix.com/blogs/Joshua/Day-1-Keynote/"&gt;Silverlight 2 Beta 1 was announced,&lt;/a&gt; a lot has been said about Silverlight 2.&amp;nbsp; Presentations have been given, demos have been shown, bits have been released, tutorials have been posted and many conversations have been had.&amp;nbsp; As an attempt to catalog some of the more interesting and useful content, I'm posting my list of highlights since SL2B1 day.&lt;/p&gt; &lt;h2&gt;Overview&lt;/h2&gt; &lt;p&gt;In the unlikely event you haven't found where yet, you can grab the &lt;a href="http://silverlight.net/GetStarted/#betajump"&gt;runtime and tools for Silverlight 2 Beta 1&lt;/a&gt; on Silverlight.net.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Other links to help you get started include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/CT01/"&gt;Building Rich Internet Applications using Silverlight 2&lt;/a&gt; - MIX session presented by &lt;a href="http://blogs.msdn.com/jstegman/"&gt;Joe Stegmen&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mharsh/"&gt;Mike Harsh&lt;/a&gt;, &lt;a href="http://visitmix.com/blogs/2008Sessions/CT01/"&gt;Part 1&lt;/a&gt;, &lt;a href="http://visitmix.com/blogs/2008Sessions/CT02/"&gt;Part 2&lt;/a&gt;  &lt;li&gt;&lt;a href="http://silverlight.net/learn/tutorials/roadmap.aspx"&gt;A Whirlwind Tour&lt;/a&gt; - Jesse Liberty's introduction to Silverlight 2  &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Fundamentals.zip"&gt;Fundamentals Lab&lt;/a&gt; - This lab explores the fundamental tools and features that underpin any Silverlight application.  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/cc189007(VS.95).aspx"&gt;Breaking Changes in Silverlight 2&lt;/a&gt; - This topic discusses the changes made to the Silverlight runtime and Silverlight tools between the Microsoft Silverlight 1.1 Alpha September Refresh and the MIX 2008 release.  &lt;li&gt;&lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/03/05/Xap_2100_-App_2100_-Pow_2100_-Packaging-and-Application-Startup-in-Silverlight-2-Beta-1-_2D00_-Part-1.aspx"&gt;Packaging and Application Startup&lt;/a&gt; - Pete Brown explores the new application model, read &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/03/05/Xap_2100_-App_2100_-Pow_2100_-Packaging-and-Application-Startup-in-Silverlight-2-Beta-1-_2D00_-Part-1.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://community.irritatedvowel.com/blogs/pete_browns_blog/archive/2008/03/05/Xap_2100_-App_2100_-Pow_2100_-Packaging-and-Application-Startup-in-Silverlight-2-Beta-1-_2D00_-Part-2.aspx"&gt;Part 2&lt;/a&gt;  &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Dynamic%20Animations.zip"&gt;Dynamic Animation Lab&lt;/a&gt; - This is a simple lawn mowing simulation that exposes different techniques of leveraging the managed Animation API in Silverlight 2.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Demos&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://memorabilia.hardrock.com/"&gt;Hard Rock Memorabilia&lt;/a&gt; - One of the most talked about demos at MIX08, welcome Deep Zoom!  &lt;li&gt;&lt;a href="http://pulse.sxsw.com/"&gt;Pulse at SXSW&lt;/a&gt; - mashes up twitter, del.icio.us, Technorati and flickr in a very visual and useful way  &lt;li&gt;&lt;a href="http://ria.mail.aol.com"&gt;AOL email client&lt;/a&gt; - a full email client written in Silverlight 2  &lt;li&gt;NBC Olympics - can be seen in the first &lt;a href="http://visitmix.com/blogs/2008Sessions/KYN0801/"&gt;keynote&lt;/a&gt; at MIX08 around 1:17:00, an &lt;a href="http://www.visitmix.com/blogs/News/NBC/"&gt;interview&lt;/a&gt; with Perkins Miller is also available  &lt;li&gt;&lt;a href="http://www.textglow.net/"&gt;TextGlow&lt;/a&gt; - read Word 2007 documents online with Silverlight 2  &lt;li&gt;&lt;a href="http://silverlight.net/community/gallerydetail.aspx?cat=5"&gt;Silverlight.net Community Gallery&lt;/a&gt; - controls demo, RSS reader, SOAP Weather Widget and more  &lt;li&gt;&lt;a href="http://www.miniclip.com/games/tunnel-trouble/en/"&gt;Tunnel Trouble&lt;/a&gt; - a new Silverlight-based game from &lt;a href="http://www.terralever.com/"&gt;Terralever&lt;/a&gt; &lt;li&gt;&lt;a href="http://sl.weatherbug.com/?zip=98052"&gt;WeatherBug&lt;/a&gt; - designed for Silverlight Mobile, you can test the app running on the web.&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Controls&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://silverlight.net/Samples/2b1/SilverlightControls/run/default.html"&gt;Control Demo Page&lt;/a&gt; - see the controls in action  &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=EA93DD89-3AF2-4ACB-9CF4-BFE01B3F02D4&amp;amp;displaylang=en"&gt;Source code and Unit Tests for controls&lt;/a&gt; - download the code  &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T20/"&gt;Creating Rich Dynamic User interfaces with Silverlight 2&lt;/a&gt; - MIX session presented by &lt;a href="http://scorbs.com/"&gt;Karen Corby&lt;/a&gt;  &lt;li&gt;&lt;a href="http://silverlight.net/learn/tutorials/controls.aspx"&gt;Controls Tutorial&lt;/a&gt; - Another Jesse Liberty tutorial  &lt;li&gt;&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;ListBox and ScrollViewer FAQs&lt;/a&gt; - all you ever wanted to know about them and more  &lt;li&gt;&lt;a href="http://wilcoding.xs4all.nl/Wilco/View.aspx?NewsID=212 "&gt;File Upload Component&lt;/a&gt; - Wilco Bauwer builds a File upload and control and shares the source  &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20User%20Controls.zip"&gt;User Controls Lab&lt;/a&gt; - Building Reusable Controls in Silverlight 2  &lt;li&gt;&lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=33677"&gt;Using the Silverlight 2 Canvas&lt;/a&gt; - a screencast by Jesse Liberty  &lt;li&gt;&lt;a href="http://silverlight.net/learn/learnvideo.aspx?video=33733"&gt;Using Silverlight 2 Grids and Stack Panels&lt;/a&gt; - another great screencast by Jesse Liberty  &lt;li&gt;&lt;a href="http://silverlight.net/learn/tutorials/stylestemplates.aspx"&gt;Styling Controls&lt;/a&gt; - another tutorial by Jesse Liberty (he's been very busy)&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Deep Zoom&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/CT06/"&gt;Applications = Designers + Developers&lt;/a&gt; - MIX session presented by &lt;a href="http://nibblestutorials.net/"&gt;Celso Gomes&lt;/a&gt; and &lt;a href="http://www.kirupa.com/"&gt;Kirupa Chinnathambi&lt;/a&gt; , Deep Zoom heatured in the second part &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T23/"&gt;Hard Rock: Behind the Music with Deep Zoom&lt;/a&gt; - MIX Session presented by &lt;a href="http://www.microsoftregionaldirectors.com/profile.aspx?rd=1089"&gt;Scott Stanfield&lt;/a&gt;  &lt;li&gt;&lt;a title="Silverlight 2 - First Attempt with MultiScaleImage" href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/03/05/10217.aspx"&gt;First Attempt with MultiScaleImage&lt;/a&gt; - Mike Taulty shows how to implement control over Deep Zoom, followed by &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/03/08/10231.aspx"&gt;an update&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/07/silverlight-2-deep-zoom-demo.aspx"&gt;Deep Zoom Demo&lt;/a&gt; - Mike Ormond shares Deep Zoom code and then &lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/07/deep-zoom-demo-now-with-mouse-wheel-support.aspx"&gt;adds mouse wheel support&lt;/a&gt; in part 2  &lt;li&gt;&lt;a href="http://blogs.msdn.com/expression/archive/2008/03/05/download-the-preview-of-the-deep-zoom-composer.aspx"&gt;Deep Zoom Composer Preview&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/expression/archive/2008/03/05/deep-zoom-composer-user-guide.aspx"&gt;Deep Zoom Composer Preview - User Guide&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Mobile&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T12/"&gt;Mobile Devices and Microsoft Silverlight&lt;/a&gt; - MIX session presented by &lt;a href="http://blogs.msdn.com/amit_chopra/"&gt;Amit Chopra&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/davidklinems/"&gt;David Kline&lt;/a&gt;  &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/C02/"&gt;Using Microsoft Silverlight for Creating Rich Mobile User Experiences&lt;/a&gt; - MIX session presented by &lt;a href="http://www.giorgiosardo.com/"&gt;Giorgio Sardo&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.allaboutsymbian.com/media/item/AAS_Videocast_28_AAS_talks_to_Microsoft_and_developers_about_Silverlight_Mobile.php"&gt;Brad Becker interview&lt;/a&gt; - about the recent announcement about Silverlight Mobile.  &lt;li&gt;&lt;a href="http://www.visitmix.com/blogs/Joshua/WeatherBug/"&gt;WeatherBug demo&lt;/a&gt;  &lt;li&gt;&lt;a href="http://visitmix.com/blogs/OpenSpace/MIXr-Silverlight-Mobile-Application-Demo/"&gt;MIXr demo&lt;/a&gt;  &lt;li&gt;&lt;a title="Silverlight for Mobile primer session at MIX08" href="http://adamkinney.com/blog/315/default.aspx"&gt;Silverlight for Mobile primer session at MIX08&lt;/a&gt; - my notes from the first mobile session at MIX&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Dynamic Language Runtime&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T28/"&gt;Microsoft Silverlight and Dynamic Languages&lt;/a&gt; - MIX session presented by &lt;a href="http://www.iunknown.com/"&gt;John Lam&lt;/a&gt; and &lt;a href="http://jimmy.schementi.com/blog/"&gt;Jimmy Schementi&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.iunknown.com/2008/03/dynamic-silverl.html"&gt;Hello World! demo&lt;/a&gt; - demo from MIX session  &lt;li&gt;&lt;a href="http://www.iunknown.com/2008/03/dynamic-silve-1.html"&gt;Managed JScript and flickr&lt;/a&gt; -demo from MIX session  &lt;li&gt;&lt;a href="http://www.iunknown.com/2008/03/dynamic-silve-2.html"&gt;Integrating Silverlight and ASP.NET MVC&lt;/a&gt; - demo from MIX session  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/pl-pl/magazine/cc300810(en-us).aspx"&gt;Iron Python&lt;/a&gt; - Jimmy Schementi's MSDN article  &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163344.aspx"&gt;Iron Python and the DLR&lt;/a&gt; - Bill Chiles's MSDN Article  &lt;li&gt;&lt;a href="http://visitmix.com/blogs/OpenSpace/John-Lam-on-Ruby-Ruby-Ruby/"&gt;John Lam on Ruby, Ruby, Ruby&lt;/a&gt; - Open Space session at MIX08&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Moonlight&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T31/"&gt;Exploring Moonlight : Novell's Implementation of Silverlight on Linux&lt;/a&gt; - MIX session presented by &lt;a href="http://tirania.org/blog/"&gt;Miguel de Icaza&lt;/a&gt;  &lt;li&gt;&lt;a title="http://tirania.org/blog/archive/2008/Mar-03.html" href="http://tirania.org/blog/archive/2008/Mar-03.html"&gt;Pre-Mix 08: Moonlight Updates&lt;/a&gt;  &lt;li&gt;&lt;a href="http://tirania.org/blog/archive/2008/Mar-08.html"&gt;Channel9 works with Moonlight!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Physics&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.farseergames.com/blog/post/New-Farseer-Physics-Engine-Release-for-Silverlight-20-Beta-1.aspx"&gt;Farseer Physics Engine&lt;/a&gt; - an open source physics engine for Silverlight 2  &lt;li&gt;&lt;a href="http://www.andybeaulieu.com/silverlight/2.0/polygondemo/testpage.html"&gt;Polygon Demo&lt;/a&gt; - Andy Beaulieu's recent demo using Farseer  &lt;li&gt;&lt;a href="http://chriscavanagh.wordpress.com/2008/03/06/silverlight-2-2d-physics-revisited/"&gt;Heads Will Roll demo&lt;/a&gt; - Chris Cavanagh updates his sample, click "move platforms" to make the wheels/heads go flying&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Networking and Data&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Networking%20and%20Data.zip"&gt;Networking and Data Lab&lt;/a&gt; - In this hands-on lab, you will look at using a variety of remote data sources and communication techniques to retrieve data for a Silverlight application.  &lt;li&gt;&lt;a href="http://visitmix.com/blogs/2008Sessions/T13/"&gt;Working with Data and Web Services in Microsoft Silverlight 2&lt;/a&gt; - MIX Session presented by &lt;a href="http://blogs.msdn.com/eugeneos/default.aspx"&gt;Eugene Osovetsky&lt;/a&gt;  &lt;li&gt;&lt;a href="http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx"&gt;Sockets Sample&lt;/a&gt;  &lt;li&gt;&lt;a href="http://silverlight.net/learn/tutorials/databinding.aspx"&gt;Data Binding Tutorial&lt;/a&gt; - A Jesse Liberty tutorial&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Browser Integration&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.microsoft.com/download/9/4/e/94e080c7-d462-4118-b07a-55578d64bc43/Silverlight%202%20Beta%201%20-%20Browser%20Integration.zip"&gt;Browser Integration Lab&lt;/a&gt; - In this hands-on lab, you will look at the places where DHTML and Silverlight meet.  &lt;li&gt;&lt;a href="http://timheuer.com/blog/archive/2008/03/09/calling-javascript-functions-from-silverlight-2.aspx"&gt;Calling JavaScript functions&lt;/a&gt; - Tim Heuer tutorial&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Tools&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.ssblueprints.net/sharepoint/"&gt;Silverlight Blueprint for Sharepoint&lt;/a&gt; -&amp;nbsp; This is the answer to "how do you use Silverlight in Sharepoint?", Micheal Lehman has an &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=388339"&gt;interview&lt;/a&gt; live on Ch9  &lt;li&gt;&lt;a href="http://photozoom.mslivelabs.com"&gt;PhotoZoom&lt;/a&gt; - Want a Deep Zoom Album of your own? try this site.&amp;nbsp; Look for the "processing" notification when attempting to view your albums, the site is rather busy right now  &lt;li&gt;&lt;a href="http://www.flawlesscode.com/post/2008/03/Blogengine-NET-extension-for-embedding-a-Silverlight-plugin.aspx"&gt;BlogEngine.NET Silverlight Extension&lt;/a&gt; - I would expect to see more of these start cropping up  &lt;li&gt;&lt;a href="http://silverlight.net/blogs/jesseliberty/archive/2008/03/09/tip-of-the-day-great-silverlight-programmer-utilities.aspx"&gt;Programmer Utilities&lt;/a&gt; - Jesse Liberty's suggested "other" tools  &lt;li&gt;&lt;a href="http://www.telerik.com/products/silverlight/overview.aspx"&gt;Telerik Controls&lt;/a&gt; - There are lot of cool examples under the Online demos section.&amp;nbsp; Very cool to see the Animations framework in there.  &lt;li&gt;&lt;a href="http://www.accusoft.