<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, Continuum Explorer</title><description>Exploring the Microsoft Client Continuum</description><link>http://adamkinney.com</link><language>en-us</language><pubDate>Sat, 19 Jul 2008 19:08:42 GMT</pubDate><generator>Oxite</generator><item><title>My notes from First Look at Using Expression Blend with Silverlight 2</title><description>&lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;img src="http://silverlight2blogpost.s3.amazonaws.com/step60.png" alt="" /&gt; &lt;/p&gt; &lt;p&gt;I won't do this after every Scott Guthrie post, but I received thankful comments on &lt;a href="http://adamkinney.com/blog/310/default.aspx"&gt;My notes from the First Look at Silverlight 2&lt;/a&gt;, that I thought I would share again.&lt;/p&gt; &lt;p&gt;In his latest post &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx"&gt;First Look at Using Expression Blend with Silverlight 2&lt;/a&gt;, Scott walks through the features of Blend that will help you build Silverlight 2 applications.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The basis of this article, along with the release of Beta 1 of Silverlight 2 we are shipping tool support including an Expression Blend 2.5 March preview.  &lt;li&gt;Blend and VS2008 share the same solution/project file format  &lt;li&gt;Very useful split view in Blend includes WYSIWYG designer and XAML source view editor.&amp;nbsp; You can click on an element in the design view and it will move to the node in the source view.  &lt;li&gt;Reflecting the platform update you now get more many assets to choose from.&amp;nbsp; If I remember correctly in Expression 2 for Silverlight 1.0 support you had a Canvas, Rectangle, Ellipse and a Path.  &lt;li&gt;As a design feature, I really like the guidelines and positioning markers in Blend.  &lt;li&gt;Scott's tip on managing the Blend interface shows off its flexibility.&amp;nbsp; +1 for vector UIs and WPF.  &lt;li&gt;Another cool design feature, the visual way you can define the Grid properties.&amp;nbsp;&amp;nbsp; Allows the designer to reign in the power of the Grid.  &lt;li&gt;&lt;strong&gt;Personal Favorite: &lt;/strong&gt;Nice, this one was new to me.&amp;nbsp; I've known how to create rounded Rectangles, but Scott shows off how to create a rounded Border which is then wrapped around a Textbox to create a rounded Textbox.  &lt;li&gt;Design time preview for Silverlight 2 applications in VS2008.  &lt;li&gt;Make sure to read the part about WPF style Databinding.&amp;nbsp; &lt;br&gt;&lt;br&gt;"INotifyPropertyChanged?"&lt;br&gt;"Yes, yes you did."&lt;br/&gt;&lt;br /&gt; &lt;li&gt;And surprise, Expression Blend understands Databinding and DataTemplates!  &lt;li&gt;Redefining Control templates feels like magic.&amp;nbsp; Scott even dips into the Parts Model a bit with the Button template.  &lt;li&gt;Another cool designer feature, Drag and drop styles onto controls to apply them.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Yes, yes you did.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/313/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/313/default.aspx</comments><link>http://adamkinney.com/blog/313/default.aspx</link><pubDate>Fri, 29 Feb 2008 18:14:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/313/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://adamkinney.com/blog/313/trackback/default.aspx</trackback:ping><category>Expression Blend</category><category>Silverlight</category></item><item><title>Jeff Prosise on Best Practices for Silverlight 1.0</title><description>&lt;p style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/08/LA/WickedCode/default.aspx"&gt;&lt;img src="http://msdn.microsoft.com/msdnmag/images/covers/Launch08cover.gif" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In the Launch 2008 edition of MSDN Magazine, you will find an article by Jeff Prosise entitled &lt;a href="http://msdn.microsoft.com/msdnmag/issues/08/LA/WickedCode/default.aspx"&gt;Silverlight Tips, Tricks and Best Practices&lt;/a&gt;.&amp;nbsp; Even though its already been posted to &lt;a href="http://twitter.com/silverlightnews"&gt;Silverlight News&lt;/a&gt;, I felt compelled to point this article out.&lt;/p&gt; &lt;p&gt;If you are developing Silverlight 1.0 applications, this is a must read.&amp;nbsp; Mr. Prosise does a fine job recording tricks and techniques many have discovered as a result of working on Silverlight applications.&amp;nbsp; Take notes and keep them close.&lt;/p&gt; &lt;p&gt;A good blog to watch for more performance tips is &lt;a href="http://blogs.msdn.com/seema/default.aspx"&gt;Seema Ramchandani's blog&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/312/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/312/default.aspx</comments><link>http://adamkinney.com/blog/312/default.aspx</link><pubDate>Thu, 28 Feb 2008 21:39:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/312/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://adamkinney.com/blog/312/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>What's the best Silverlight sample/site/demo you've seen?</title><description>&lt;p&gt;I am often asked which Silverlight samples are "great examples of using the technology".&amp;nbsp; And when responding I like to append that requirement "...to create a better experience."&amp;nbsp;&amp;nbsp; My goal is to compile a list of my top 10 favorite Silverlight examples based on that criteria.&lt;/p&gt; &lt;p&gt;And before posting that list I thought I'd ask around for other suggestions.&amp;nbsp; What's the best Silverlight example you've seen?&lt;/p&gt; &lt;p&gt;I've been tracking suggestions &lt;a href="http://del.icio.us/AdamKinney/SLFavorites"&gt;on del.icio.us&lt;/a&gt; if you'd like to take a look at what others have suggested already.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/311/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/311/default.aspx</comments><link>http://adamkinney.com/blog/311/default.aspx</link><pubDate>Fri, 22 Feb 2008 23:45:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/311/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>9</slash:comments><trackback:ping>http://adamkinney.com/blog/311/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>My notes from the First Look at Silverlight 2</title><description>&lt;p&gt;Today, Scott Guthrie posted a &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx"&gt;First Look at Silverlight 2&lt;/a&gt; as an hearty appetizer before the first public beta of Silverlight 2.&amp;nbsp; (Notice the "2" and not "2.0" anymore.)&lt;/p&gt; &lt;p&gt;Along with his overview he built a simple Digg client and 8 tutorials on how this is done using the new features in Silverlight 2.&amp;nbsp; I've read through each Tutorial and I thought I'd share my notes and comments:&lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-1-creating-quot-hello-world-quot-with-silverlight-2-and-vs-2008.aspx"&gt;&lt;strong&gt;Part 1: Creating "Hello World" with Silverlight 2 and VS 2008&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;New Project Templates&lt;/strong&gt; - Very simple to create a new Silverlight application and accompanying test web application.&amp;nbsp; You can also see that there is the option to Add the application to an existing Web Application as well, which is a more likely production scenario. &lt;li&gt;&lt;strong&gt;Application package (.xap)&lt;/strong&gt; - One compressed file to reference that instantiates your application by way of the object tag.&amp;nbsp; Beauty!&amp;nbsp; This will make it much easier to embed Silverlight applications.&amp;nbsp; &lt;li&gt;&lt;strong&gt;VS Support&lt;/strong&gt; - XAML intellisense, code intellisense and shortcuts for event handler creation.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-2-using-layout-management.aspx"&gt;&lt;strong&gt;Part 2: Using Layout Management&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Stack Panel &lt;/strong&gt;- arranges controls horizontally or vertically based on control size and margin &lt;li&gt;&lt;strong&gt;Grid&lt;/strong&gt; - very powerful multi-row, multi-column layout in some ways similar to an HTML table.&amp;nbsp; I really like that it uses attached properties for placement rather than an embedded structure. &lt;li&gt;&lt;strong&gt;Controls&lt;/strong&gt; -Border control is nice, and he also mentioned the WatermarkedTextBox.&amp;nbsp; Not only is there a TextBox now (yay!) but there's a watermarked sub class. &lt;li&gt;&lt;strong&gt;Resize the Application &lt;/strong&gt;- Smart vector-based UIs are a beautiful thing.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-3-using-networking-to-retrieve-data-and-populate-a-datagrid.aspx"&gt;&lt;strong&gt;Part 3: Using Networking to Retrieve Data and Populate a DataGrid&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;More than before&lt;/strong&gt; -"call remote REST, SOAP/WS*, RSS, JSON, and XML HTTP", that just speaks for itself. &lt;li&gt;&lt;strong&gt;Cross Domain Access &lt;/strong&gt;- respecting the cross-domain policy file, another huge deal &lt;li&gt;&lt;strong&gt;LINQ to XML&lt;/strong&gt; - I just recently started using LINQ and its just plain fun, even if you're not a total data geek.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-4-using-style-elements-to-better-encapsulate-look-and-feel.aspx"&gt;&lt;strong&gt;Part 4: Using Style Elements to Better Encapsulate Look and Feel&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Style&lt;/strong&gt; - If you're used to CSS or WPF Styles, the ship has arrived.&amp;nbsp; Its time to leverage your skills and make that UI you've always wanted. Or just happily minimize the size of your XAML files by reducing repeated code. &lt;br&gt;&lt;br&gt; This is one of my personal favorite new features and I'm looking forward to talking about it more.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-5-using-the-listbox-and-databinding-to-display-list-data.aspx"&gt;&lt;strong&gt;Part 5: Using the ListBox and DataBinding to Display List Data&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Listbox&lt;/strong&gt; - another thankful addition to the Controls now available &lt;li&gt;&lt;strong&gt;Databinding&lt;/strong&gt; - another feature like LINQ that I have just started using more, like ASP.NET databinding but a little different.&amp;nbsp; Definitely take a look at the DataTemplate.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-6-using-user-controls-to-implement-master-detail-scenarios.aspx"&gt;&lt;strong&gt;Part 6: Using User Controls to Implement Master/Details Scenarios&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;User Controls&lt;/strong&gt; - Great VS Support for the type of encapsulation you have comfortable with in .NET.&amp;nbsp; You can do &lt;a href="http://adamkinney.com/blog/289/default.aspx"&gt;this in 1.0 with JavaScript&lt;/a&gt; and XAML, but its just not as easy as this.&amp;nbsp; Definitely useful when &lt;a href="http://windowsclient.net/wpf/white-papers/thenewiteration.aspx#bestdesigners"&gt;Striving for Reuse&lt;/a&gt;. &lt;li&gt;&lt;strong&gt;Using DataContext&lt;/strong&gt; - ...leads to Binding availability, definitely worth looking at Scott's sample to know why this is exciting.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-7-using-control-templates-to-customize-a-control-s-look-and-feel.aspx"&gt;&lt;strong&gt;Part 7: Using Templates to Customize Control Look and Feel&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Content property&lt;/strong&gt; -more goodness from WPF, the Button has a Content property not just Text, because you can redefine the Content as needed.&amp;nbsp; Need a button with an Image icon, just redefine the Content instead of building a new button.&amp;nbsp; +1 for composition. &lt;li&gt;&lt;strong&gt;Control Template &lt;/strong&gt;- even more powerful than styling, you can completely reskin the control by redefining its template.&amp;nbsp; Go from the standard rounded rectangle to an animated themed button and maintain all the interactivity and events.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-8-creating-a-digg-desktop-application-using-wpf.aspx"&gt;&lt;strong&gt;Part 8: Creating a Digg Desktop Version of our Application using WPF&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Copy and Paste &lt;/strong&gt;-&amp;nbsp; Copy and paste the code into a WPF application and after two small changes you now have a desktop application.&amp;nbsp; Nice.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://adamkinney.com/blog/310/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/310/default.aspx</comments><link>http://adamkinney.com/blog/310/default.aspx</link><pubDate>Fri, 22 Feb 2008 19:26:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/310/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>4</slash:comments><trackback:ping>http://adamkinney.com/blog/310/trackback/default.aspx</trackback:ping><category>Silverlight</category></item><item><title>Life at Microsoft via Ch10</title><description>&lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a title="7_9_sampyhitman2 by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2262483874/"&gt;&lt;img height="160" alt="7_9_sampyhitman2" src="http://farm3.static.flickr.com/2104/2262483874_ecec471709_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;I could share the video here and use the embedded player, but I think for the full experience you should head over to the Channel 10 site and check out the latest video &lt;a href="http://on10.net/blogs/tina/Life-At-Microsoft/"&gt;Life at Microsoft - The Truth Revealed&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;A few of us chipped in as actors to play out the very funny script written by Tina Wood.&amp;#160; Add in Scott Finley's awesome camera and editing work and you have an enjoyable video.&lt;/p&gt;  &lt;p&gt;I've also uploaded &lt;a href="http://flickr.com/photos/adamkinney/sets/72157603902557513/"&gt;my favorite screen captures&lt;/a&gt; to Flickr in a big part because I don't want to keep these embarrassing shots to myself.&lt;/p&gt;  &lt;p&gt;Might be time to head to Hollywood...&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/309/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/309/default.aspx</comments><link>http://adamkinney.com/blog/309/default.aspx</link><pubDate>Wed, 13 Feb 2008 08:37:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/309/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>4</slash:comments><trackback:ping>http://adamkinney.com/blog/309/trackback/default.aspx</trackback:ping><category>Channel 10</category><category>Microsoft</category></item><item><title>Live@edu - site review</title><description>&lt;p&gt;We often talk about the the "rich experience" that Silverlight can deliver on the web, but we don't always see it.&amp;nbsp; Today I was pointed to a very nice-looking site that exemplifies "richness".&lt;/p&gt; &lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a title="Live@edu Home by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629634/"&gt;&lt;img height="165" alt="Live@edu Home" src="http://farm3.static.flickr.com/2176/2249629634_5a96792304_m.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;The site is &lt;a href="http://my.Liveatedu.com"&gt;Live@edu&lt;/a&gt;, a portal site used to explain Live Services to global students.&amp;nbsp; Within that statement we find a few requirements, keep close to the established Live brand, design an engaging, pithy and attractive experience, organize a large amount of content and localize to handle multiple languages.&lt;/p&gt; &lt;p&gt;The site was built by the talented Coloradoans of &lt;a href="http://mondorobot.com/"&gt;Mondo Robot&lt;/a&gt; using Silverlight 1.0.&amp;nbsp; Expression Blend was used to design the animations, but beyond that I don't much about the process.&amp;nbsp; Sounds like a good interview opportunity.&lt;/p&gt; &lt;p&gt;&lt;a href="http://my.liveatedu.com/"&gt;Visiting the site&lt;/a&gt; will provide the best experience but I'd like to point out a few concepts, doing my best to explain with still images.&lt;/p&gt;&lt;a title="Live@edu languages support by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629656/"&gt;&lt;img height="177" alt="Live@edu languages support" src="http://farm3.static.flickr.com/2136/2249629656_bfce526cb9.jpg" width="500" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;Multiple Languages&lt;br&gt;&lt;/strong&gt;20 different languages are supported ranging from English (United States), Dutch and Chinese (Simplified).&amp;nbsp; After selecting a new language via the combo box in the upper right, a loading animation pops up the old text fades out and the new text fades.&amp;nbsp; I've seen a few Silverlight sites using multiple languages, but known pulled off this smoothly.&lt;/p&gt;&lt;a title="Live@edu sliding menu by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629690/"&gt;&lt;img height="292" alt="Live@edu sliding menu" src="http://farm3.static.flickr.com/2172/2249629690_6d7ded24a0.jpg" width="500" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;Smart-scaling UI&lt;br&gt;&lt;/strong&gt;While some view the web on 1920x1200 resolutions others are running 1024x768 resolutions.&amp;nbsp; And of course, others may be viewing the site non-maximized windows or even mobile.&amp;nbsp; Screen real estate is a huge commodity, vertical space even more so (except for those of you lucky enough to be running a Tablet).&lt;/p&gt; &lt;p&gt;What I like about this site is that it addresses the smaller screen resolution by making the navigation smart.&amp;nbsp; If you don't have much vertical space, the main navigation is hidden and slides in when needed.&amp;nbsp; Plus the whole site scales proportionately as well.&amp;nbsp; +1 for vector UIs (and scalable PNGs).&lt;/p&gt;&lt;a title="Live@edu transition by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629738/"&gt;&lt;img height="444" alt="Live@edu transition" src="http://farm3.static.flickr.com/2043/2249629738_10319b6c30.jpg" width="500" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;Great Transitions&lt;br&gt;&lt;/strong&gt;When navigating between sections, the page doesn't completely reload and everything is loaded asynchronously.&amp;nbsp; But in this case, I don't get lost or miss the click and wipe of the screen letting me know the new content has arrived.&amp;nbsp; Each selection has a visual transition.&amp;nbsp; Some of them very smooth like the color blend pictured above.&lt;/p&gt; &lt;p&gt;The content is very fun, I've added a few more pictures below as enticing teasers.&amp;nbsp; Props for getting claymation into the mix.&lt;/p&gt;&lt;a title="Live@edu &amp;quot;I Scream&amp;quot; by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629764/"&gt;&lt;img style="margin: 10px" height="76" alt="Live@edu &amp;quot;I Scream&amp;quot;" src="http://farm3.static.flickr.com/2280/2249629764_bbf7236334_t.jpg" width="100" /&gt;&lt;/a&gt; &lt;a title="Live@edu Film Contest by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629794/"&gt;&lt;img style="margin: 10px" height="76" alt="Live@edu Film Contest" src="http://farm3.static.flickr.com/2181/2249629794_c6bc0cb907_t.jpg" width="100" /&gt;&lt;/a&gt; &lt;a title="Live@edu School Profiles by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2249629832/"&gt;&lt;img style="margin: 10px" height="76" alt="Live@edu School Profiles" src="http://farm3.static.flickr.com/2142/2249629832_cc046824a1_t.jpg" width="100" /&gt;&lt;/a&gt;  &lt;p&gt;&lt;strong&gt;But its not all peaches and cream...&lt;br&gt;&lt;/strong&gt;"How is this accessible or SEO-friendly?"&amp;nbsp; you may be charging up to slam down as a comment.&lt;/p&gt; &lt;p&gt;Well it's not.&lt;/p&gt; &lt;p&gt;Upcoming improvements in the platform will make this type of friendliness more possible in the future.&amp;nbsp; I haven't completely checked out the site, that might be using the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb980024.aspx"&gt;Accessibility object&lt;/a&gt; to give an idea of the content along with an actionable item.&amp;nbsp; They may be rendering differently when a search engine is detected as requesting the page.&amp;nbsp; And that might not be...yet.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Going to start a Top 5&lt;br&gt;&lt;/strong&gt;Overall, I really dig the design and the experience and I'm going to add this to my Top 5 favorite Silverlight applications.&amp;nbsp; I've been thinking about the Top 5 for a little while, but its on now.&amp;nbsp; &lt;a href="http://my.liveatedu.com/"&gt;Live@edu&lt;/a&gt; is right up there with &lt;a href="http://tvdeep.mnet.com/DetailVod_view.asp?vodid=3788&amp;amp;vodSrvid=3005"&gt;MNet&lt;/a&gt;.&amp;nbsp; Who are the other three?&amp;nbsp; I'm not sure yet...&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/308/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/308/default.aspx</comments><link>http://adamkinney.com/blog/308/default.aspx</link><pubDate>Thu, 07 Feb 2008 23:19:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/308/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/308/trackback/default.aspx</trackback:ping><category>design</category><category>review</category><category>Silverlight</category></item><item><title>Silverlight User Groups</title><description>&lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;a title="Silverlight Hat by adKinn, on Flickr" href="http://www.flickr.com/photos/adamkinney/2245262337/"&gt;&lt;img height="86" alt="Silverlight Hat" src="http://farm3.static.flickr.com/2035/2245262337_210a261473_t.jpg" width="100" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;I just noticed Dave Campbell's post &lt;a href="http://geekswithblogs.net/WynApseTechnicalMusings/archive/2008/02/05/119309.aspx"&gt;announcing the 3rd meeting of the Phoenix Silverlight User's Group Meeting tomorrow night&lt;/a&gt;.&amp;#160; Being one of the first dedicated Silverlight groups I've heard of, I feel compelled to send some Silverlight swag.&amp;#160; I bet we still have some of those &lt;a href="http://flickr.com/photos/adamkinney/2245262337/"&gt;Silverlight hats from MIX07&lt;/a&gt; lying around...&lt;/p&gt;  &lt;p&gt;I've heard of a few other groups focusing on Silverlight or a combination of WPF/Silverlight/UX including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.zamdes.com/"&gt;ZamDes&lt;/a&gt; in New Zealand&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pdxux.net/"&gt;PDXUX&lt;/a&gt; in Portland, OR, US (I'm thinking about driving down for their next meeting on March 18th)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighters.co.uk/"&gt;Silverlighters&lt;/a&gt; (which doesn't appear to have made it past the site creation step...)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I am guessing some existing groups may morph like the &lt;a href="http://ria5280.org"&gt;Denver RIA Developer Group&lt;/a&gt;, which appears to have been an Adobe Flex User Group that has now opened its doors to Silverlight and AJAX developers, too.&lt;/p&gt;  &lt;p&gt;Anyone know of other WPF/Silverlight/UX special interest groups that have formed?&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/307/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/307/default.aspx</comments><link>http://adamkinney.com/blog/307/default.aspx</link><pubDate>Wed, 06 Feb 2008 05:41:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/307/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>2</slash:comments><trackback:ping>http://adamkinney.com/blog/307/trackback/default.aspx</trackback:ping><category>conferences</category><category>Silverlight</category></item><item><title>Silverlight 1.0 Bar Chart Tutorial</title><description>&lt;div style="float: right; margin-bottom: 10px; margin-left: 10px"&gt;&lt;img src="http://adamkinney.com/images/blog/sl_chart_200.jpg" alt="" /&gt; &lt;/div&gt; &lt;p&gt;I've seen this request many times:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;How do I make a Chart in Silverlight?&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I'm going to show you that with some simple math and a little bit Silverlight knowledge, you too, can enjoy the clarity of a chart on your web page.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Technically, the goal is to build a simple reusable horizontal bar chart using Silverlight 1.0 and dynamic data.&amp;nbsp; The code will be written in XAML and JavaScript and I will be using Visual Studio 2008 as my editor.&amp;nbsp; How you get the data to the app is up to you, but to keep this simple, I will be using local JSON formatted data.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Creating the Application&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The first step is the application creation.&amp;nbsp; I will base my project on the Silverlight Script Web template that comes with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=25144C27-6514-4AD4-8BCB-E2E051416E03&amp;amp;displaylang=en"&gt;Silverlight Tools Alpha for Visual Studio 2008&lt;/a&gt;.&amp;nbsp; The majority of the project will remain relatively unchanged and most of the work will be done in the Chart Control files to be added.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;File -&amp;gt; New -&amp;gt; Web Site...  &lt;li&gt;Choose the Silverlight Script Web template  &lt;li&gt;Give the project a name, Let's use &lt;em&gt;SilverlightBarChart&lt;/em&gt;  &lt;li&gt;Hit OK&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Now we need to clear the template XAML and JavaScript:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Open Scene.xaml  &lt;li&gt;Clear the contents of the root Canvas, only the opening and closing Canvas elements should remain.  &lt;li&gt;Set the x:Name property of the root Canvas to &lt;em&gt;mainCanvas&lt;/em&gt;  &lt;li&gt;Open Scene.js  &lt;li&gt;Remove all event handler methods, except&lt;strong&gt; &lt;/strong&gt;&lt;em&gt;handleLoad&lt;/em&gt;  &lt;li&gt;Make sure you remove the comma after the &lt;em&gt;handleLoad&lt;/em&gt; method  &lt;li&gt;Clear the contents of the &lt;em&gt;handleLoad&lt;/em&gt; method&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We've created a clean slate.&amp;nbsp; If you hit Run, you will see a stark white page.&amp;nbsp; A chart is more than a white page, though, so let's start adding the components.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Adding the Background and Container&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The first piece we need is the background.&amp;nbsp; Not only does it serve the purpose of a contrasting color, but also it acts as the container for the bars.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;File -&amp;gt; New -&amp;gt; File...  &lt;li&gt;Choose the Silverlight JScript Page template  &lt;li&gt;Name the file Chart.xaml  &lt;li&gt;In the root Canvas of the Chart.xaml file add the following XAML:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;&amp;lt;Rectangle Width="640" Height="480" Fill="#0f0f0f" Stroke="#2b2b2b" StrokeThickness="1" /&amp;gt;&lt;br&gt;&amp;lt;Canvas x:Name="barContainer"&amp;gt;&lt;br&gt;&amp;lt;/Canvas&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;The Rectangle is used to style the background and the Canvas is a named container for us to reference in the code to dynamically add bars.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Return to Scene.js  &lt;li&gt;Add the following code in the &lt;em&gt;handleLoad&lt;/em&gt; method:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;this.plugIn = plugIn;&lt;br&gt;this.mainCanvas = plugIn.content.findName("mainCanvas");&lt;br&gt;this.downloader = this.plugIn.createObject("downloader");&lt;br&gt;this.downloader.addEventListener("completed", Silverlight.createDelegate(this, this.onCompleted));&lt;br&gt;this.downloader.open("GET", "Chart.xaml");&lt;br&gt;this.downloader.send();&lt;/code&gt;&lt;/p&gt; &lt;p&gt;The first two lines are setting variables for later use.&amp;nbsp; &lt;em&gt;this.plugIn&lt;/em&gt; refers to the Silverlight application instance.&amp;nbsp; &lt;em&gt;this.mainCanvas&lt;/em&gt; is a reference to the named Canvas in the Scene.xaml.&lt;/p&gt; &lt;p&gt;The next four lines create a &lt;a href="http://msdn2.microsoft.com/en-us/library/bb979676.aspx"&gt;Downloader&lt;/a&gt; object which is set to asynchronously fetch the Chart.xaml file.&amp;nbsp; Upon completion of downloading the file it will call the &lt;em&gt;onCompleted&lt;/em&gt; method.&amp;nbsp; Now let's add that method so it can be successfully called.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;In the Scene.js file after the &lt;em&gt;handleLoad&lt;/em&gt; method's closing bracket, add a comma  &lt;li&gt;After the comma add the &lt;em&gt;onCompleted&lt;/em&gt; method as seen below:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;onCompleted: function(sender, args)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var chartTarget = this.plugIn.content.createFromXamlDownloader(sender, "");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.mainCanvas.children.add(chartTarget);&lt;br&gt;}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;This function is called after the downloader object has completed downloading the Chart.xaml file.&amp;nbsp; &lt;em&gt;sender&lt;/em&gt; is a reference to the downloader object which now holds the content of the xaml file.&amp;nbsp; Using the &lt;a href="http://msdn2.microsoft.com/en-us/bb412362.aspx"&gt;createFromXamlDownloader&lt;/a&gt; method, we create a new Silverlight object based on the downloader instance.&amp;nbsp; The new object is then added to the children collection of &lt;em&gt;mainCanvas&lt;/em&gt; in order for the object to render and become interactive.&lt;/p&gt; &lt;p&gt;Now hit Run and you will see an asynchronously loaded gray rectangle.&amp;nbsp; We are really cooking now.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Adding the Bars&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It takes two steps to add the bars to the chart.&amp;nbsp; First we need to create the reusable bars as separate components and then we need to add code to the Chart to create the bars dynamically based on the data.&lt;/p&gt; &lt;p&gt;Let's start by creating the bar component.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;File -&amp;gt; New -&amp;gt; File...  &lt;li&gt;Choose the Silverlight JScript Page template  &lt;li&gt;Name the file Bar.xaml  &lt;li&gt;In the root Canvas of the Bar.xaml file add the following XAML:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;&amp;lt;Canvas.Background&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearGradientBrush.GradientStops&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;GradientStop Offset="0" Color="#00b5fb"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;GradientStop Offset="1" Color="#004fac"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearGradientBrush.GradientStops&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearGradientBrush&amp;gt;&lt;br&gt;&amp;lt;/Canvas.Background&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Our bar is simply a Canvas painted with a LinearGradientBrush ranging from light blue to dark blue.&lt;/p&gt; &lt;p&gt;Now we'll modify the &lt;em&gt;Chart&lt;/em&gt; class so it uses the bar control to display the data.&amp;nbsp; The majority of the code here is the math used to size and position the bars properly.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Open Chart.js  &lt;li&gt;Add the following parameters to the &lt;em&gt;SilverlightBarChart.Chart&lt;/em&gt; function: &lt;em&gt;plugIn&lt;/em&gt;, &lt;em&gt;target&lt;/em&gt;, &lt;em&gt;data&lt;/em&gt;  &lt;li&gt;Within the brackets of the &lt;em&gt;SilverlightBarChart.Chart&lt;/em&gt; function add the following code:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;this.plugIn = plugIn;&lt;br&gt;this.target = target;&lt;br&gt;this.data = data;&lt;br&gt;this.barContainer = this.target.findName("barContainer");&lt;br&gt;this.bars = [];&lt;br&gt;this.padding = 5;&lt;br&gt;this.height = 480;&lt;br&gt;this.width = 640;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;The first three lines store the parameters for later use.&amp;nbsp; &lt;em&gt;this.plugIn&lt;/em&gt; refers to the Silverlight application instance. &lt;em&gt;this.target&lt;/em&gt; represents the Silverlight object that our JavaScript class is wrapping and &lt;em&gt;this.data&lt;/em&gt; represents the JSON formatted data.&lt;/p&gt; &lt;p&gt;The next five lines set properties for rendering the dynamic bars.&amp;nbsp; &lt;em&gt;this.barContainer&lt;/em&gt; stores a reference to the container Canvas defined in the Chart.xaml file.&amp;nbsp; &lt;em&gt;this.bars&lt;/em&gt; is an Array we will use to store references to the Bar JavaScript instances.&amp;nbsp; &lt;em&gt;this.padding&lt;/em&gt;, &lt;em&gt;this.height&lt;/em&gt; and &lt;em&gt;this.width&lt;/em&gt; are all properties used to calculate the size and position of each bar.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Move down to the &lt;em&gt;SilverlightBarChart.Chart.prototype&lt;/em&gt; and remove the &lt;em&gt;handleLoad&lt;/em&gt; method  &lt;li&gt;Add the following code within the brackets of the &lt;em&gt;SilverlightBarChart.Chart.protoype&lt;/em&gt;:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;createBars: function(barXaml) &lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barTarget = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barCount = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barWidth = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barHeight = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var maxValue = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i in this.data)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barCount++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(this.data[i].value &amp;gt; maxValue)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maxValue = this.data[i].value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; barWidth = (this.width - (this.padding * (barCount + 1))) / barCount;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(var i = 0; i &amp;lt; barCount; i++)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barTarget = this.plugIn.content.createFromXaml(barXaml, true);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.barContainer.children.add(barTarget);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barHeight = this.height * this.data[i].value / maxValue - this.padding;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barTarget["Canvas.Top"] = this.height - barHeight;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barTarget["Canvas.Left"] = barWidth * i + (this.padding * (i + 1));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barTarget.Width = barWidth;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; barTarget.Height = barHeight;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.bars.push(new SilverlightBarChart.Bar(barTarget));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Here's the magic method you've been waiting for.&amp;nbsp; Initially we setup a few variables for reuse. Second we loop through the properties of the data object in order to obtain the total count and the largest value.&amp;nbsp; This is done mainly because the JSON data is stored as an object and other than enumerating the properties there is no other way to simply get these values.&amp;nbsp; This initial loop could be avoided with more complex data structures or even by setting the discovered values directly.&lt;/p&gt; &lt;p&gt;Once we we've looped through the data we can figure out how wide each bar should be to fill up the chart, based on the chart width, padding and total bars.&lt;/p&gt; &lt;p&gt;Then we perform a second loop to create and set the properties of each bar.&amp;nbsp; The first line in the loop uses &lt;a href="http://msdn2.microsoft.com/en-us/library/bb980072.aspx"&gt;createFromXaml&lt;/a&gt; and the XAML string passed as a parameter to this method to create the Silverlight object for the bar.&amp;nbsp; Then we add the bar to the &lt;em&gt;barContainer &lt;/em&gt;so it will render and become interactive.&lt;/p&gt; &lt;p&gt;The following 5 lines dynamically set the height and width of the bar along with its position.&amp;nbsp; These numbers are calculated based off the size of the chart, the amount of bars and the value of each bar in comparison to the greatest value in the data set.&lt;/p&gt; &lt;p&gt;Don't hit Run yet, nothing new will happen.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Initializing the Chart&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;With our Chart and Bar components complete we can initialize the Chart in our main application.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Open Scene.js  &lt;li&gt;In the &lt;em&gt;handleLoad&lt;/em&gt; method, after the line that starts with &lt;em&gt;this.mainCanvas... &lt;/em&gt;add the following line: &lt;em&gt;this.chart = null;&lt;/em&gt;  &lt;li&gt;Remove the code within the brackets of the &lt;em&gt;onCompleted&lt;/em&gt; method and add the following code:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;if (sender.uri == "Chart.xaml")&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var chartTarget = this.plugIn.content.createFromXamlDownloader(sender, "");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.mainCanvas.children.add(chartTarget);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.chart = new SilverlightBarChart.Chart(this.plugIn, chartTarget, chartData)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.downloader.open("GET", "Bar.xaml");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.downloader.send();&lt;br&gt;}&lt;br&gt;else&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.chart.createBars(sender.ResponseText);&lt;br&gt;}&lt;/code&gt;&lt;/p&gt; &lt;p&gt;What we've done here is daisy chain the asynchronous completed events of the downloader.&amp;nbsp; First in the &lt;em&gt;handleLoad&lt;/em&gt; method we asked the downloader to go get Chart.xaml.&amp;nbsp; Once it completes that request, we create a new instance of the Chart class using that response then we ask the downloader to go get the Bar.xaml file.&amp;nbsp; Once it has that response, we call the &lt;em&gt;createBars&lt;/em&gt; method of the new &lt;em&gt;Chart&lt;/em&gt; instance, passing the &lt;em&gt;ResponseText&lt;/em&gt; as the &lt;em&gt;barXaml&lt;/em&gt; parameter.&lt;/p&gt; &lt;p&gt;The script is set up now but we need to add a few JavaScript references in the Default.html in order for the newly created script classes to be resolved.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Open Default.html  &lt;li&gt;Locate the script tags at the top of the page and change them to match the following code:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;&amp;lt;script type="text/javascript" src="Silverlight.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="chartData.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="Chart.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="Bar.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br&gt;&amp;lt;script type="text/javascript" src="Scene.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;First, we still need a reference to the Silverlight.js which will provide the application helper functions.&amp;nbsp; Then a reference to the JSON data file which we will create next.&amp;nbsp; Followed by the class files of our two components and our application.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;File -&amp;gt; New -&amp;gt; File...  &lt;li&gt;Select the JScriptFile Template  &lt;li&gt;Name the file chartData.js  &lt;li&gt;Open the file and add JSON formatted data as follows:&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;code&gt;chartData = [{"value":285}, {"value":342}, {"value":248}, {"value":120}, {"value":204}, {"value":190}, {"value":255}, {"value":238}, {"value":501}, {"value":297}];&lt;/code&gt;&lt;/p&gt; &lt;p&gt;The values are completely arbitrary but the script is looking for properties named &lt;em&gt;value&lt;/em&gt; with numerically typed values.&amp;nbsp; So feel free to change the values, but don't change the format of the object properties until you feel comfortable changing the script.&lt;/p&gt; &lt;p&gt;Hit Run and you should see a chart similar to the picture below:&lt;/p&gt; &lt;p&gt;&lt;img src="http://adamkinney.com/images/blog/sl_chart.jpg" alt="" /&gt; &lt;/p&gt; &lt;p&gt;Success!&amp;nbsp;&amp;nbsp; You have a chart!&amp;nbsp; Awesome!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;"But what about..."&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Yes, there is plenty more you could do with this chart, but it is all outside of the scope of this tutorial.&amp;nbsp; Many different features come to mind such as:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Different data sources&lt;/li&gt; &lt;li&gt;Assets packaged into one .zip file&lt;/li&gt; &lt;li&gt;Loading data animations&lt;/li&gt; &lt;li&gt;Easing animations for the bars&lt;/li&gt; &lt;li&gt;Different visual styles for the chart and bars ( &lt;a href="http://www.microsoft.com/expression/products/download.aspx?key=blend2preview"&gt;Expression Blend&lt;/a&gt; is waiting for you )&lt;/li&gt; &lt;li&gt;Different types of Charts&lt;/li&gt; &lt;li&gt;Values&amp;nbsp; on Bar Rollover (This is where the Bar JavaScript class would come in handy)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Hopefully this tutorial has shown you its not that difficult to get started and it can be fun once you start getting seeing the results of your work.&amp;nbsp; I did not explain every single piece of code, but I did try and highlight the key concepts.&amp;nbsp; If you have questions I would suggest starting with the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb979679.aspx"&gt;Silverlight API reference&lt;/a&gt;. That's my favorite place to start.&lt;/p&gt; &lt;p&gt;And since you have made it all the way through this tutorial or even if you just scrolled to the bottom, you can &lt;a href="http://adamkinney.com/downloads/silverlightbarchart.zip"&gt;download the completed source&lt;/a&gt; directly.&lt;/p&gt; &lt;p&gt;Cool.&amp;nbsp; That's one line I can check off my Must-Write-About-Because-Its-Constantly-Requested list...&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/306/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/306/default.aspx</comments><link>http://adamkinney.com/blog/306/default.aspx</link><pubDate>Tue, 05 Feb 2008 22:24:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/306/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>9</slash:comments><trackback:ping>http://adamkinney.com/blog/306/trackback/default.aspx</trackback:ping><category>Silverlight</category><category>tutorial</category></item><item><title>IT never dies, it just gets a new face - Illustration</title><description>&lt;blockquote&gt; &lt;p&gt;IT never dies, it just gets jammed in a new type of interface.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;After reading this quote from &lt;a href="http://www.redmonk.com/cote/2008/02/03/does-microsoft-care-about-firefox-or-microsoft-as-cloud-infrastructure/"&gt;Michael Coté post&lt;/a&gt;, the visual of tribesman from the developer clan attempting to maintain and "upgrade" the giant IT god by giving it a new face jumped into my head.&lt;/p&gt; &lt;p&gt;&lt;em&gt;"Bring me a new face.&amp;nbsp; Let it have vectors, drop shadows and glass effects.&amp;nbsp; Only this will appease me and I shall not crash."&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://flickr.com/photos/adamkinney/2242950433"&gt;&lt;img src="http://farm3.static.flickr.com/2047/2242950433_4d2f08da9f.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/305/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/305/default.aspx</comments><link>http://adamkinney.com/blog/305/default.aspx</link><pubDate>Tue, 05 Feb 2008 04:54:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/305/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>1</slash:comments><trackback:ping>http://adamkinney.com/blog/305/trackback/default.aspx</trackback:ping><category>art</category><category>whiteboard drawings</category></item><item><title>Silverlight Personified</title><description>&lt;p&gt;A few days ago, I noticed &lt;a href="http://twitter.com/joshr/statuses/640930372"&gt;this twit&lt;/a&gt; from &lt;a href="http://www.joshrussell.com/"&gt;Josh Russell&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Is the proud owner of a Silverlight superhero costume&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I thought, "It couldn't really be.&amp;nbsp; Maybe 'Silverlight' is a UK-based superhero or something.&amp;nbsp; Kind of like our &lt;a href="http://www.xmlpitstop.com/HeadGeek/Headgeek_BIO.aspx"&gt;American Silverlight superhero&lt;/a&gt;."&lt;/p&gt; &lt;p&gt;After seeing &lt;a href="http://www.flickr.com/photos/hyperdimensional/2242118915/"&gt;this picture on Flickr&lt;/a&gt;, I think I've been proven wrong.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/hyperdimensional/2242118915/"&gt;&lt;img src="http://farm3.static.flickr.com/2002/2242118915_32b0529d8c_t.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;UX Evangelist by day, Josh is apparently, a superhero by night.&lt;/p&gt; &lt;p&gt;Given the amorphous properties of the Silverlight logo, I can identify with those who wish to give it a little more character.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/msmossyblog/archive/2008/02/04/meet-dax-the-silverlight-mascot.aspx"&gt;Scott Barnes just posted today about his character Dax&lt;/a&gt;, a bright blue, utility belt wearing, buck toothed bi-pedal creature guy.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/mossyblog/2237599757/"&gt;&lt;img src="http://farm3.static.flickr.com/2276/2237599757_6c2b31ae83_m.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And not to be forgotten, the original blue box from &lt;a href="http://www.webonthepiste.com/webonthepiste/blog/blog_home.cfm"&gt;the Keynote Animation&lt;/a&gt; done by &lt;a href="http://www.nectarine.com.au/"&gt;Nectarine&lt;/a&gt; for the &lt;a href="http://www.webonthepiste.com/"&gt;web on the piste conference&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.flickr.com/photos/adamkinney/1251082269/"&gt;&lt;img src="http://farm2.static.flickr.com/1218/1251082269_f1e09383ab_m.jpg" alt="" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Perhaps, we should hold a contest at &lt;a href="http://visitmix.com/2008/mixux.aspx"&gt;MIX08&lt;/a&gt; to see who can design the best Silverlight avatar.&lt;/p&gt;&lt;img src="http://adamkinney.com/blog/304/aggviewbug/default.aspx" alt="" /&gt;</description><comments>http://adamkinney.com/blog/304/default.aspx</comments><link>http://adamkinney.com/blog/304/default.aspx</link><pubDate>Mon, 04 Feb 2008 23:32:00 GMT</pubDate><guid isPermaLink="true">http://adamkinney.com/blog/304/default.aspx</guid><dc:creator>Adam Kinney</dc:creator><slash:comments>0</slash:comments><trackback:ping>http://adamkinney.com/blog/304/trackback/default.aspx</trackback:ping><category>art</category><category>Silverlight</category></item></channel></rss>