<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeff Wilcox &#187; Web Development</title>
	<atom:link href="http://www.jeff.wilcox.name/topics/dev/webdev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeff.wilcox.name</link>
	<description>Silverlight, rich client apps and web development</description>
	<lastBuildDate>Mon, 26 Jul 2010 17:56:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Announcing the availability of the Silverlight Toolkit December 2008 release</title>
		<link>http://www.jeff.wilcox.name/2008/12/toolkit-december-2008/</link>
		<comments>http://www.jeff.wilcox.name/2008/12/toolkit-december-2008/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 01:36:48 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/12/09/toolkit-december-2008/</guid>
		<description><![CDATA[The sophomore release of the Silverlight Toolkit, today&#8217;s December release is out. You&#8217;ll find new themes, a fresh new sample app, fine-tuned components, and a bunch of features and fixes as requested by the community. More of the controls are accessible, the APIs are well baked, and, as always, its out there with a completely [...]]]></description>
			<content:encoded><![CDATA[<p>The sophomore release of the Silverlight Toolkit, today&#8217;s <a href="http://www.codeplex.com/Silverlight/">December release</a> is out. You&#8217;ll find new themes, a fresh new sample app, fine-tuned components, and a bunch of features and fixes as requested by the community. More of the controls are accessible, the APIs are well baked, and, as always, its out there with a completely open source Ms-PL license. We&#8217;re also shipping designer DLLs to integrate the experience some, plus unit tests and the latest release of the unit test framework.</p>
<p>If you&#8217;re using the November release, I strongly recommend that you <a href="http://www.codeplex.com/Silverlight/">upgrade</a> &#8211; we&#8217;ve worked hard to ensure that we&#8217;re making positive incremental improvements, and you will find a lot of nice functionality in this release. There are not any new controls in this release.</p>
<p>The <a href="http://www.codeplex.com/Silverlight/">CodePlex site</a> is the place to go to request new features, vote on suggestions that others have, and view additional information. We also <a href="http://silverlight.net/forums/35.aspx">run a forum</a> and are diligent about following up on your questions.</p>
<h3>Controls</h3>
<p>The following controls are in the &quot;<a href="http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Quality%20Bands&amp;referringTitle=Home&amp;ANCHOR#Stable">Stable</a>&quot; quality band, you should be able to use these and enjoy the experience for many releases to come:</p>
<ul>
<li>AutoCompleteBox <em>(promoted!)</em></li>
<li>DockPanel</li>
<li>HeaderedContentControl</li>
<li>HeaderedItemsControl</li>
<li>Label</li>
<li>NumericUpDown <em>(promoted)</em></li>
<li>TreeView</li>
<li>WrapPanel</li>
</ul>
<p>These controls are in &quot;<a href="http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Quality%20Bands&amp;referringTitle=Home&amp;ANCHOR#Preview">Preview</a>&quot; quality band:</p>
<ul>
<li>Charting</li>
<li>Expander</li>
<li>ImplicitStyleManager</li>
<li>Viewbox</li>
</ul>
<p>Don&#8217;t let the &quot;Preview&quot; designation scare you off &#8211; I am using the charting and data visualization controls on several of my projects today and enjoying ever minute. It was really easy to pick up and learn.</p>
<h3>Themes</h3>
<p>There are new themes, similar to those you might find in Office and various Windows operating systems. You can <a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Theming|Theme Browser">view them here</a>.</p>
<p><img src="http://media.jeff.wilcox.name/blog/view/Themes.png" /></p>
<h3>New sample explorer</h3>
<p>We&#8217;ve combined the two sample projects into a single:</p>
<p><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html"><img src="http://media.jeff.wilcox.name/blog/view/ToolkitSamples.png" /></a> </p>
<p>The new <a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html">sample application</a> also supports deep linking, so if you&#8217;re interested in a specific component, click away!</p>
<p>The links below go directly to the individual control pages and scenarios in the sample app:</p>
<p><strong>Controls</strong></p>
<ul>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|AutoCompleteBox">AutoCompleteBox</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|DockPanel">DockPanel</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|Expander">Expander</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|TreeView">TreeView</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|ViewBox">ViewBox</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Controls|WrapPanel">WrapPanel</a></li>
</ul>
<p><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization"><strong>DataVisualization</strong></a></p>
<ul>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Column Series">Column</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Bar Series">Bar</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Pie Series">Pie</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Line Series">Line</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Bubble Series">Bubble</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=DataVisualization|Scatter Series">Scatter</a></li>
</ul>
<p><strong>Input</strong></p>
<ul>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Input|ButtonSpinner">ButtonSpinner</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Input|NumericUpDown">NumericUpDown</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Input|UpDownBase">UpDownBase</a></li>
</ul>
<p><strong>Theming</strong></p>
<ul>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Theming|Theme Browser">Theme Browser</a></li>
<li><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html?path=Theming|ImplicitStyleManager">ImplicitStyleManager</a></li>
</ul>
<p>I&#8217;ll be following up with a few posts over the coming week covering new features, applications, scenarios, and of course the list of changes in the AutoCompleteBox control.</p>
<p>Hope you love it. At this price point (free), I hope that you&#8217;re able to share this with all of your developer friends this holiday season. Let me know what you think of the progress we&#8217;ve made, and the overall Silverlight Toolkit experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/12/toolkit-december-2008/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Reid Borsuk releases an MD5 implementation for Silverlight 2 in pure open source goodness</title>
		<link>http://www.jeff.wilcox.name/2008/12/md5-release-mspl/</link>
		<comments>http://www.jeff.wilcox.name/2008/12/md5-release-mspl/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 01:06:06 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/12/09/md5-release-mspl/</guid>
		<description><![CDATA[I was pleased to see that earlier today Reid Borsuk (of Microsoft&#8217;s CLR security team) released his MD5 implementation (pure transparent Silverlight code) to the MSDN Code Gallery earlier today. This will open the door for developers looking to interact with services and data systems that still use MD5. This release is licensed with the [...]]]></description>
			<content:encoded><![CDATA[<p>I was pleased to see that earlier today Reid Borsuk (of Microsoft&#8217;s CLR security team) released his MD5 implementation (pure transparent Silverlight code) to the MSDN Code Gallery earlier today. This will open the door for developers looking to interact with services and data systems that still use MD5. This release is licensed with the open source <a href="http://code.msdn.microsoft.com/SilverlightMD5/Project/License.aspx">Ms-PL license</a>.</p>
<p><em>Check it out on the </em><a href="http://code.msdn.microsoft.com/SilverlightMD5"><em>MSDN Code site</em></a><em>:</em>    <br /><a href="http://code.msdn.microsoft.com/SilverlightMD5/Release/ProjectReleases.aspx?ReleaseId=1823"><strong>Download the source code</strong></a></p>
<p>I use <a href="http://www.flickr.com/services/api/">Flickr&#8217;s web services</a> and for most of the more advanced operations, you need to &#8216;sign&#8217; the request using an MD5 shared secret &#8211; so this is a great improvement on what I had <a href="http://www.jeff.wilcox.name/2008/03/05/silverlight-2-md5/">previously blogged about</a> at MIX. I&#8217;ve been using this code for a few weeks now and love it.</p>
<p>I won&#8217;t get into a discussion on the pros or cons of MD5, other than to say, this is freaking awesome! Congratulations Reid.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/12/md5-release-mspl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a testable WebClient for Silverlight unit testing</title>
		<link>http://www.jeff.wilcox.name/2008/12/testable-webclient/</link>
		<comments>http://www.jeff.wilcox.name/2008/12/testable-webclient/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 22:16:12 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/12/07/testable-webclient/</guid>
		<description><![CDATA[Testability is important to today&#8217;s developers, and without a mocking framework available for Silverlight developers today, it is possible, albeit with a little extra work, to create testable components. Maurice de Beijer has blogged about his solution for creating a testable Flickr web service API. He&#8217;s created TestableWebClient and TestableOpenReadCompletedEventArgs types to assist with this, [...]]]></description>
			<content:encoded><![CDATA[<p>Testability is important to today&#8217;s developers, and without a mocking framework available for Silverlight developers today, it is possible, albeit with a little extra work, to create testable components.</p>
<p><a href="http://msmvps.com/blogs/theproblemsolver/">Maurice de Beijer</a> has blogged about his solution for <a href="http://msmvps.com/blogs/theproblemsolver/archive/2008/12/07/unit-testing-in-silverlight-part-2.aspx">creating a testable Flickr web service API</a>. He&#8217;s created TestableWebClient and TestableOpenReadCompletedEventArgs types to assist with this, and kept the abstraction simple and to-the-point.</p>
<p>I agree with Maurice&#8217;s comments: it isn&#8217;t perfect, it isn&#8217;t awful; it isn&#8217;t pretty; but hey, it does get the job done, and he&#8217;s found a good solution for this today.</p>
<p><a href="http://msmvps.com/blogs/theproblemsolver/archive/2008/12/07/unit-testing-in-silverlight-part-2.aspx"><img src="http://media.jeff.wilcox.name/blog/view/image_0C17D5DB.png" /></a> </p>
<p>Maurice also previously posted his own <a href="http://msmvps.com/blogs/theproblemsolver/archive/2008/12/02/unit-testing-in-silverlight-part-1.aspx">introduction guide to Silverlight unit testing</a>.</p>
<p>Just wanted to pass along, definitely check this out!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/12/testable-webclient/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Managed Html Controls source code</title>
		<link>http://www.jeff.wilcox.name/2008/11/managed-html-controls-source/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/managed-html-controls-source/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 00:41:10 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/20/managed-html-controls-source/</guid>
		<description><![CDATA[In early October I blogged about the managed wrapper for client-side HTML controls that we use in the Silverlight unit test framework. If you were intrigued by it, you&#8217;ll be happy to know that the source code is published and part of the Silverlight unit test framework&#8217;s source code, part of the &#8216;Quality&#8217; section of [...]]]></description>
			<content:encoded><![CDATA[<p>In early October I blogged about the managed wrapper for <a href="http://www.jeff.wilcox.name/2008/10/05/html-controls-for-silverlight/">client-side HTML controls</a> that we use in the Silverlight unit test framework.</p>
<p>If you were intrigued by it, you&#8217;ll be happy to know that the source code is published and part of the Silverlight unit test framework&#8217;s source code, part of the &#8216;Quality&#8217; section of the Silverlight Toolkit&#8217;s source enlistment.</p>
<p><a href="http://www.codeplex.com/Silverlight/SourceControl/DownloadSourceCode.aspx?changeSetId=7238"><strong>Download the source here</strong></a>    <br />Original post: <a href="http://www.jeff.wilcox.name/2008/10/05/html-controls-for-silverlight/">Client-side HTML controls for Silverlight 2</a></p>
<p><a href="http://www.jeff.wilcox.name/2008/10/05/html-controls-for-silverlight/"><img src="http://media.jeff.wilcox.name/blog/dom/SampleClasses.png" /></a> </p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/managed-html-controls-source/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Silverlight 2 Unleashed by Laurent Bugnion</title>
		<link>http://www.jeff.wilcox.name/2008/11/silverlight-2-unleashed-book/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/silverlight-2-unleashed-book/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 07:34:48 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/06/silverlight-2-unleashed-book/</guid>
		<description><![CDATA[If you&#8217;re looking for a great overview of all things Silverlight 2, Laurent Bugnion&#8217;s Silverlight 2 Unleashed book is a great introductory book for web developers, designers, and folks new to the Microsoft web/client platform. Amazon delivered my copy in the pouring rain today, so I immediately took it up to my neighborhood coffee shop. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/0672330148?ie=UTF8&amp;tag=jwilcoxblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0672330148"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="160" alt="sl2unleashed" src="http://www.jeff.wilcox.name/wp-content/uploads/2008/11/sl2unleashed.jpg" width="123" align="right" border="0" /></a> If you&#8217;re looking for a great overview of all things Silverlight 2, Laurent Bugnion&#8217;s <a href="http://www.amazon.com/gp/product/0672330148?ie=UTF8&amp;tag=jwilcoxblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0672330148">Silverlight 2 Unleashed</a> book is a great introductory book for web developers, designers, and folks new to the Microsoft web/client platform. Amazon delivered my copy in the pouring rain today, so I immediately took it up to my neighborhood coffee shop.</p>
<p><em>Since my blog&#8217;s filled with some fairly technical resources, I should point out that the book is not the right reference for anyone that has an extensive knowledge of WPF or that has been an early adopter of Silverlight 2.</em></p>
<p>Laurent&#8217;s book instead targets everyone else: the millions of web developers that are new to .NET, looking to expand their working knowledge, or just wanting to learn something about the new exciting Silverlight platform. Much like Adam Nathan&#8217;s <a href="http://www.amazon.com/gp/product/0672328917?ie=UTF8&amp;tag=jefwilsblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0672328917">WPF Unleashed</a> book, the full color examples and screen captures really add life and will help you connect to the tools and examples.</p>
<p>The book is organized into many vignettes almost, each covering a concept, walkthrough of a task, and showing screen captures, code, and helpful tips along the way. As a former client- server- Flash- everything- guy, I&#8217;m confident in saying that this is a great overview of what you&#8217;d expect if you were wanting to get all the key, above-the-fold info on this new platform.</p>
<p>In Chapter 1, the book begins covering where Silverlight has come from, other plug-ins, and demos. Chapter 2 moves on to XAML, and then the book moves on to basic transforms, colors, paths, JavaScript basics, and finally, chapter 9, an intro to .NET.</p>
<p>The middle of the book moves to C# programming, isolated storage, and animations. There&#8217;s then coverage on Expression, videos, and events. It then progresses to details on the rich Microsoft presentation platform basics, and will be familiar to WPF developers. This includes layout basics, the built-in controls, simple interaction and interoperability features.</p>
<p>The rest of Silverlight 2 Unleashed book covers a few neat topics that people may not be as familiar with: loading media metadata, quick WCF basics, cross-domain requests, exception handling, and then a bunch of odds-and-ends that will whet your appetite for learning more about working in a Silverlight world, working with binding converters, unit testing, and resources for finding controls and resources. </p>
<p>And, yes, you read that right: a Silverlight unit testing walkthrough is on pages 541-549. For full disclosure, I should note that I did work with Laurent to review that part of Chapter 24.</p>
<p>Anyway, if you&#8217;re looking to move to the Microsoft web platform, expand your skills, and see what Silverlight is all about &#8211; do check it out! Oh, and if you&#8217;re looking for even more controls resources, do check out the <a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/silverlight-2-unleashed-book/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Editable Silverlight ComboBox</title>
		<link>http://www.jeff.wilcox.name/2008/11/editable-combo-box/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/editable-combo-box/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 01:37:45 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/05/editable-combo-box/</guid>
		<description><![CDATA[Tim Heuer posted today about using the AutoCompleteBox control (Silverlight Toolkit) to enable editable ComboBox scenarios in Silverlight apps. This was originally one of the more complex samples that we included in the toolkit sample project, and Tim has done a great job boiling it down to the essentials, complete with step-by-step code. Definitely check [...]]]></description>
			<content:encoded><![CDATA[<p>Tim Heuer <a href="http://timheuer.com/blog/archive/2008/11/05/silverlight-editable-combobox-using-styles.aspx">posted</a> today about using the AutoCompleteBox control (<a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit</a>) to enable <a href="http://timheuer.com/blog/archive/2008/11/05/silverlight-editable-combobox-using-styles.aspx">editable ComboBox</a> scenarios in Silverlight apps.</p>
<p>This was originally one of the more complex samples that we included in the toolkit sample project, and Tim has done a great job boiling it down to the essentials, complete with step-by-step code.</p>
<p>Definitely check it out at <a title="http://timheuer.com/blog/archive/2008/11/05/silverlight-editable-combobox-using-styles.aspx" href="http://timheuer.com/blog/archive/2008/11/05/silverlight-editable-combobox-using-styles.aspx">http://timheuer.com/blog/archive/2008/11/05/silverlight-editable-combobox-using-styles.aspx</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/editable-combo-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Expression Encoder 2 SP1&#8242;s media player template to work with CDNs and cross-domain embedding</title>
		<link>http://www.jeff.wilcox.name/2008/11/cross-domain-encoder-media-player/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/cross-domain-encoder-media-player/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 08:44:21 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/03/cross-domain-encoder-media-player/</guid>
		<description><![CDATA[The new Silverlight 2 media player that Expression Encoder 2 SP1 ships with is great. You can encode video and output Silverlight content in minutes. With SP1, when you select one of the new templates, the only bits generated are your video asset + thumbnail, a single media player .Xap file, and a sample .Html [...]]]></description>
			<content:encoded><![CDATA[<p>The new Silverlight 2 media player that <a href="http://www.microsoft.com/expression/try-it/default.aspx?filter=servicepacks">Expression Encoder 2 SP1</a> ships with is great. You can encode video and output Silverlight content in minutes. With SP1, when you select one of the new templates, the only bits generated are your video asset + thumbnail, a single media player .Xap file, and a sample .Html page.</p>
<p>This really cuts down on the moving parts from the previous 1.0 templates that had dependencies on so many loose JavaScript files.</p>
<p>I wanted to blog about my experience in case others ran into this: if you have your Xap files on a domain different than your pages, you might find that the Silverlight plugin is blank and the media player never loads. This is a by-design feature per the Silverlight HTML DOM bridge security model &#8211; but you can actually do a few things to get this to work.</p>
<p>I host my Silverlight applications and media assets on a separate domain. This creates the situation where the bridge is disabled; if you would like to reference the .Xap files from different sites or enable others to embed your video player, it won&#8217;t work out of the box unless you modify the &lt;object /&gt; tag or modify and rebuild the managed media player to gracefully move on in this situation.</p>
<p>Here&#8217;s the breakdown that I have for my web pages vs. my Silverlight assets, including the apps:</p>
<p><img src="http://media.jeff.wilcox.name/blog/view/CdnXap.png"/> </p>
<p>The additional parameter within the object tag will be easiest for most folks, and is probably the way that the Expression team hopes that you&#8217;ll enable this scenario. I always forget things like modifying the object tags, since this isn&#8217;t in the default generated HTML file that Encoder outputs, so I&#8217;m going for a more involved solution.</p>
<p>Oh, and don&#8217;t get me wrong: SP1 rocks. I highly recommend that you install it; I&#8217;m getting so much more use out of Encoder 2 now. If you haven&#8217;t purchased Encoder&#8230; well, you really should <a href="http://www.microsoft.com/expression/try-it/default.aspx">try</a> or <a href="http://www.microsoft.com/expression/products/Purchase.aspx?key=encoder">buy</a> it. With SP1 it not only adds the nice Silverlight 2 templates, but also H.264 mobile encoding. I was able encode my screencast in H.264, and it looks great on my iPhone!</p>
<h3>The HTML DOM Bridge security model in Silverlight</h3>
<p>Per the <a href="http://msdn.microsoft.com/en-us/library/cc645023(VS.95).aspx">DOM bridge security model</a> in Silverlight 2, the default behavior when the .Xap is hosted on a domain different than your web page, is that the HTML DOM bridge feature will be disabled for that Silverlight application in the .Xap. The DOM bridge is used by the managed media player to get the document URI property when trying to look up relative-path video assets.</p>
<p>This situation can also present itself on the same domain, when the web page author explicitly denies the HTML DOM bridge access to a plugin: if the &lt;param name=&#8221;EnableHtmlAccess&#8221; value=&#8221;false&#8221; /&gt; tag is present in the object tag, the DOM bridge will not work and the media player template will end up throwing an exception while trying to access the HtmlPage.Document.DocumentUri property.</p>
<h3>The quick fix</h3>
<p>Inside your Silverlight plugin object tag, add the <strong>EnableHtmlAccess</strong> parameter with a value of &#8216;true&#8217;. Here is a sample embedded object tag with the parameter added:</p>
<blockquote><p>&lt;object data=&#8221;data:application/x-silverlight-2,&#8221; type=&#8221;application/x-silverlight-2&#8243; width=&#8221;685&#8243; height=&#8221;448&#8243;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name=&#8221;source&#8221; value=&#8221;http://media.cdn.com/Xaps/MediaPlayerTemplate.xap&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name=&#8221;initparams&#8221; value=&#8221;expression encoder generated parameters go here&#8221; /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff0000"><strong>&lt;param name=&#8221;enableHtmlAccess&#8221; value=&#8221;true&#8221; /&gt;</strong></font><br />&lt;/object&gt;</p>
</blockquote>
<h3>The source fix</h3>
<p>I decided to just update the media player to not be dependent on the HTML DOM bridge feature.</p>
<p>This fix assumes that you always provide the absolute URI for video assets in the playlist. Effectively it won&#8217;t try any relative URI lookups when HTML DOM bridge access is not permitted. </p>
<p>Thanks to the Expression team, they did a good thing and shipped the source to the media player template with the product. You will find it in <em>%programfiles%\Microsoft Expression\Encoder 2\Templates\en\SL2Standard\Source</em>. It opens with Visual Studio 2008 SP1 + the Silverlight 2 Developer Tools.</p>
<p>I went ahead and rebuilt the template: whenever the C# code would try and use the HtmlPage.Document.DocumentUri getter, I would encase the code in an HtmlPage.IsEnabled check. I had to do this in just a few spots.</p>
<p>One nice side effect was that I was able to chop the .Xap size down about 50K by removing the Adaptive Streaming support built into the template, since I just host my media assets over simple HTTP and do not do streaming.</p>
<p>For your reference:</p>
<p><strong><a href="http://media.jeff.wilcox.name/blog/code/ModifiedTemplate.zip">Download ModifiedTemplate.zip</a></strong> (69 K, solution in a Zip)<br /><strong><a href="http://www.jeff.wilcox.name/xap/2008/MediaPlayerTemplate.xap">Download MediaPlayerTemplate.xap</a></strong> (114 K, Xap)<br /><em>Note: Does not contain adaptive streaming support.</em></p>
<h3>HtmlPage.IsEnabled lesson</h3>
<p>You should always make sure to check the HtmlPage.IsEnabled property before attempting to access any of the HTML DOM bridge resources. This is good practice whether thinking about scenarios where the bridge is disabled, or designer tools like Cider and Blend.</p>
<p><em>Disclaimer:</em> <em>I am not a member of the Expression team, this is not my area of expertise, other than being a member of the original HTML DOM bridge feature crew for Silverlight. I do not know if this was a known issue before, an expected, by-design feature, will be fixed, or anything like that.</em></p>
<h3>Live, embeddable player: Shawn Burke&#8217;s PDC talk</h3>
<p>Oh, and here&#8217;s Shawn Burke&#8217;s excellent PDC talk. If you haven&#8217;t checked out everything that was released in the Silverlight Toolkit, or heard about the release model, you should watch this. It is using my updated Xap player, so you can even embed Shawn&#8217;s talk in your own blog.</p>
<p> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="685" height="448"><param name="source" value="http://media.jeff.wilcox.name/video/MediaPlayerTemplate.xap" /><param name="initparams" value="autoplay=False,autoload=False,enablecaptions=False,muted=False,stretchmode=0,displaytimecode=False,playlist=&lt;playList&gt;&lt;playListItems&gt;&lt;playListItem title=&quot;Shawn%20Burke%20-%20-Silverlight%20Toolkit%20talk%20at%20PDC%202008&quot; description=&quot;&quot; mediaSource=&quot;http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/PC35.wmv&quot; adaptiveStreaming=&quot;False&quot; thumbSource=&quot;http://media.jeff.wilcox.name/video/PC35_Thumb.jpg&quot; frameRate=&quot;30.00003000003&quot; width=&quot;984&quot; height=&quot;500&quot; &gt;&lt;/playListItem&gt;&lt;/playListItems&gt;&lt;/playList&gt;" />Your news reader may not permit Silverlight content. Please click-through to the original post to see this plugin.  You may also not have Silverlight 2 installed on your machine:<br /> <a href="http://go2.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a> </object>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/cross-domain-encoder-media-player/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Renaming Xap to Zip is dead. Long live renaming Xap to Zip!</title>
		<link>http://www.jeff.wilcox.name/2008/11/long-live-renaming/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/long-live-renaming/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 01:16:20 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/01/long-live-renaming/</guid>
		<description><![CDATA[Teach Windows to treat Xap files as first class compressed folders with this simple registry entry. After applying, you&#8217;ll be able to open .Xap files and view their contents, and get the same shell experience as Zips have: If you&#8217;ve ever had to do the &#34;rename .Xap to .Zip&#34; routine while doing Silverlight development, then [...]]]></description>
			<content:encoded><![CDATA[<p>Teach Windows to treat Xap files as first class compressed folders with this simple registry entry. After applying, you&#8217;ll be able to open .Xap files and view their contents, and get the same shell experience as Zips have:</p>
<p><img src="http://media.jeff.wilcox.name/blog/view/XapExtension.png" /> </p>
<p>If you&#8217;ve ever had to do the &quot;rename .Xap to .Zip&quot; routine while doing Silverlight development, then you&#8217;ll enjoy this fix. The entry also sets the MIME type of .Xaps to &quot;application/x-silverlight-app&quot;, so it relates to my <a href="http://www.jeff.wilcox.name/2008/11/01/xap-mime-type/">earlier post about the MIME type</a>, too.</p>
<p>I&#8217;ve been using this on my Windows Vista and Windows Server 2008 workstation, but have not tried it on XP.</p>
<p><strong>XNA users:</strong> <a href="http://blog.j-maxx.net/default.aspx">Jeff Klawiter</a> pointed out in the comments that part of the XNA Framework uses .xap for its project file extension. So, beware. Sucks that there is overlap.</p>
<p><strong>Disclaimer: Use this registry file at your own risk. I am not responsible in any way for the results. As developers like to say, &quot;it works great on my machine!&quot;</strong></p>
<p>Download and run this registry patch: <a href="http://media.jeff.wilcox.name/blog/view/silverlight/xap.reg">Xap.reg</a></p>
<p>Here&#8217;s the contents of the registry patch:</p>
<blockquote><p>Windows Registry Editor Version 5.00 </p>
<p>[HKEY_CLASSES_ROOT\.xap]     <br />&quot;PerceivedType&quot;=&quot;compressed&quot;      <br />&quot;Content Type&quot;=&quot;application/x-silverlight-app&quot;      <br />@=&quot;CompressedFolder&quot; </p>
<p>[HKEY_CLASSES_ROOT\.xap\CompressedFolder] </p>
<p>[HKEY_CLASSES_ROOT\.xap\OpenWithProgids]     <br />&quot;CompressedFolder&quot;=&quot;&quot; </p>
<p>[HKEY_CLASSES_ROOT\.xap\PersistentHandler]     <br />@=&quot;{098f2470-bae0-11cd-b579-08002b30bfeb}&quot;</p>
</blockquote>
<p>The experience before the patch:</p>
<p><img src="http://media.jeff.wilcox.name/blog/view/XapExtensionBefore.png" /> </p>
<p>And after:</p>
<p><img src="http://media.jeff.wilcox.name/blog/view/XapExtensionAfter.png" /> </p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/long-live-renaming/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Successful .Xap deployment with your CDN: Set the application/x-silverlight-app MIME type</title>
		<link>http://www.jeff.wilcox.name/2008/11/xap-mime-type/</link>
		<comments>http://www.jeff.wilcox.name/2008/11/xap-mime-type/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 23:16:37 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Servers]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/11/01/xap-mime-type/</guid>
		<description><![CDATA[If you host XAP files on a CDN or other host (such as Amazon S3), you need to have the server configured with the new Silverlight MIME type. You can find out specifics in the breaking changes reference. When you do not need to configure the MIME type: If your .Xap files and web pages [...]]]></description>
			<content:encoded><![CDATA[<p>If you host XAP files on a CDN or other host (such as Amazon S3), you need to have the server configured with the new Silverlight MIME type. You can find out specifics in the <a href="http://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx">breaking changes</a> reference.</p>
<p>When you do not need to configure the MIME type:</p>
<ul>
<li>If your .Xap files and web pages are on the same domain and do not need to be embedded elsewhere  </li>
<li>If you use a service like Silverlight Streaming and just embed &lt;iframe /&gt; tags in your web site</li>
</ul>
<p>But, if you want to share or enable embedding for others, you need to add the &#8220;application/x-silverlight-app&#8221; MIME type for your .Xap files.</p>
<p>This will allow:</p>
<ul>
<li>You to host your application binaries with a CDN  </li>
<li>Others to embed your applications in their pages and sites  </li>
<li>Bloggers to embed Silverlight &lt;object /&gt; tags right in their content and let syndication services and news readers embed the content</li>
</ul>
<p>Equally important, if you don&#8217;t want others to directly link to and reference your .Xap from their domains, then make sure to not send this mime type.</p>
<p><strong>Apache</strong><br />For global configuration, in your central mime.types file, add:</p>
<blockquote><p># Enable Silverlight support for our apps to be embedded anywhere<br />application/x-silverlight-app&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xap</p>
</blockquote>
<p>Then restart Apache:</p>
<blockquote><p>$ sudo ./apachectl restart</p>
</blockquote>
<p>If you&#8217;re just configuring at the directory level, edit or add the .htaccess file in the directory you want to serve anywhere, and add the line:</p>
<blockquote><p>AddType application/x-silverlight-app xap</p>
</blockquote>
<p><strong>IIS 6 &amp; 7<br /></strong>Here&#8217;s a nice <a href="http://learn.iis.net/page.aspx/262/silverlight/">step-by-step guide to adding the MIME</a> type on Windows web servers.</p>
<p><strong>Amazon S3<br /></strong>Maybe not a true CDN, I do use Amazon&#8217;s Simple Storage Service (S3) for most of my Silverlight application hosting.</p>
<p>Amazon S3 records the MIME type that your S3 client sends with each file upload. This means that you <u>must</u> configure your system with the appropriate &#8220;application/x-silverlight-app&#8221; MIME type <strong>when you upload</strong>, or when clients download your .Xap, they will get an unknown MIME type and be greeted with blank space where you&#8217;d expect your app to be working.</p>
<p><strong>Your CDN</strong><br />I do not know the current <a href="http://www.limelightnetworks.com/">Limelight</a> or <a href="http://www.akamai.com/">Akamai</a> stories, sorry! Feel free to post a comment if you know.</p>
<h3>Use Fiddler to check</h3>
<p>I&#8217;d highly recommend that you download and use <a href="http://www.fiddler2.com/Fiddler2/version.asp">Fiddler2</a> on your Windows system. Using it, you can make sure and see what the content type is when it comes back in an HTTP response.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/11/xap-mime-type/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing the AutoCompleteBox</title>
		<link>http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 03:43:35 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=137</guid>
		<description><![CDATA[The Silverlight AutoCompleteBox is now available. This guide covers the control&#8217;s properties, usage, and demonstrates how to hook it up to a JSON web service. Note: This post contains live Silverlight content that your news reader may not be able to display. The auto complete pattern is well-known, useful, time-tested. There&#8217;s been one in IE [...]]]></description>
			<content:encoded><![CDATA[<p>The Silverlight AutoCompleteBox is now available. This guide covers the control&#8217;s properties, usage, and demonstrates how to hook it up to a JSON web service.</p>
<p><img alt="AutoCompleteBox for Silverlight" src="http://media.jeff.wilcox.name/blog/AutoComplete/AutoCompleteBox.png" /> </p>
<p><em><font color="#404040">Note: This post contains live Silverlight content that your news reader may not be able to display.</font></em></p>
<p>The auto complete pattern is well-known, useful, time-tested. There&#8217;s been one in IE for ages. You expect that your e-mail client auto completes. Auto complete functionality can be found in controls in Winforms, WPF, AJAX, Flex. And now, Silverlight.</p>
<p>With the Silverlight Toolkit, we&#8217;ve decided to go beyond text-only suggestions. With basics in mind, we designed a flexible &amp; extensible control that lets modern app developers use data binding, styling, data templates, and more.</p>
<p><strong>Auto complete features you expect</strong></p>
<ul>
<li>Bind to a list </li>
<li>Override population </li>
<li>Set a minimum length required to get results </li>
<li>Set a delay before fetching suggestions </li>
</ul>
<p><strong>Silverlight AutoCompleteBox features</strong></p>
<ul>
<li>Style and retemplate: style the control, the text box, the container; set a DataTemplate for items in the drop down; retemplate the control to look like a combo box; you name it. </li>
<li>Built-in search modes. Provide your own custom text and item filter lambdas. </li>
<li>Replace the ListBox with your own custom selection adapter </li>
</ul>
<h3>Using AutoComplete</h3>
<p>To get started, just set the ItemsSource property to an IEnumerable. You&#8217;re then hooked up to the default filtering and are ready to go.</p>
<p>I&#8217;m going to walk you through some simple scenarios now using the control assemblies that we shipped in the toolkit. To follow along, you&#8217;ll need Visual Studio 2008 (SP1) with the Silverlight 2 Tools installed, plus the free <a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit</a>.</p>
<p>First, create a new Silverlight application project: open Visual Studio, go to the File | New | Project menu option, and create a new C# &#8216;Silverlight Application&#8217; project.</p>
<p>In the &#8216;Add Silverlight Application&#8217; dialog, select the 2nd option to &#8216;Automatically generate a test page&#8217;, and click Ok.</p>
<p>To add a reference to the main toolkit control library, right-click on the project in the Solution Explorer and select &#8216;Add Reference&#8217;.</p>
<p>Now, click on the &#8216;Browse&#8217; tab, locate the extracted toolkit folders, and move into the &#8216;Binaries&#8217; directory. Select the &#8216;Microsoft.Windows.Controls.dll&#8217; file and click Ok.</p>
<p><img alt="Add Reference" src="http://media.jeff.wilcox.name/blog/AutoComplete/AddReference.png" /> </p>
<p>If you create a new Silverlight Application project and add a reference to the Microsoft.Windows.Controls.dll assembly that we shipped in the toolkit, you can follow along and learn about the control.</p>
<p>Inside Microsoft.Windows.Controls we included ObjectCollection. It makes it easy to create collections in SIlverlight XAML.</p>
<p>Inside Page.xaml:</p>
<ul>
<li>Add the XML namespace for the Silverlight Toolkit controls. I&#8217;m using the prefix &quot;controls&quot; here. </li>
<li>Add mscorlib as a namespace, for strings. </li>
<li>Add an ObjectCollection of months in the resources. </li>
<li>Create an AutoCompleteBox control, setting the ItemsSource. </li>
</ul>
<p>Here&#8217;s the Page.xaml file:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:55663c25-0377-4ab5-a71b-983beb9f62b9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">&lt;UserControl x:Class="SilverlightApplication6.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:clr="clr-namespace:System;assembly=mscorlib"
    xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
    Width="400" Height="300"&gt;
    &lt;UserControl.Resources&gt;
        &lt;controls:ObjectCollection x:Key="Months"&gt;
            &lt;clr:String&gt;January&lt;/clr:String&gt;
            &lt;clr:String&gt;February&lt;/clr:String&gt;
            &lt;clr:String&gt;March&lt;/clr:String&gt;
            &lt;clr:String&gt;April&lt;/clr:String&gt;
            &lt;clr:String&gt;May&lt;/clr:String&gt;
            &lt;clr:String&gt;June&lt;/clr:String&gt;
            &lt;clr:String&gt;July&lt;/clr:String&gt;
            &lt;clr:String&gt;August&lt;/clr:String&gt;
            &lt;clr:String&gt;September&lt;/clr:String&gt;
            &lt;clr:String&gt;October&lt;/clr:String&gt;
            &lt;clr:String&gt;November&lt;/clr:String&gt;
            &lt;clr:String&gt;December&lt;/clr:String&gt;
        &lt;/controls:ObjectCollection&gt;
    &lt;/UserControl.Resources&gt;
    &lt;StackPanel VerticalAlignment="Top" Margin="5"&gt;
        &lt;controls:AutoCompleteBox ItemsSource="{StaticResource Months}" /&gt;
    &lt;/StackPanel&gt;
&lt;/UserControl&gt;</pre>
</div>
<p>If you press F5 to run the project, you&#8217;ll get a text box that lets you type in a month.</p>
<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/January.png" /> </p>
<p>Here is the application:</p>
<p><img alt="Embedded Silverlight Application (begin)" src="http://media.jeff.wilcox.name/blog/view/ESAStart.png" /><br /><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="150"><param name="source" value="http://www.jeff.wilcox.name/xap/2008/SilverlightApplication6.xap" /><a href="http://go2.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a><br />
</object><br /><img alt="Embedded Silverlight Application (end)" src="http://media.jeff.wilcox.name/blog/view/ESAFinish.png" /> </p>
<p>Do know that in the current release, this control does not respect the INotifyCollectionChanged interface. If you&#8217;re changing the underlying data, please reset the ItemsSource to a new list. We&#8217;ll address this in a future release.</p>
<h3>Key AutoCompleteBox properties, methods and events</h3>
<p><strong>ItemsSource</strong> </p>
<p>Set your data here.</p>
<p><strong>Text</strong> </p>
<p>Contains the current text that the user has entered or selected.</p>
<p>The <strong>TextChanged</strong> event is fired whenever the text is updated. Most classic auto complete applications function like text boxes, so those apps can use the Text and TextChanged events as they are.</p>
<p>You can also replace most simple TextBox instances in your applications with AutoCompleteBox.</p>
<p><strong>IsTextCompletionEnabled</strong> </p>
<p>This property is true by default. It will perform a search on your items and look for the best match; if one is found, the text box is updated with the item&#8217;s string value, and the rest of the text will be highlighted.</p>
<p><img alt="IsTextCompletionEnabled property" src="http://media.jeff.wilcox.name/blog/AutoComplete/itce.png" /> </p>
<p><strong>SelectedItem</strong> </p>
<p>Is null if no item is currently selected.</p>
<p>If the user navigates through the drop down, selecting items, or clicks on an item, this will be updated to that item.</p>
<p>The <strong>SelectedItemChanged</strong> event fires when the item changes.</p>
<p>If you enter text into the control, such as &quot;Steve Ballmer,&quot; the SelectedItem may not be updated to an item unless the list box item is selected or if you have text completion enabled.</p>
<p><strong>SearchMode</strong> </p>
<p>Selects the built-in search filter to use. The default is &quot;StartsWith,&quot; and checks that each item&#8217;s string value starts with the user&#8217;s search string. &quot;Contains&quot; is another very useful value, as is &quot;None&quot;.</p>
<p>If you connect AutoCompleteBox to a web server that performs its own filtering, you&#8217;ll probably want to set the SearchMode to &#8216;None&#8217;.</p>
<p><strong>MinimumPopulateDelay</strong> </p>
<p>This is an amount of time that elapses after the user types and the population event is fired.</p>
<p>The default value of 0 is very quick, so every time the user enters new character, the Populating event is fired. If you&#8217;re connected to a web service, you&#8217;ll want to step back and place a reasonable value in here so that not every keypress goes straight to the server.</p>
<p><strong>MinimumPrefixLength</strong> </p>
<p>This is the minimum number of characters that must be entered before the control looks for suggestions. The default value is 1, but a lot of classic AJAX auto complete controls use 3 as the default value, so this is a common customization property.</p>
<p><em>Advanced scenarios might make use of:</em></p>
<p><strong>TextFilter</strong> </p>
<p>Provide a lambda/delegate that takes two parameters: the search string, and the string that represents an item. The function needs to return bool true or false, indicating whether the item should be shown as a suggestion in the drop down list.</p>
<p><strong>ItemFilter</strong> </p>
<p>The more fun version of TextFilter, this takes a lambda expression that has two inputs: the search string, and the item as an object. You are then free to use your own filtering logic with your rich data types to return true or false.</p>
<p><strong>Populating event</strong> </p>
<p>Called whenever the control is ready to search for suggestions, this is your opportunity to intercept the standard filtering and manage the items source first.</p>
<p>If you have the data available immediately, before your handler returns, you can simply change the ItemsSource property of the AutoCompleteBox control right here, no other changes necessary.</p>
<p>But if you&#8217;re going to perform an asynchronous operation (background thread calculations; call a web service), you need to set the Cancel property of the event arguments to True. This will cancel the built-in AutoComplete filtering and effectively tell the control to hold off until you are ready.</p>
<p>To continue the suggestion process, you need to then call the <strong>PopulateComplete</strong> method. In your web service completion event, you&#8217;ll want to place this call.</p>
<p><strong>Populated event</strong> </p>
<p>This is called once suggestions are found and ready to be displayed. The Data property of the event arguments gives you read-only access to the view that will be provided to the selection control.</p>
<p><strong>DropDownOpening, DropDownOpened, DropDownClosing, DropDownClosed</strong> </p>
<p>A nice set of drop down events. The Opening and Closing events can be canceled.</p>
<h3>AutoComplete items in the real world</h3>
<p>Setting the ItemsSource in XAML is not a real scenario. Enter web services, business object collections, XML files.</p>
<p>The ItemsSource property will take any IEnumerable. Linq fans rejoice. If you don&#8217;t have the data ahead of time, you can subscribe to the Populating event of AutoCompleteBox and update the ItemsSource with the appropriate results, synchronously or asynchronously.</p>
<p><strong>Using ItemsSource with a collection</strong></p>
<p>If your application already has a set of data available (list of names, parsed XML, set of static city and state names), you can just set the items source in code to your enumerable collection.</p>
<p>Here&#8217;s another quick app. The XAML is:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:d3b8e49c-1f14-4541-8be8-63e721cf67c8" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">&lt;UserControl x:Class="SilverlightApplication7.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
    Width="400" Height="100"&gt;
    &lt;StackPanel VerticalAlignment="Top" Margin="5"&gt;
        &lt;controls:AutoCompleteBox x:Name="AutoComplete1" /&gt;
    &lt;/StackPanel&gt;
&lt;/UserControl&gt;</pre>
</div>
<p>And the code behind file:</p>
</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:585071d7-d37d-45d3-bb11-23347fc5b2d3" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="c-sharp" name="code">using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication7
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
            Loaded += OnLoaded;
        }

        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            AutoComplete1.ItemsSource = new string[]
            {
                "Steve Ballmer",
                "Bill Gates",
            };
        }
    }
}</pre>
</div>
<p><img alt="Embedded Silverlight Application (begin)" src="http://media.jeff.wilcox.name/blog/view/ESAStart.png" /><br /><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="150"><param name="source" value="http://www.jeff.wilcox.name/xap/2008/SilverlightApplication7.xap" /><a href="http://go2.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a><br />
</object><br /><img alt="Embedded Silverlight Application (end)" src="http://media.jeff.wilcox.name/blog/view/ESAFinish.png" /> </p>
<p><strong>Connecting to a JSON web service</strong></p>
<p>Most AJAX auto complete controls today use JSON. The transmit format is lightweight, able to transfer rich object data, and supported by just about everything out there. The System.Json assembly in Silverlight makes it easy to parse in VB and C#.</p>
<p>Here is a minimalistic example. I have this PHP page deployed:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:35087a74-4eac-4fe8-a4ac-301baf6eabc2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="php" name="code">&lt;?php
header("Content-type: application/json");

$var = "prefix";
if (isset($_GET[$var]) and $_GET[$var] != "")
{
        // Shorten
        $prefix = substr($_GET[$var], 0, 40);

        // Strip
        $s = strip_tags($prefix);

        // Create suggestions
        $suggestions = array();

        for ($i = 0; $i &lt; 11; $i++)
        {
                $suggestions[] = $s . $i;
        }

        print json_encode($suggestions);
}
?&gt;</pre>
</div>
<p>I&#8217;m using the same Page.xaml from before. To get ready to use JSON, I need to:</p>
<ul>
<li>Add a reference to the System.Json Silverlight assembly </li>
<li>Add a using statement to the top of my file for &#8216;System.Json&#8217;, &#8216;Microsoft.Windows.Controls&#8217;, &#8216;System.Linq&#8217;, and &#8216;System.Windows.Browser&#8217; </li>
</ul>
<p>The code behind file doesn&#8217;t need many changes to deal with a web service.</p>
<p>The basic idea is to intercept the Populating event, cancel it, and kick off a web client. In the completion event for the web client, we update the items source of the AutoCompleteBox and call the PopulateComplete method to display the suggestions.</p>
<p>In my app, I first subscribe to Population. I set some basic properties too:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:46bba493-b99c-4691-a398-b5ec69af52eb" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="c-sharp" name="code">        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            AutoComplete1.IsTextCompletionEnabled = false;

            // Server does the filtering
            AutoComplete1.SearchMode = AutoCompleteSearchMode.None;

            AutoComplete1.Populating += (s, args) =&gt;
                {
                    args.Cancel = true;
                    WebClient wc = new WebClient();
                    string prefix = HttpUtility.UrlEncode(args.Parameter);
                    Uri service = new Uri("http://www.jwpc.com/services/suggest/?prefix=" + prefix);
                    wc.DownloadStringCompleted += DownloadStringCompleted;
                    wc.DownloadStringAsync(service, s);
                };
        }</pre>
</div>
<p>Then, in the DownloadStringCompleted handler, I parse the JSON response:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:cf922312-381a-4bc5-bc66-59e7a3387c01" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="c-sharp" name="code">        private void DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            AutoCompleteBox acb = e.UserState as AutoCompleteBox;
            if (acb != null &#038;&#038; e.Error == null &#038;&#038; !e.Cancelled &#038;&#038; !string.IsNullOrEmpty(e.Result))
            {
                List&lt;string&gt; suggestions = new List&lt;string&gt;();
                JsonArray ja = JsonArray.Parse(e.Result) as JsonArray;
                foreach (JsonPrimitive suggestion in ja)
                {
                    suggestions.Add(suggestion.ToString());
                }
                if (suggestions.Count &gt; 0)
                {
                    acb.ItemsSource = suggestions;
                    acb.PopulateComplete();
                }
            }
        }</pre>
</div>
<p>That&#8217;s all there is to it!</p>
<p><img alt="Embedded Silverlight Application (begin)" src="http://media.jeff.wilcox.name/blog/view/ESAStart.png" /><br /><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="200"><param name="source" value="http://www.jeff.wilcox.name/xap/2008/SilverlightApplication8.xap" /><a href="http://go2.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a><br />
</object><br /><img alt="Embedded Silverlight Application (end)" src="http://media.jeff.wilcox.name/blog/view/ESAFinish.png" /> </p>
<p><strong>Real world AutoComplete example</strong></p>
<p>Inside the Silverlight Toolkit samples project, I&#8217;ve included a similar example of connecting to a JSON web service. It uses the excellent Live search suggestions. In this sample, the MinimumPopulateDelay is set to 150 milliseconds.</p>
<p>Here&#8217;s the Live.com sample:</p>
<p><img alt="Embedded Silverlight Application (begin)" src="http://media.jeff.wilcox.name/blog/view/ESAStart.png" /><br /><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="685" height="410"><param name="source" value="http://www.jeff.wilcox.name/xap/2008/SilverlightApplication9.xap" /><a href="http://go2.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"><img src="http://go2.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none" /></a><br />
</object><br /><img alt="Embedded Silverlight Application (end)" src="http://media.jeff.wilcox.name/blog/view/ESAFinish.png" /> </p>
<h3>How we determine what text to display in the text box</h3>
<p>For performance reasons, we haven&#8217;t exposed the ability for you to creating a binding expression linking your items and the text that should be used in comparisons.</p>
<p>When you bind to a list of objects, the string representation is evaluated in the following order:</p>
<ul>
<li>Attempting to use an IValueConverter instance (this is the <strong>Converter</strong> property, along with ConverterParameter and ConverterCulture) </li>
<li>Calling <strong>ToString()</strong> on the item </li>
</ul>
<p>So, if you own the data classes in your application, you&#8217;ll want to expose the most meaningful name (such as a person&#8217;s full name, or employee ID), since the default ToString operator is going to return the type name of your item instead.</p>
<p>You can also provide a value converter in all situations.</p>
<h3>AutoCompleteBox data templates, styling, and templating</h3>
<p>You can use the <strong>ItemTemplate</strong> property to provide a DataTemplate that is used for rendering items.</p>
<p>These dependency properties can be used for styling:</p>
<ul>
<li><strong>ItemContainerStyle</strong> </li>
<li><strong>TextBoxStyle</strong> </li>
</ul>
<p>In the Live search example, the text box style was:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:30688ea8-60cc-4d2e-853f-370a7a3b3a22" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">    &lt;UserControl.Resources&gt;
        &lt;Style x:Key="SearchTextBoxStyle" TargetType="TextBox"&gt;
            &lt;Setter Property="Background" Value="#AAFFFFFF" /&gt;
            &lt;Setter Property="FontFamily" Value="Verdana" /&gt;
            &lt;Setter Property="FontSize" Value="18" /&gt;
            &lt;Setter Property="Padding" Value="2" /&gt;
        &lt;/Style&gt;
    &lt;/UserControl.Resources&gt;</pre>
</div>
<p>And the AutoCompleteBox XAML:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:ecb2ba6b-84db-4f46-bf85-95f8dc42f87e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">&lt;controls:AutoCompleteBox
    SearchMode="None"
    x:Name="Search"
    TextBoxStyle="{StaticResource SearchTextBoxStyle}"
    IsTextCompletionEnabled="False"
    IsEnabled="False" /&gt;</pre>
</div>
<p>The control defines four template parts, similar to ComboBox; however, the default control template only provides 3 of those parts, since it does not expose a toggle button. All 4 are:</p>
<ul>
<li>The text box; named &#8216;Text&#8217; </li>
<li>The popup; named &#8216;Popup&#8217; </li>
<li>The selection adapter (ListBox is the default); control type or wrapper implements the ISelectionAdapter interface; named &#8216;SelectionAdapter&#8217; </li>
<li>The drop down toggle button; named &#8216;DropDownToggle&#8217; and of type ToggleButton </li>
</ul>
<h3>What&#8217;s next?</h3>
<p>I hope this gives you what you need to get started using AutoCompleteBox in your own applications. In the coming days I&#8217;ll be posting some details and fun examples of how you can really make your apps shine with this control.</p>
<p>If you&#8217;re looking for other posts about the control, I&#8217;d recommend checking out <a href="http://jonas.follesoe.no/ImproveYourUserExperienceUsingTheAutoCompleteBox.aspx">Jonas Folles&#248;&#8217;s AutoCompleteBox post</a> too. He&#8217;s a blogging machine!</p>
<p><em>Hope this helps.</em></p>
<p>See also:<br />
  <br /><a href="http://www.jeff.wilcox.name/2008/10/30/fivethings-autocompletebox/">AutoCompleteBox: The 5 things you need to know</a></p>
<p><a href="http://www.jeff.wilcox.name/2008/10/30/video-autocompletebox/">AutoCompleteBox Video Introduction</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/introducing-autocompletebox/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>AutoCompleteBox: The 5 things you need to know</title>
		<link>http://www.jeff.wilcox.name/2008/10/fivethings-autocompletebox/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/fivethings-autocompletebox/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 21:51:04 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/10/30/fivethings-autocompletebox/</guid>
		<description><![CDATA[&#160; AutoCompleteBox works great with collections. You don&#8217;t have to connect it to a sophisticated web service. We named this control the AutoCompleteBox, not AutoComplete. Its different. It is a rich control that provides a set of suggestions, but not so much the old AJAX version that required you to wire the control up to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/1.png" />&#160; <br /><strong><a href="http://www.codeplex.com/Silverlight/Release/ProjectReleases.aspx?ReleaseId=18804">AutoCompleteBox</a> works great with collections. You don&#8217;t have to connect it to a sophisticated web service.</strong></p>
<p>We named this control the AutoCompleteBox, <em>not</em> AutoComplete. Its different. It is a rich control that provides a set of suggestions, but not so much the old AJAX version that required you to wire the control up to a web service.</p>
<p>So, if you heard AutoComplete and got worried&#8230; don&#8217;t. You can just bind it to simple data that you <em><strong>already have </strong></em>in your application.</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:03fe1c07-d788-4b3c-b561-4f3bb0792133" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">&lt;controls:AutoCompleteBox x:Name="State" ItemSource="{StaticResource StateCollection}" /&gt;</pre>
</div>
<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/2.png" />&#160; <br /><strong>Have fun, give it some style.</strong></p>
<p>As a composite control, AutoCompleteBox has a TextBox and usually a ListBox. The TextBoxStyle, ItemContainerStyle, and <strong>ItemTemplate</strong> properties are key to styling. And we expose the complete set of standard control visual states, plus PopupOpened and PopupClosed.</p>
<p>Changing the look of the text box part is easy:</p>
<div class="wlWriterSmartContent" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:a9f5081b-6909-4e5a-b705-126a965c5e95" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<pre class="xml" name="code">&lt;controls:AutoCompleteBox x:Name="Patient"&gt;
    &lt;controls:AutoCompleteBox.TextBoxStyle&gt;
        &lt;Style TargetType="TextBox"&gt;
            &lt;Setter Property="Background" Value="Red" /&gt;
            &lt;Setter Property="FontSize" Value="24" /&gt;
        &lt;/Style&gt;
    &lt;/controls:AutoCompleteBox.TextBoxStyle&gt;
&lt;/controls:AutoCompleteBox&gt;</pre>
</div>
<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/3.png" />&#160; <br /><strong>You can use your own rich data objects.</strong></p>
<p>If you shove a collection of Airport objects into the control, your business logic can work with the AutoCompleteBox&#8217;s &quot;SelectedItem&quot; value. Talk about easy.</p>
<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/jfk.png" /> </p>
<p>
  <br /><img src="http://media.jeff.wilcox.name/blog/AutoComplete/4.png" />&#160; <br /><strong>AutoComplete with a text list is so 1999.</strong></p>
<p>We&#8217;re opening the door for auto complete like you&#8217;ve never experienced it before. The drop down inside AutoCompleteBox ships with ListBox. But with a little effort building an adapter, you can easily throw in a media control, TreeView, DataGrid, you name it.</p>
<p><img src="http://media.jeff.wilcox.name/blog/toolkit/SampleControl.png" /> </p>
<p>And don&#8217;t worry. We made sure to master the text list scenario, too. It just works.</p>
<p><img src="http://media.jeff.wilcox.name/blog/AutoComplete/5.png" />&#160; <br /><strong>This is a preview control. Talk to us.</strong></p>
<p>The Preview <a href="http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Quality%20Bands&amp;referringTitle=Home">quality band</a> covers controls that are useful, should meet most applications&#8217; needs, and is going to just keep getting better.</p>
<p>That is a good thing: we really want to hear your feedback. Your feedback is going to make a difference in the direction and the core scenarios that AutoCompleteBox covers. What sucks? What&#8217;s missing? What rocks?</p>
<p>Check out the <a href="http://www.codeplex.com/Silverlight/">Silverlight Toolkit</a> today. </p>
<p>Experience the <a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html">live toolkit sample</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/fivethings-autocompletebox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Sorry boss, I just released the new Silverlight Controls source code to the world.</title>
		<link>http://www.jeff.wilcox.name/2008/10/open-source-silverlight-toolkit/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/open-source-silverlight-toolkit/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 21:28:31 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/10/28/open-source-silverlight-toolkit/</guid>
		<description><![CDATA[Last night, I signed on to the CodePlex site and checked in the source code to all the Silverlight controls we&#8217;ve been working on night-and-day. Like an open source ninja! On just about any other team at Microsoft, I might have some major explaining to do right about now. In all seriousness, Shawn Burke is [...]]]></description>
			<content:encoded><![CDATA[<p>Last night, I signed on to the <a href="http://www.codeplex.com/Silverlight/">CodePlex site</a> and checked in the source code to all the Silverlight controls we&#8217;ve been working on night-and-day. Like an open source ninja! On just about any other team at Microsoft, I might have some major explaining to do right about now.</p>
<p>In all seriousness, <a href="http://blogs.msdn.com/sburke/archive/2008/10/28/silverlight-toolkit-now-available-for-download.aspx">Shawn Burke is the man behind open source</a> in the developer division. And my boss. And we&#8217;ve been planning this major source release for a while now. He&#8217;s the person to thank for having the vision and the passion to challenge us to get this out there for you all.</p>
<p>All of our work is out there now with the <a href="http://www.microsoft.com/opensource/licenses.mspx#Ms-PL">Microsoft Public License</a> (Ms-PL), an <a href="http://www.opensource.org/licenses/ms-pl.html">Open Source Initiative</a>-approved license, so there&#8217;s a lot of opportunity for developers to reuse our hard work.</p>
<p>Delivering source code is easy. So we&#8217;re raising the bar, and shipping sample apps, sample source, plus the thousands of unit and functional tests that we used for testing these controls on all the supported platforms. <a href="http://www.codeplex.com/Silverlight/">Download the November &#8217;08 release now</a>!</p>
<p>We also deliver a complete data visualization stack, and <a href="http://blogs.msdn.com/delay/archive/2008/10/28/announcing-a-free-open-source-charting-solution-for-silverlight-silverlight-toolkit-released-today-at-pdc.aspx">David Anson has more details</a> on that.</p>
<h3>AutoCompleteBox</h3>
<p>I was the developer for the AutoCompleteBox control and will be sharing a lot of the fun scenarios that the control enables on this blog in the coming days. This control is a lot like other AutoComplete AJAX controls that are out there, but shaken up and served with a twist of extensibility.</p>
<p>One small example for the true geeks out there: I love that we were able to deliver a searching/filtering story that lets you provide a lambda function to perform your own advanced filtering on the items.</p>
<p><a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html"><img alt="Search suggestions sample page" src="http://media.jeff.wilcox.name/blog/AutoComplete/AutoCompleteSample.jpg" /></a>     <br /><em>Click to <a href="http://silverlight.net/samples/sl2/toolkitcontrolsamples/run/default.html">open the live sample project</a> shown above. Then navigate to &quot;AutoCompleteBox &gt; Scenarios &gt; Search Suggestions&quot;.</em></p>
<p>The &quot;Search Suggestions&quot; scenario sample inside the live control samples application actually connects to the Live Search web service, just like Live.com and IE8 do. The requests come back in JSON. And the sample features the AutoCompleteBox control for Silverlight. Clicking through the filenames at the top of the frame you&#8217;ll see that the whole thing was done in about a page of code.</p>
<p><strong>The proverbial Microsoft blog storm is off to a good start. I&#8217;ll contribute my own wave of posts here soon enough. In the meantime, there&#8217;s </strong><a href="http://jonas.follesoe.no/ImproveYourUserExperienceUsingTheAutoCompleteBox.aspx"><strong>already</strong></a><strong> </strong><a href="http://jonas.follesoe.no/ChangeTheLookOfYourSilverlightApplicationUsingThemes.aspx"><strong>plenty</strong></a><strong> </strong><a href="http://jonas.follesoe.no/NewLayoutControlsInTheSilverlightToolkit.aspx"><strong>of</strong></a><strong> </strong><a href="http://www.bluerosegames.com/SilverlightBrassTacks/post/Viewbox-in-the-Silverlight-Toolkit.aspx"><strong>coverage</strong></a><strong> </strong><a href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/124/Default.aspx"><strong>out</strong></a><strong> </strong><a href="http://weblogs.asp.net/dwahlin/archive/2008/10/28/silverlight-toolkit-released.aspx"><strong>there</strong></a><strong>.</strong></p>
<p>Enjoy the source. Learn from it. Tell us what you would like us to focus on and do better and we continue to iterate on this toolkit.</p>
<p>Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/open-source-silverlight-toolkit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Download reference docs for the Silverlight Unit Test Framework</title>
		<link>http://www.jeff.wilcox.name/2008/10/ut-docs/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/ut-docs/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 06:09:09 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/10/25/ut-docs/</guid>
		<description><![CDATA[The API reference documentation for the unit test framework is now available. Developers looking to take complete advantage of the more intricate features and presentation framework-specific functionality in the unsupported test framework should take a look. Written by developers, and not expert technical writers, don&#8217;t expect anything too earth-shattering. The download has no conceptual content. [...]]]></description>
			<content:encoded><![CDATA[<p>The API reference documentation for the unit test framework is now available. Developers looking to take complete advantage of the more intricate features and presentation framework-specific functionality in the unsupported <a href="http://code.msdn.microsoft.com/silverlightut/">test framework</a> should take a look.</p>
<p>Written by developers, and not expert technical writers, don&#8217;t expect anything too earth-shattering. The download has no conceptual content. Do know this: every single type &amp; P.M.E. is commented, thanks to <a href="http://code.msdn.microsoft.com/sourceanalysis/">Source Analysis</a>. The help file was generated using <a href="http://www.codeplex.com/Sandcastle">Sandcastle</a>.</p>
<h3>Download the test framework documentation</h3>
<p><a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightut&amp;DownloadId=3535">Download the documentation</a> (Zip containing a Chm, 1881K)    <br /><a href="http://code.msdn.microsoft.com/silverlightut/">Silverlight unit test framework site</a></p>
<p><a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightut&amp;DownloadId=3535"><img alt="Download the documentation file (CHM)" src="http://media.jeff.wilcox.name/blog/ut/SilverlightUnitTestChm.png" /></a> </p>
<h3>Using the documentation</h3>
<p>Before opening the content, you will most likely need to unlock the file since the file&#8217;s from the tubes. For first-time use:</p>
<ul>
<li>Extract the contents of the Zip download</li>
<li>Right-click on the *.chm file and click &#8216;Properties&#8217;</li>
<li>Click the &#8216;Unblock&#8217; button</li>
<li>Open the *.chm file as usual</li>
</ul>
<h3>Silverlight documentation</h3>
<p>Looking for the offline Silverlight 2 SDK documentation download, or the online Silverlight resources? All of these are good bookmarks to have handy:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/cc838158(vs.95).aspx">Silverlight in the MSDN Library</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc838194(VS.95).aspx">Silverlight class library reference in the MSDN Library</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=bce7684a-507b-4fc6-bc99-6933cd690cab&amp;displaylang=en">Download the Silverlight 2 SDK docs</a></li>
</ul>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/ut-docs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight unit testing templates updated</title>
		<link>http://www.jeff.wilcox.name/2008/10/final-ut-templates/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/final-ut-templates/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 03:42:27 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/10/24/final-ut-templates/</guid>
		<description><![CDATA[Getting into the habit of unit testing your Silverlight applications is a little easier now. I posted updated templates for the Silverlight Unit Test Framework on the MSDN Code Gallery site. There are project and item templates for Visual C# as well as Visual Basic. Download the templates Direct download link to the templates (Zip, [...]]]></description>
			<content:encoded><![CDATA[<p>Getting into the habit of unit testing your Silverlight applications is a little easier now. I posted updated templates for the Silverlight Unit Test Framework on the MSDN Code Gallery site. There are project and item templates for Visual C# as well as Visual Basic.</p>
<h3>Download the templates</h3>
<p>Direct <a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightut&amp;DownloadId=3529"><strong>download link to the templates</strong></a> (Zip, 46K)     <br />Direct <a href="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=silverlightut&amp;DownloadId=3274"><strong>download link to the Silverlight Unit Test Framework</strong></a> binaries (Zip, 284k)</p>
<p>To install, just drop the templates and binaries in the right directories.</p>
<p><strong>Project templates</strong> go here: %userprofile%\Documents\Visual Studio 2008\Templates\ProjectTemplates     <br /><strong>Item templates</strong>: %userprofile%\Documents\Visual Studio 2008\Templates\ItemTemplates     <br />And the unit <strong>test framework binaries</strong>: %programfiles%\Microsoft SDKs\Silverlight\v2.0\Libraries\Client</p>
<h3>New to Silverlight unit testing?</h3>
<ul>
<li><a href="http://www.jeff.wilcox.name/2008/09/30/rc0-new-test-features/">What&#8217;s new in the RTW release of the Silverlight Unit Test Framework</a> (9/30/08) </li>
<li><a href="http://www.jeff.wilcox.name/2008/08/16/utbasics/">Visual Studio unit testing introduction</a> (8/16/08) </li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx">Unit Testing with Silverlight</a>, Scott Guthrie (4/2/08) </li>
<li><a href="http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/">Unit Testing with Silverlight 2</a> (3/31/08) </li>
<li><a href="http://www.jeff.wilcox.name/2008/03/07/silverlight-unit-testing/">Original introduction post</a> (3/7/08) </li>
</ul>
<p><a href="http://code.msdn.microsoft.com/silverlightut/"><img alt="DockPanel tests" src="http://media.jeff.wilcox.name/blog/ut/DockPanelTest.png" /></a>&#160; <br /><em>WrapPanel tests running in the Silverlight Unit Test Framework</em></p>
<h3>Upgrade your Beta 2 test projects</h3>
<p>There&#8217;s a <a href="http://www.jeff.wilcox.name/2008/09/29/unit-testing-rc0-changes/">breaking changes guide</a> for the test framework, for anyone who was using the last version for Beta 1 and/or Beta 2 development.</p>
<p>Thanks to Marius Rochon for sending me one of these and challenging me to get them all updated for the final release of Silverlight 2. Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/final-ut-templates/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Awesome controls are coming for the Silverlight platform</title>
		<link>http://www.jeff.wilcox.name/2008/10/controls-are-coming/</link>
		<comments>http://www.jeff.wilcox.name/2008/10/controls-are-coming/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 08:22:21 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2008/10/23/controls-are-coming/</guid>
		<description><![CDATA[Now that the wait is over and Silverlight 2 is out there in the wild, there&#8217;s very little excuse not to be using this awesome Microsoft platform. Easy-to-use controls make fast, easy development possible, and there is a clear roadmap out there now on what all is going on. Last week I was really bunkered [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the wait is over and Silverlight 2 is out there in the wild, there&#8217;s very little excuse not to be using this awesome Microsoft platform. Easy-to-use controls make fast, easy development possible, and there is a clear roadmap out there now on what all is going on.</p>
<p>Last week I was really bunkered down with Silverlight. That and upgrading to the 64-bit Photoshop. That&#8217;s nice, but I&#8217;m always pressing Alt-Tab to use Expression Blend. You really can build expressive apps with Silverlight.</p>
<p>I know for a fact that there&#8217;s some neat work happening in the community, and do apologize for being silent on the blogging front. Here&#8217;s some of what&#8217;s going on.</p>
<h3>Built-in controls</h3>
<p>The controls that ship with the Silverlight 2 runtime and SDK are slick. They received crisp, refined styles this time around, and the experience for application and interface developers is feeling similar to WPF now. There&#8217;s also a progress bar and password box built-in now.</p>
<p><img src="http://media.jeff.wilcox.name/blog/toolkit/NewSilverlightThemes.png" /> </p>
<p>If you&#8217;re not using the DataGrid in your apps, you&#8217;re missing out: <a href="http://blogs.msdn.com/scmorris/archive/2008/10/14/silverlight-2-datagrid-is-released.aspx">Scott Morrison has been busy updating</a> all of the great DataGrid tutorials for the final release version. Key messages: Performance, customizable, and new features too, like multi-selection.</p>
<h3>Silverlight Toolkit</h3>
<p>With the final Silverlight 2 release a little over a week ago, Shawn Burke blogged about the progress that we&#8217;re making on the <a href="http://blogs.msdn.com/sburke/archive/2008/10/14/silverlight-2-released-silverlight-toolkit-on-the-way.aspx">Silverlight Toolkit</a>. There are neat controls in the pic that he posted: Expander, a TreeView, NumericUpDown, and an AutoComplete text box.</p>
<p><img alt="DataGrid thing" src="http://media.jeff.wilcox.name/blog/toolkit/SampleControl.png" /></p>
<p><em>Oops. I hit the wrong button, and Windows Live Writer seems to have posted a screenshot of a sample that I had up on my desktop&#8230; hmm&#8230; It sort of looks like a text box. And a drop down. Yet it has a DataGrid, too. Interesting&#8230;</em></p>
<p>So, stay tuned. Reiterating the cool things Shawn&#8217;s talked about:</p>
<ul>
<li><a href="http://www.opensource.org/licenses/ms-pl.html">MS-PL</a>, open source from Microsoft</li>
<li>Things you&#8217;ve been missing: WrapPanel. DockPanel.</li>
<li>Accompanying unit &amp; integration tests built with the <a href="http://code.msdn.microsoft.com/silverlightut/">Silverlight Unit Test Framework</a></li>
</ul>
<h3>Watermarked TextBox Control</h3>
<p>Yesterday Tim Heuer posted some <a href="http://timheuer.com/blog/archive/2008/10/22/silverlight-watermark-text-box-control.aspx">Watermarked TextBox goodness</a> on his blog, in case you were looking for that one.</p>
<h3>SilverlightContrib</h3>
<p>A few days ago a friend pointed me to the <a href="http://www.codeplex.com/silverlightcontrib/">SilverlightContrib</a> project. I&#8217;ll admit I don&#8217;t know a lot about it, other than the bullet points I saw on the homepage. I&#8217;m not associated with this project in any way, but want to give it props. Just look at some of the things it has:</p>
<ul>
<li>Zip compression</li>
<li>Utilities galore: byte utilities. string utilities. animation stuff</li>
<li>Some selection controls and gauges.</li>
</ul>
<p>Check it out! There is a <a href="http://silverlightcontrib.org/demo/">live demo page</a> out there, too.</p>
<h3>Here comes PDC</h3>
<p>If you&#8217;re looking for something to do next weekend, it sounds like all the Microsoft geeks will be converging on the Los Angeles Convention Center for <a href="http://microsoftpdc.com/Default.aspx">PDC 2008</a>. There is even a nice convincing <a href="http://microsoftpdc.com/Letter.aspx">letter you can send your boss</a>. Let me know if that works for you.</p>
<h3>Stay tuned!</h3>
<p>I&#8217;ve been involved in Silverlight for a few years now, in one capacity or another &#8211; and the trip has been awesome. </p>
<p>I won&#8217;t reminisce much, other than to say that I do have vivid memories of the weeks that debugging didn&#8217;t work&#8230; the weeks that the wrong clicks in a sequence could cause problems&#8230; What was released last week is <strong>solid.</strong> </p>
<p>Major kudos to everyone that made the release happen, it has been a pleasure working with you all. Now we&#8217;re going to see just how fun this gets. There&#8217;s more to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2008/10/controls-are-coming/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
