<?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; Silverlight Toolkit</title>
	<atom:link href="http://www.jeff.wilcox.name/topics/dev/silverlight-toolkit/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeff.wilcox.name</link>
	<description>Silverlight, rich client apps and web development</description>
	<lastBuildDate>Wed, 01 Feb 2012 14:42:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Exploring the August 2011 Silverlight for Windows Phone Toolkit for &#8216;Mango&#8217;</title>
		<link>http://www.jeff.wilcox.name/2011/08/august2011phonetoolkit/</link>
		<comments>http://www.jeff.wilcox.name/2011/08/august2011phonetoolkit/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 18:00:36 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Control Development]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2011/08/august2011phonetoolkit/</guid>
		<description><![CDATA[We’ve now shipped the August 2011 release of the Silverlight for Windows Phone Toolkit, a key ingredient in preparing a great ‘Mango’ app. There are new controls, many bug fixes, great new localization features, and more in this pack of components. You can download the new release straight from the CodePlex site at http://silverlight.codeplex.com/ &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>We’ve now shipped the August 2011 release of the Silverlight for Windows Phone Toolkit, a key ingredient in preparing a great ‘Mango’ app. There are new controls, many bug fixes, great new localization features, and more in this pack of components.</p>
<hr />
<blockquote>
<p><b>You can download the new release straight from the CodePlex site at <a href="http://silverlight.codeplex.com/">http://silverlight.codeplex.com/</a></b> &#8211; it requires the latest ‘Mango’ developer tools as well.</p>
<p>The release is also available on NuGet as the <a href="http://nuget.org/List/Packages/SilverlightToolkitWP">SilverlightToolkitWP</a> package</p>
</blockquote>
<hr />
<h3><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="SampleProject" border="0" alt="SampleProject" align="right" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/08/SampleProject.png" width="236" height="450" />Check out the sample app</h3>
<p>One of the best ways to learn about the controls is to use the sample app on your Windows Phone. We haven’t published it to the marketplace yet, so in the meantime, just deploy this .XAP to your developer-unlocked Windows Phone (or the Windows Phone Emulator). It should work with the <a href="http://create.msdn.com/en-US/">latest Windows Phone ‘Mango’ developer tools</a>.</p>
<p>We’ve posted the sample <a href="http://silverlight.codeplex.com/releases/view/71550">XAP here</a>.</p>
<p>The app includes a nice list of the controls, touch one to go into a sub-page. The full open source code to the sample is on the CodePlex site at <a href="http://silverlight.codeplex.com/">http://silverlight.codeplex.com/</a></p>
<h3>What’s in the new release?</h3>
<p><strong>LongListSelector</strong> has been rebuilt and redesigned to take advantage of the new smooth scrolling and off-thread touch input support in ‘Mango’. This is a buttery-smooth control for showing lists, including grouping and jump list support.</p>
<p><strong>MultiselectList</strong> control enables multiple selection for easily working with lists of data, similar to the Mail app’s capability.</p>
<p><strong>LockablePivot</strong> adds a special mode to the Pivot control where only the current item is shown (often used with multiple selection).</p>
<p><strong>ExpanderView</strong> is a primitive items control that can be used for expanding and collapsing items (like the threaded views in the Mail app).</p>
<p><strong>HubTile</strong> lets you add beautiful, informative, animated tiles to your application, similar to the new People groups in ‘Mango’.</p>
<p><strong>ContextMenu</strong> control has been reworked: performance improvements and visual consistency fixes.</p>
<p><strong>ListPicker</strong> now supports multiple selection.</p>
<p><strong>RecurringDaysPicker</strong> lets your users select a day of the week.</p>
<p><strong>Date &amp; Time Converters </strong>localized to 22 languages. The converters let developers easily display date and time in the user interface in one of the many styles found throughout the phone’s UI, from a short date like ‘7/19’ to relative times like ‘about a month ago’.</p>
<p><strong>Page Transitions</strong> have improved performance for a more responsive feel.</p>
<p><strong>PhoneTextBox</strong> is an early look at an enhanced text box with action icon support, watermarking, etc.</p>
<p><strong>All error messages and interface elements</strong> have been localized to all of the supported languages, making for a great experience for users around the world.</p>
<h3>Other great components</h3>
<p>If you’re new to the Silverlight for Windows Phone Toolkit, you’re in for a treat as an app developer: the simple developer library also contains these great components designed specifically for the Windows Phone:</p>
<p><strong>AutoCompleteBox</strong> is a text box control that allows for simple auto-completion based on a filter.</p>
<p><strong>DatePicker</strong> lets a user select a date, similar to that found in the Alarms app on the Windows Phone.</p>
<p><strong>PerformanceProgressBar</strong> can be used to show indeterminate progress inside an app (though you should also consider the new <a href="http://msdn.microsoft.com/en-us/library/microsoft.phone.shell.progressindicator(v=VS.92).aspx">ProgressIndicator</a> support in ‘Mango’, too).</p>
<p><strong>TiltEffect</strong> attached property that gives buttons, list items, and other components that nice ‘tilt’ touch experience.</p>
<p><strong>TimePicker</strong> for choosing a time.</p>
<p><strong>WrapPanel</strong> is a non-virtualized wrapping panel often used for displaying photo thumbnails.</p>
<p>Helper code for <strong>Gestures</strong> (touch input manipulations).</p>
<h3>Are there plans for a 7.0 toolkit refresh?</h3>
<p>Yes. We don’t have it prepared yet, but we have integrated many of these new features into the 7.0 Windows Phone branch that we have, and eventually (no timeline yet) we’ll get that out to developers.</p>
<h3>Using the localized Date and Time Converters</h3>
<p>The date/time converters help simplify displaying date information. We’ve done all the hard work of preparing relative date logic, localizing strings and information, and making sure it’s all good code, so you can just use these in your app.</p>
<p>To get started, you add the converters as resources, either app-wide (in your App.xaml), or in a specific page.</p>
<p>Here’s all of the new converters:</p>
<pre class="xml" name="code">&lt;phone:PhoneApplicationPage.Resources&gt;
    &lt;toolkit:RelativeTimeConverter x:Key=&quot;RelativeTimeConverter&quot;/&gt;
    &lt;toolkit:ThreadDateTimeConverter x:Key=&quot;ThreadDateTimeConverter&quot;/&gt;
    &lt;toolkit:ListViewDateTimeConverter x:Key=&quot;ListViewDateTimeConverter&quot;/&gt;
    &lt;toolkit:FullViewDateTimeConverter x:Key=&quot;FullViewDateTimeConverter&quot;/&gt;
    &lt;toolkit:HourlyDateTimeConverter x:Key=&quot;HourlyDateTimeConverter&quot;/&gt;
    &lt;toolkit:DailyDateTimeConverter x:Key=&quot;DailyDateTimeConverter&quot;/&gt;
&lt;/phone:PhoneApplicationPage.Resources&gt;</pre>
<p>You can use the sample app to experiment with the various views, but they mimic many of the views found throughout the Windows Phone for showing this information.</p>
<p>Now, to show the formatted and localized time or date, just use the converter in binding syntax, like this:</p>
<pre class="xml" name="code">&lt;TextBlock Text=&quot;{Binding DateAndTime, Converter={StaticResource RelativeTimeConverter}}&quot;
            FontSize=&quot;{StaticResource PhoneFontSizeMediumLarge}&quot;
            Foreground=&quot;{StaticResource PhoneForegroundBrush}&quot;/&gt;</pre>
<p>Here’s German (on the left) and French (right) with the nice RelativeTimeConverter in use:</p>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/08/DateTimeConverters.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="DateTimeConverters" border="0" alt="DateTimeConverters" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/08/DateTimeConverters_thumb.png" width="680" height="567" /></a></p>
<h3>The new HubTile control</h3>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/08/HubTileSample.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top: 0px; border-right: 0px; padding-top: 0px" title="HubTileSample" border="0" alt="HubTileSample" align="right" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/08/HubTileSample_thumb.png" width="300" height="575" /></a>The HubTile control lets you add your own tiles to your app, just like the People hub in ‘Mango’ does for groups of people. It looks sharp. Similar to how the phone does it, there’s a central coordination system so that tiles animate in a defined but random way; you can also freeze/unfreeze the tiles to improve performance in pivot scenarios, etc.</p>
<p>The control is simple to use, here’s some of the code from the sample project:</p>
<pre class="xml" name="code">&lt;toolkit:HubTile
    Margin=&quot;12,12,0,0&quot;
    Source=&quot;/Images/Pretzel.jpg&quot;
    Title=&quot;Pretzel&quot;
    Notification=&quot;w/fixings&quot;
    DisplayNotification=&quot;True&quot;
    GroupTag=&quot;Food&quot;/&gt;</pre>
<p>The tiles can be arranged to offer links to sub pages easily, etc. These look really slick at runtime.</p>
<h3>Using the Page Transitions</h3>
<p>The page transitions are a nice, easy way to improve the visual experience of your app, and now they are much more responsive, immediately reacting to new navigations.</p>
<p>It’s a two-step process to use the transitions in your project once you’ve included the toolkit.</p>
<p>First, open App.xaml.cs, open up the region at the bottom of the file with the phone initialization work, and replace the standard phone frame with our TransitionFrame (about line 108 in the standard project):</p>
<pre class="c-sharp" name="code">RootFrame = new TransitionFrame();</pre>
<p>Next, on every page, you can define the transitions you would like for in and out navigations; often we see developers creating a style in App.xaml and just applying that to pages.</p>
<pre class="xml" name="code">&lt;toolkit:TransitionService.NavigationInTransition&gt;
    &lt;toolkit:NavigationInTransition&gt;
        &lt;toolkit:NavigationInTransition.Backward&gt;
            &lt;toolkit:TurnstileTransition Mode=&quot;BackwardIn&quot;/&gt;
        &lt;/toolkit:NavigationInTransition.Backward&gt;
        &lt;toolkit:NavigationInTransition.Forward&gt;
            &lt;toolkit:TurnstileTransition Mode=&quot;ForwardIn&quot;/&gt;
        &lt;/toolkit:NavigationInTransition.Forward&gt;
    &lt;/toolkit:NavigationInTransition&gt;
&lt;/toolkit:TransitionService.NavigationInTransition&gt;
&lt;toolkit:TransitionService.NavigationOutTransition&gt;
    &lt;toolkit:NavigationOutTransition&gt;
        &lt;toolkit:NavigationOutTransition.Backward&gt;
            &lt;toolkit:TurnstileTransition Mode=&quot;BackwardOut&quot;/&gt;
        &lt;/toolkit:NavigationOutTransition.Backward&gt;
        &lt;toolkit:NavigationOutTransition.Forward&gt;
            &lt;toolkit:TurnstileTransition Mode=&quot;ForwardOut&quot;/&gt;
        &lt;/toolkit:NavigationOutTransition.Forward&gt;
    &lt;/toolkit:NavigationOutTransition&gt;
&lt;/toolkit:TransitionService.NavigationOutTransition&gt;</pre>
<h3>Other resources</h3>
<p>From one of the earlier releases, you can find out about ListPicker, LongListSelector, TransitionFrame, AutoCompleteBox, etc. in <a href="http://blogs.msdn.com/b/delay/archive/2010/11/02/mo-controls-mo-controls-mo-controls-announcing-the-second-release-of-the-silverlight-for-windows-phone-toolkit.aspx">David Anson’s blog post on these components</a>.</p>
<h3>Special thanks</h3>
<p>The toolkit is made possible by a number of people throughout Microsoft who are passionate about great user experiences and the Windows Phone – too many people to list here but definitely Dave, Dustin, Aaron, Phillip, Richard, Tom, Peter, and more! But with this release, we’ve also had the pleasure of working with a number of great students from around the world who interned this summer at Microsoft.</p>
<p>With their permission, I wanted to share their names here to thank them for their contributions – and this way you know who to bug on Twitter or online when you’re filing bugs!</p>
<ul>
<li>Badr Zrari (Software Engineering, Polytechnic Montreal) worked on the new buttery-smooth LongListSelector (now based on ListBox) </li>
<li><a href="https://twitter.com/#!/joseharriaga">José H. Arriaga</a> (Computer and Robotics Engineering, Monterrey Institute of Technology and Higher Education) worked on the HubTile, date and time converters, multiselect list, expander item </li>
<li><a href="http://andrewmunsell.com/">Andrew Munsell</a> worked on PhoneTextBox </li>
</ul>
<p>Hope you enjoy the new release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/08/august2011phonetoolkit/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Updated Silverlight Unit Test Framework binaries&#8211;compatible with the Mango phone tools beta</title>
		<link>http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/</link>
		<comments>http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 20:38:07 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/</guid>
		<description><![CDATA[I took a few minutes today to build and share this updated set of assemblies that are Mango beta-compatible for phone developers. These can also be used with the RTM of phone, SL3, etc. There were some XAML syntax errors in code that was previously not exercised, oops. [ZIP, 518K] Silverlight Unit Test Framework Assemblies [...]]]></description>
			<content:encoded><![CDATA[<p>I took a few minutes today to build and share this updated set of assemblies that are Mango beta-compatible for phone developers. These can also be used with the RTM of phone, SL3, etc. There were some XAML syntax errors in code that was previously not exercised, oops.</p>
<p><a href="http://media.jeff.wilcox.name/blog/TestFx20110609.zip"><strong>[ZIP, 518K]</strong> Silverlight Unit Test Framework Assemblies compatible with Mango Beta Tools</a></p>
<p>I’ve enclosed the license file, too. Sorry it took so long to get out, Jon.</p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>4th &amp; Mayor: the ultimate foursquare app for your Windows Phone</title>
		<link>http://www.jeff.wilcox.name/2011/03/announcing-4thandmayor/</link>
		<comments>http://www.jeff.wilcox.name/2011/03/announcing-4thandmayor/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 22:43:05 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2011/03/announcing-4thandmayor/</guid>
		<description><![CDATA[I'm pleased to announce that my foursquare app for Windows Phone, 4th &#038; Mayor, is now available on the Windows Phone Marketplace.]]></description>
			<content:encoded><![CDATA[<p>I’m pleased to announce that my app is called <a href="http://www.4thandmayor.com/">4th &amp; Mayor</a>. It is a <a href="http://www.foursquare.com/">foursquare</a> client for Windows Phone 7 and it is now available for free on the Windows Phone Marketplace. I previously hinted at the app with <a href="http://www.jeff.wilcox.name/2011/03/building-an-unofficial-4sq-app-for-wp7/">this other post</a>.</p>
<p>This app brings all of the great new foursquare features that your iPhone and Android friends have been using: adding and experiencing photos at places, photos with tips, commenting on check-ins, and an early look at the cool new “explore” features that recommendations places and things to do. (<a href="http://blog.foursquare.com/2011/03/08/foursquare-3/">fsq3 info on the foursquare blog</a>)</p>
<p>It’s been a lot of fun building the client over the past few months, and I am excited to share a lot of my development experiences on this blog. Expect great things. Foursquare has a very solid and open API for developers to use (REST + JSON), and it’s a great, fun way to explore any city and stay in touch with your friends. Also, given all the recent news about Twitter, I’m super happy that I didn’t decide to make a Twitter client <img src='http://www.jeff.wilcox.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>On top of being a fully functional, free foursquare app, I’ve also made sure to address key complaints that I heard from people regarding the official foursquare app for WP7: general touch responsiveness, feature completeness, and the ability to check-in to international locations (with accents and other special characters in their name).</p>
<p><a href="http://www.4thandmayor.com/features/index.html"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px" border="0" src="http://d2tz2ccf2zi8lx.cloudfront.net/media/p1.png" /></a></p>
<h3>Follow the product</h3>
<p>You can find out more about 4th &amp; Mayor on the web at <a href="http://www.4thandmayor.com/">http://www.4thandmayor.com/</a> – as well as on Twitter <a href="http://www.twitter.com/4thandmayor">@4thandmayor</a> and on <a href="http://www.facebook.com/4thandmayor">Facebook</a>. If you are interested in the app, its features and updates, please subscribe to the app’s blog at <a href="http://blog.4thandmayor.com/">http://blog.4thandmayor.com/</a>.&#160; I don’t want to inundate my technical subscribers with news about app updates and new features, so I want to keep that separate for the most part.</p>
<p>Do expect a great series of blog posts to come out of this learning experience, all the development-related information will be posted here. From the Windows Phone design system to development tips and tricks, this is the place to find that.</p>
<h2>“4th &amp; Mayor”</h2>
<p>So my app is called 4th &amp; Mayor. Instead of focusing on just raw performance from a development standpoint, I wanted to show how I would envision a great Windows Phone app. I believe that for a v1.0 release, I have delivered a great initial app experience. I decided to try and demonstrate a happy compromise, hoping to yield a wonderful experience that doesn’t take short-cuts.</p>
<ul>
<li>An emphasis on design</li>
<li>Aiming for complete client functionality</li>
<li>Keeping the app responsive to user input no matter what</li>
<li>A beautiful experience, yet differentiated enough</li>
</ul>
<p>This all started because one of the things I use my smart phone the most is foursquare, followed by email and Twitter. I just really wanted a better foursquare experience on the Windows Phone, and figured this would be the best way to gain excellent app development experience.</p>
<p>(The name? It&#8217;s a little odd yet creative, is clearly not an official client, and it&#8217;s all about working to become the mayor while having fun, right? The intersection of foursquare (4th) and the fun of the game – working to establish a mayorship (Mayor).</p>
<h3>An emphasis on design and rich visuals</h3>
<p>The design system for Windows Phone, code-named “Metro”, really is cool. Others have written about the experience before, but it really is a very developer-friendly design system that is crisp, clean, and once you understand the core principles and rules, it’s easy to build jaw-dropping apps. I’m just a geek, but feel I’ve come away with a pretty good first release when it comes to visual consistency and trying to adhere to the basics of “Metro”.</p>
<p>This comes through in a few ways. If you look to the screenshots below, on the left, you see the nice visuals in the “places” listing: no rounded corners, crisp and clean, etc. On the right, the “photos” pivot item for a page shows a few large, rich photos from the venue – and clicking them brings up the full-screen photo experience.</p>
<p>Both are very easy scenarios to polish thanks to XAML, but it takes an understanding of how to translate “Metro” ideas into XAML. A lot of off-by-12-pixel polishing goes into shipping a solid Windows Phone app.</p>
<p><a href="http://www.4thandmayor.com/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px" border="0" src="http://d2tz2ccf2zi8lx.cloudfront.net/media/p2.png" /></a></p>
<h3>A fun experience </h3>
<p>There’s great incentive in the new foursquare 3 features to check-in and have fun doing it: a completely revamped points system. Get points for being a VIP (checking in with the mayor), being the first of your friends to check out a new place, and so on. This, combined with the new leaderboards and an ever-growing catalog of badges is just modern-day fun.</p>
<h3>The rush to the marketplace</h3>
<p>When I heard about the problems that people were having with the foursquare app for Windows Phone, I decided to try and move into “ship mode” immediately instead of completing all of the features I had planned. I forked my source and started polishing and fixing bugs last weekend. As a result, I apologize if there’s something missing or a few bugs in the first release.</p>
<p>My app does 2 things that people have been having issues with the foursquare WP7 app:</p>
<ul>
<li>Sign in works</li>
<li>You’re able to check into a place that has special characters or accents in the name (international friends, enjoy!)</li>
</ul>
<h3>An update with specials is coming soon</h3>
<p>Now that the app is out there, an update coming soon will add specials support, and I’ll also work to address any large buckets of customer-reported bugs. Thanks to getting the build out earlier in the week for people with developer unlocked phones, I’ve been able to start identifying a few small bugs and issues that I hope to correct soon (thanks everyone).</p>
<h2>From a blank Visual Studio project to shipping… &lt; 120 days</h2>
<p>I created a new Visual Studio project a few weeks after purchasing my first Windows Phone (a Samsung Focus, I’m pretty happy with it), and registered for the domain name 4thandmayor.com in early December 2010. Hoping to learn about the process of building a large, feature-complete Windows Phone app from the ground up, I had no idea how much time it would take, but it’s been a fun use of many a night and weekend over the past few months.</p>
<p>Most development happened in spurts as I found a free Sunday afternoon or a clear night or two. I’m really glad that I was able to the have the opportunity to build a feature-complete WP7 app and that Microsoft is open to this kind of project as appropriate.</p>
<p>A brief, approximate timeline of my development process:</p>
<ul>
<li>Early Dec. 2010: App concept, goals, and new Visual Studio project created. Targeting v1 of the foursquare API.</li>
<li>Mid-December: Domain name registration, setup a source control system at home, etc. Oh no! Foursquare v2 API launched, v1 to be deprecated.</li>
<li>Christmas vacation Dec. 2010: Lots of coding and completing the application, foursquare launched photos &amp; comments support for iPhone and Android. I was able to add these features in a few days over the break.</li>
<li>Late January: spent a few weekends polishing, fixing bugs, and focusing on the “Metro” design</li>
<li>February: moved to a much more rich data loading system</li>
<li>3/8/2011: foursquare announced fsq3, with even more new features, at SXSW. Around this time, there were login issues with the official foursquare app for WP7, and I decided it was time to launch the app.</li>
<li>3/16/2011: submitted to the Windows Phone Marketplace</li>
</ul>
<p>Not knowing that fsq3 was coming out at SXSW, it’s a testament to the Windows Phone app platform that it only took a few hours to add these new views, models, and features into my app (exploring, enhanced leaderboards, etc.), allowing me to deliver a little more than a week and a half later a feature-complete implementation.</p>
<p>I will be covering a lot of the experiences and sharing a decent amount of code and samples over the next many blog posts, covering:</p>
<ul>
<li>Application architecture</li>
<li>Data loading strategies</li>
<li>Designing for Windows Phone… for developers.</li>
<li>Building out controls and components for a strong and polished “Metro” experience</li>
<li>Establishing a web experience for your WP7 app</li>
<li>Compromising between raw performance and beautiful design</li>
<li>Analytics and apps</li>
<li>Keeping the user interface responsive</li>
<li>OAuth2 and the Windows Phone</li>
<li>Pivot loading techniques and user interface virtualization tips</li>
<li>Debugging, collecting feedback and beta testing</li>
<li>Gold plating: making a fun out-of-box, first-time-run experience</li>
<li>Polishing a Windows Phone app</li>
<li>Marketplace ingestion and the last mile</li>
</ul>
<p>Please let me know if there are any things I’ve missed, or you’d like to know about, and I will add them to the list! I’ve learned a wealth of information along the way but I think this will be a long-term blogging project, there’s just so many different things here.</p>
<h3>Technical building blocks</h3>
<p>The app was a pretty big technical undertaking, the goal of building a feature-complete app for such a large service is a big challenge. Along the way I had to build out a number of components, and of course make use of many great things others have shared as well.</p>
<ul>
<li><a href="http://silverlight.codeplex.com/">Silverlight for Windows Phone Toolkit</a>: powering page transitions, the tilt effect, and toggle switches.</li>
<li><a href="http://code.msdn.microsoft.com/AgFx-Windows-Phone-and-6fd11606">AgFx: a Windows Phone and Silverlight application framework</a> by Shawn Burke (more info <a href="http://blogs.msdn.com/b/sburke/archive/2011/03/11/build-great-windows-phone-applications-the-easy-way.aspx">here</a> and <a href="http://blogs.msdn.com/b/sburke/archive/2011/03/17/tutorial-building-a-connected-phone-app-with-agfx.aspx">here</a> too)</li>
<li>Various image control and loading concepts by <a href="http://blogs.msdn.com/b/delay">David Anson</a></li>
<li><a href="http://json.codeplex.com/">JSON.NET by James Newton-King</a></li>
<li>Andy Pennell’s <a href="http://blogs.msdn.com/b/andypennell/archive/2010/11/01/error-reporting-on-windows-phone-7.aspx">LittleWatson</a></li>
<li><a href="http://www.davidpoll.com/tag/silverlight-and-beyond-slab/">SLaB by David Poll</a> (used for tombstoning stuff)</li>
<li>Advice and code by Peter Torr &amp; also Gilles Khouzam</li>
<li>
<div align="left"><a href="http://www.microsoft.com/maps/product/licensing_for_mobile.aspx">Bing Maps Mobile Platform</a></div>
</li>
<li>And last but most important, the <a href="http://developer.foursquare.com/">foursquare developer API</a></li>
</ul>
<p>And I also built out a ton of specialized components, talk about fun:</p>
<ul>
<li>Watermarked text box</li>
<li>Visual components resembling the OS’s text messaging experience</li>
<li>An awesome scroll viewer that can do delayed image loading in an efficient and smart manner</li>
<li>Smart image controls for fading, replacing “Metro”-style blocks of color, and efficiently downloading bits.</li>
<li>A grouping items control with an emphasis on smooth scrolling</li>
<li>A text visualizer for showing licensing information in the About screen</li>
<li>A Static Bing Map control for high-performant, beautiful maps</li>
<li>A WebXamlBlock for displaying updatable information</li>
<li>Orientation-aware layout containers</li>
<li>An analytics component</li>
<li>“Live tiles” for use inside an app</li>
<li>A fun <a href="http://en.wikipedia.org/wiki/Ken_burns">Ken Burns</a>-style effect</li>
<li>Enhanced message box and dialog overlays</li>
<li>A very lightweight app settings provider</li>
<li>Tombstoning stream and text functionality</li>
</ul>
<h3>Initial reception</h3>
<blockquote><p>“My Saturday night was great, thx to 4th &amp; Mayor” – toowicked</p>
<p>“Been using 4th &amp; Mayor foursquare app, gotta say it’s the best one I’ve used on any OS. Get it when it’s available in WP7 marketplace!” &#8211; Jonnie</p>
<p>“4th &amp; Mayor you are beautiful and fill my heart with hope for #WP7 future.” &#8211; Sergey</p>
<p>“Wow, 4th &amp; Mayor is incredible. Infinitely better than the official foursquare app for Windows Phone.” &#8211; Brian</p>
<p>“Inspired by the @4thandmayor application. I guess I will be doing some #wp7 coding this weekend.” &#8211; Laci</p>
<p>“Wish we could get you to make a Twitter app that looks as good as 4th &amp; Mayor <img src='http://www.jeff.wilcox.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ” &#8211; Josh</p>
</blockquote>
<h3>Special thanks</h3>
<p>This project could not have happened without the help and support of many good friends and engineers.</p>
<p>A big shout out to Naveen and all the folks at foursquare: thanks for building a beautiful product, great service, and having a solid, open API for developers to take advantage of!</p>
<p>As called out in the “About” page of my app, thanks:</p>
<ul>
<li>Shawn Burke</li>
<li>David Anson</li>
<li>Gilles Khouzam</li>
<li>David Poll</li>
<li>Peter Torr</li>
<li>Andy Pennell</li>
</ul>
<p>Also, thanks to my excellent beta testers who have been checking in all over the world. Notably, Shawn, Eric, Gilles, Nimesh, Shoko, Sam, Johan, David, and Nic. You all rock!</p>
<p>There is a <a href="http://www.4thandmayor.com/support/knownIssues/index.html">list of known issues</a> up on the site. The app is designed to offer a rich, compelling and fun experience for people with up to 50 foursquare active friends, with slight performance degradation for people with more friends.</p>
<p>So, check out the site and download the app if you’re into foursquare.</p>
<p><a href="http://www.4thandmayor.com/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; border-top: 0px; border-right: 0px; padding-top: 0px" border="0" src="http://d2tz2ccf2zi8lx.cloudfront.net/media/wp7_install.png" /></a></p>
<p>Hope you enjoy the app!</p>
<p> <small>Foursquare™ is a trademark of Foursquare Labs, Inc.   <br />This application uses the foursquare™ application programming interface but is not endorsed or certified by Foursquare Labs, Inc.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/03/announcing-4thandmayor/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Using AutoCompleteBox in a Windows Phone Panorama or Pivot item</title>
		<link>http://www.jeff.wilcox.name/2011/03/acb-in-pivot/</link>
		<comments>http://www.jeff.wilcox.name/2011/03/acb-in-pivot/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 22:28:20 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=779</guid>
		<description><![CDATA[With some quick re-templating action, you can use AutoCompleteBox from the toolkit in a Panorama or Pivot control page for Windows Phone. This is one of the key customer asks from folks developing WP7 apps that I hear often. The good news is that this can be accomplished with simple re-templating of the AutoCompleteBox control, [...]]]></description>
			<content:encoded><![CDATA[<p>With some quick re-templating action, you can use AutoCompleteBox from the toolkit in a Panorama or Pivot control page for Windows Phone. This is one of the key customer asks from folks developing WP7 apps that I hear often.</p>
<p>The good news is that this can be accomplished with simple re-templating of the AutoCompleteBox control, and a little visual trickery.</p>
<p>The bad news is that I’m not sure that we will be able to address the CodePlex work item to officially support this, <a href="http://silverlight.codeplex.com/workitem/7574">work item 7574</a> with 21 votes so far (a popular issue!), because of the technical limitations at play here: the control itself uses a child Popup in the template to display the results, showing them on top of your page and content. When used in a Panorama or Pivot, there are issues here where the Popup doesn’t properly align on the page, or work at all.</p>
<p>There are three steps to doing this:</p>
<ol>
<li>Making sure that you have a Visibility converter available in your app (most already have this) </li>
<li>Designing the visuals with grids to include a placeholder and a spanning content area on top of your pivot/panorama items’ content </li>
<li>Retemplating your AutoCompleteBox when used </li>
</ol>
<p>For this example, I’m starting with the standard Windows Phone Pivot Application template so that you can follow along. This is best described as <strong>“hack quality</strong>” so proceed at your own risk. I want to unblock people that believe this is not possible, so here it is.</p>
<p>Also, with this workaround, the Visual Studio design surface is unable to continue working due to an issue resolving RelativeSource at runtime. You’ll want to comment out some of it while working on your design.</p>
<h2>Visual trickery, illustrated</h2>
<p>The trick to this re-template is to <strong>remove the popup</strong> from the template. Instead, we need to “fake” the popup experience by overlaying the results of the AutoCompleteBox (when searching) on top of the visuals in the PivotItem or PanoramaItem.</p>
<p>As always, I believe re-templating is a core Silverlight development technique. Though often a last resort before modifying the code of controls or building your own, it is a super important concept to master.</p>
<p>To do this, start with a standard Pivot control or Panorama item template and make these changes to the item that will contain your search box.</p>
<ul>
<li>The root element of the item must be a Grid, not a StackPanel </li>
<li>It must define at a minimum 2 rows: the first row has a hard-coded height of 72 that will represent the search/text box of the AutoCompleteBox, effectively a “placeholder” </li>
<li>The last visual needs to be another Grid, with Grid.Row set to 0, and the RowSpan to span the entire number of rows defined in the child of the pivot/panorama item. This is to fake the effect of a “popup” by allowing visuals to be on top. </li>
</ul>
<p>I understand this concept can be a little confusing, which is yet another reason we can’t really just change the template for all AutoCompleteBox examples. I might add this template to the sample project in the future, however!</p>
<p>The reason the last item needs to be the “overlay” grid is that XAML at the bottom of an item has a higher z-order than the rest, acting similar to a popup.</p>
<p>So visually, we define first a basic grid in the item.</p>
<p>The XAML might look like this now – you can follow along in the default pivot app project to see what’s different.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:58525722-4051-44a1-9c00-cd2aee05d868" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;controls:PivotItem Header="first"&gt;
    &lt;Grid&gt;
        &lt;Grid.RowDefinitions&gt;
            &lt;RowDefinition Height="72"/&gt;
            &lt;RowDefinition/&gt;
        &lt;/Grid.RowDefinitions&gt;

        &lt;!-- Row 0 is a 'placeholder' for the AutoCompleteBox control --&gt;

        &lt;ListBox
            Grid.Row="1"
            x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}"&gt;
            &lt;ListBox.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;StackPanel Margin="0,0,0,17" Width="432"&gt;
                        &lt;TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/&gt;
                        &lt;TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/&gt;
                    &lt;/StackPanel&gt;
                &lt;/DataTemplate&gt;
            &lt;/ListBox.ItemTemplate&gt;
        &lt;/ListBox&gt;
    &lt;/Grid&gt;
&lt;/controls:PivotItem&gt;</pre>
</div>
<p>This defines a placeholder (Row 0) and the content of the item (Row 1). Row 0 is where the text box visually should be overlaid. Visually, this is sort of what this is about enabling from a spacing perspective:</p>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid1.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid1" border="0" alt="Grid1" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid1_thumb.png" width="480" height="800" /></a></p>
<p>Now, we add the “overlay” grid. For this purpose, I temporarily colored it Red to show that it overlays the earlier items:</p>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid2.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid2" border="0" alt="Grid2" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid2_thumb.png" width="480" height="800" /></a></p>
<p>In the actual world, this is where you want to put in the overlay grid and eventually the AutoCompleteBox.</p>
<p>So the updated code is similar to this:</p>
<p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:894465c2-cc62-48e7-ad61-26b12e6bbdfc" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;controls:PivotItem Header="first"&gt;
    &lt;Grid&gt;
        &lt;Grid.RowDefinitions&gt;
            &lt;RowDefinition Height="72"/&gt;
            &lt;RowDefinition/&gt;
        &lt;/Grid.RowDefinitions&gt;

        &lt;!-- Row 0 is a 'placeholder' for the AutoCompleteBox control --&gt;

        &lt;ListBox
            Grid.Row="1"
            x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}"&gt;
            &lt;ListBox.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;StackPanel Margin="0,0,0,17" Width="432"&gt;
                        &lt;TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/&gt;
                        &lt;TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/&gt;
                    &lt;/StackPanel&gt;
                &lt;/DataTemplate&gt;
            &lt;/ListBox.ItemTemplate&gt;
        &lt;/ListBox&gt;

        &lt;!-- The AutoCompleteBox experience --&gt;
        &lt;!-- Must be the last XAML in the Grid to ensure a top z-order --&gt;
        &lt;!-- It must span the entire grid, starting with row 0. --&gt;
      &lt;Grid Grid.Row="0" Grid.RowSpan="2"&gt;
      &lt;/Grid&gt;
    &lt;/Grid&gt;
&lt;/controls:PivotItem&gt;
</pre>
</div>
<p>Ok. We’re closer now that the basics are there. If you run the project, you’ll still see simply your content, with space at the top where the AutoCompleteBox (text box part) will go.</p>
<h2>A required visibility converter</h2>
<p>Since we replaced the pivot, we need to instead toggle the visibility of the list box for showing results only when the IsDropDownOpen dependency property is set to true. This is easy enough using a relative source binding (similar to a template binding) plus adding a Visibility converter to the project, and using it in the template.</p>
<p>Here’s a super simple visibility converter to get started. Add it as a class file to your project.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:8c207532-f1f6-4f04-b90d-5021a9d40bc9" class="wlWriterEditableSmartContent">
<pre class="c-sharp" name="code">using System;
using System.Windows;
using System.Windows.Data;

namespace Microsoft.Phone.Controls
{
    public class VisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool visible = true;

            if (value is bool)
            {
                visible = (bool)value;
            }
            else if (value is int || value is short || value is long)
            {
                visible = 0 != (int)value;
            }
            else if (value is float || value is double)
            {
                visible = 0.0 != (double)value;
            }
            else if (value == null)
            {
                visible = false;
            }

            if ((string)parameter == "!")
            {
                visible = !visible;
            }

            return visible ? Visibility.Visible : Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
</pre>
</div>
<p>And then to the page, add it as a resource, plus the XMLNS for “localControls” pointing to the Microsoft.Phone.Controls namespace. I use the key name <strong>Vis.</strong></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:4976b4b9-80e4-4d98-ad67-726365b785cb" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">        &lt;!-- Make the visibility converter available --&gt;
        &lt;Grid.Resources&gt;
            &lt;localControls:VisibilityConverter x:Key="Vis"/&gt;
        &lt;/Grid.Resources&gt;
</pre>
</div>
<p>Now we’ll use it in the template.</p>
<h2>The new template</h2>
<p>Now we want to re-template the AutoCompleteBox. You could define the template once in App.xaml, but for simplicity I just did this inline. The most important parts are:</p>
<ul>
<li>Removing the Popup template part </li>
<li>Adding a Visibility relative source binding to show/hide the results at the appropriate time </li>
<li>The listbox and textbox in the template are moved into a grid-row structure visually </li>
</ul>
<p>This takes advantage of the idea that template parts in controls are usually “optional”, so without the Popup in there, it still functions just fine in the app.</p>
<p>So this now adds to the overlay grid…</p>
<ul>
<li>AutoCompleteBox instance</li>
<li>Sets the item template, filter parameters, etc., as an example</li>
<li>Sets the ControlTemplate</li>
</ul>
<p>Here is the ControlTemplate if you are just copying and pasting into your own app:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:5ecc4edf-d94a-450f-93ac-aa4b30491f9a" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;ControlTemplate TargetType="toolkit:AutoCompleteBox"&gt;
    &lt;Grid&gt;
        &lt;Grid.RowDefinitions&gt;
            &lt;RowDefinition Height="Auto"/&gt;
            &lt;RowDefinition/&gt;
        &lt;/Grid.RowDefinitions&gt;
        &lt;TextBox
            x:Name="Text"
            Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            FontFamily="{TemplateBinding FontFamily}"
            FontSize="{TemplateBinding FontSize}"
            FontStyle="{TemplateBinding FontStyle}"
            FontWeight="{TemplateBinding FontWeight}"
            Foreground="{TemplateBinding Foreground}"
            InputScope="{TemplateBinding InputScope}"
            Opacity="{TemplateBinding Opacity}"
            Padding="{TemplateBinding Padding}"
            Style="{TemplateBinding TextBoxStyle}"/&gt;
        &lt;ListBox
            Margin="12"
            Visibility="{Binding Path=IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource Vis}}"
            Grid.Row="1"
            x:Name="Selector"
            Background="White"
            FontFamily="{TemplateBinding FontFamily}"
            FontSize="{TemplateBinding FontSize}"
            FontStyle="{TemplateBinding FontStyle}"
            FontWeight="{TemplateBinding FontWeight}"
            Foreground="{TemplateBinding Foreground}"
            IsTabStop="False"
            ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
            ItemTemplate="{TemplateBinding ItemTemplate}"
            Opacity="{TemplateBinding Opacity}"
            BorderBrush="{StaticResource PhoneTextBoxEditBorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}"
            Padding="0,8"/&gt;
    &lt;/Grid&gt;
&lt;/ControlTemplate&gt;</pre>
</div>
<p>The Visibility binding on the ListBox is important, as it is what keeps the ListBox from being displayed over your existing page content at runtime. It uses the resource we defined for the visibility converter, <strong>Vis</strong>. Relative source binding is used to make it very similar to a template binding with a converter.</p>
<p>And so the final XAML for the PivotItem looks like this expanded:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:49cd3d2c-1b4e-44e6-aef9-b5f49d8099bc" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;controls:PivotItem Header="first"&gt;
    &lt;Grid&gt;
        &lt;Grid.RowDefinitions&gt;
            &lt;RowDefinition Height="72"/&gt;
            &lt;RowDefinition/&gt;
        &lt;/Grid.RowDefinitions&gt;

        &lt;!-- Row 0 is a 'placeholder' for the AutoCompleteBox control --&gt;

        &lt;ListBox
            Grid.Row="1"
            x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}"&gt;
            &lt;ListBox.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;StackPanel Margin="0,0,0,17" Width="432"&gt;
                        &lt;TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/&gt;
                        &lt;TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/&gt;
                    &lt;/StackPanel&gt;
                &lt;/DataTemplate&gt;
            &lt;/ListBox.ItemTemplate&gt;
        &lt;/ListBox&gt;

        &lt;!-- The AutoCompleteBox experience --&gt;
        &lt;!-- Must be the last XAML in the Grid to ensure a top z-order --&gt;
        &lt;!-- It must span the entire grid, starting with row 0. --&gt;
        &lt;!-- Warning: the design surface does not like this template unfortunately --&gt;
        &lt;!-- AutoCompleteBox must be vertically aligned with the placeholder --&gt;
        &lt;Grid Grid.Row="0" Grid.RowSpan="2"&gt;
            &lt;toolkit:AutoCompleteBox
                ValueMemberBinding="{Binding LineOne}"
                FilterMode="ContainsCaseSensitive"
                x:Name="_autoCompleteBox"
                ItemsSource="{Binding Items}"
                VerticalAlignment="Top"&gt;
                &lt;toolkit:AutoCompleteBox.ItemTemplate&gt;
                    &lt;DataTemplate&gt;
                        &lt;TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/&gt;
                    &lt;/DataTemplate&gt;
                &lt;/toolkit:AutoCompleteBox.ItemTemplate&gt;
                &lt;toolkit:AutoCompleteBox.Template&gt;
                    &lt;ControlTemplate TargetType="toolkit:AutoCompleteBox"&gt;
                        &lt;Grid&gt;
                            &lt;Grid.RowDefinitions&gt;
                                &lt;RowDefinition Height="Auto"/&gt;
                                &lt;RowDefinition/&gt;
                            &lt;/Grid.RowDefinitions&gt;
                            &lt;TextBox
                                x:Name="Text"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                FontFamily="{TemplateBinding FontFamily}"
                                FontSize="{TemplateBinding FontSize}"
                                FontStyle="{TemplateBinding FontStyle}"
                                FontWeight="{TemplateBinding FontWeight}"
                                Foreground="{TemplateBinding Foreground}"
                                InputScope="{TemplateBinding InputScope}"
                                Opacity="{TemplateBinding Opacity}"
                                Padding="{TemplateBinding Padding}"
                                Style="{TemplateBinding TextBoxStyle}"/&gt;
                            &lt;ListBox
                                Margin="12"
                                Visibility="{Binding Path=IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource Vis}}"
                                Grid.Row="1"
                                x:Name="Selector"
                                Background="White"
                                FontFamily="{TemplateBinding FontFamily}"
                                FontSize="{TemplateBinding FontSize}"
                                FontStyle="{TemplateBinding FontStyle}"
                                FontWeight="{TemplateBinding FontWeight}"
                                Foreground="{TemplateBinding Foreground}"
                                IsTabStop="False"
                                ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
                                ItemTemplate="{TemplateBinding ItemTemplate}"
                                Opacity="{TemplateBinding Opacity}"
                                BorderBrush="{StaticResource PhoneTextBoxEditBorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                Padding="0,8"/&gt;
                        &lt;/Grid&gt;
                    &lt;/ControlTemplate&gt;
                &lt;/toolkit:AutoCompleteBox.Template&gt;
            &lt;/toolkit:AutoCompleteBox&gt;
        &lt;/Grid&gt;
    &lt;/Grid&gt;
&lt;/controls:PivotItem&gt;</pre>
</div>
<p>So, taking a few of the coloring concepts from earlier, you see we end up with this idea at runtime when entering text (coloring added to show separation, it won’t look like that in your app)</p>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid3.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Grid3" border="0" alt="Grid3" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/Grid3_thumb.png" width="480" height="800" /></a></p>
<h2>Download the completed project</h2>
<p>I’ve zipped up the sample including the template. Make sure you have the <a href="http://silverlight.codeplex.com/">Silverlight for Windows Phone Toolkit</a> installed as well, you might have to re-add that reference to the sample.</p>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/03/AutoCompletePivot.zip">[<strong>ZIP</strong>] 31 KB &#8211; <strong>AutoCompletePivot.zip</strong></a></p>
<h2>Other notes</h2>
<h3>Selecting an item may require a few touches by default</h3>
<p>When you select an item in the AutoCompleteBox, it will fire SelectionChanged, etc., but you may find that the list shrinks (requiring another press), or that the software keyboard is still up. These need to be worked around today at the app level to match the experience you want to offer your users.</p>
<ul>
<li>Consider hooking up to the selection event in the control, then calling Focus() on a visual element elsewhere to remove the software keyboard </li>
<li>Consider a code fix where if a single item is selected currently, to assume that was the final selection by the user and dismiss the selection system – requires a code workaround since not all app authors may want this. </li>
</ul>
<h3>Enables Landscape page use as well</h3>
<p>This also enables using AutoCompleteBox on landscape pages, <em>although</em> it’s very difficult to control the software keyboard (SIP), so you may find that you can hardly see a single item while in landscape mode with the software keyboard up.</p>
<p>You may notice that the native Windows Phone experience rarely offers auto completion in landscape, and as always, Panorama pages should not be Landscape.</p>
<p><strong>IE NOTE</strong></p>
<p>The Internet Explorer browser has an auto complete box in Portrait mode only. In Landscape, it is hidden – and although I don’t have the official word, I believe it is because the software keyboard takes up most of the screen, leaving no space to select items.</p>
<p>So I think the UX guidance is to NOT show auto completes in landscape, but you’re welcome to try. You could add special app logic similar to this to try and fix the problem, but it isn’t pretty:</p>
<ul>
<li>Attach to the GotFocus and LostFocus events of the text box in the template (requires some visual tree logic code) </li>
<li>In your GotFocus handler, if the page is in one of the Landscape modes… you’ll want to open up additional visual space above your page content. </li>
<li>Temporarily collapse the page title and perhaps its header (very involved if it is a pivot control!) </li>
<li>When the focus is lost, you want to restore that content. The platform should handle “scrolling” around the viewport in this mode to maximize screen real estate. </li>
</ul>
<h3>Items source size warning</h3>
<p>One thing to callout is that the implementation of AutoCompleteBox was originally designed for use on powerful desktops, so the key code path for filtering is designed to be run on the user interface thread. On the Windows Phone, with a single core and mobile ARM hardware, this can be a bottleneck for apps.</p>
<p>Please consider keeping the number of items under 100 if possible, and if you need more, you may need to consider ways to use the “Populating” method to spin up your own filtering work on a background thread (not covered in this post).</p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/03/acb-in-pivot/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Introducing the February 2011 Silverlight for Windows Phone Toolkit</title>
		<link>http://www.jeff.wilcox.name/2011/02/feb2011-sl4wptk/</link>
		<comments>http://www.jeff.wilcox.name/2011/02/feb2011-sl4wptk/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 02:48:58 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/?p=761</guid>
		<description><![CDATA[Announcing the Feb 2011 release of the Silverlight for Windows Phone Toolkit, adding tilt and performance progress bars, and addressing customer-reported issues.]]></description>
			<content:encoded><![CDATA[<p>Today we pushed the button on the <a href="http://silverlight.codeplex.com/releases/view/60291">February 2011 release</a> of the <a href="http://silverlight.codeplex.com/">Silverlight for Windows Phone Toolkit</a>. We’ve added a few new controls that previously app developers had to pick up separately while working on polishing their apps, including the tilt effect and performance progress bar. VB samples, too!</p>
<p><a href="http://silverlight.codeplex.com/releases/view/60291"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Feb 2011 Toolkit Release" border="0" alt="Februrary 2011 Toolkit Release" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/FeburaryToolkitRelease.png" width="685" height="78" /></a></p>
<p>Please download the new <a href="http://silverlight.codeplex.com/releases/view/60291">Silverlight for Windows Phone Toolkit release here</a>. This is a great download to pair with your updated <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49B9D0C5-6597-4313-912A-F0CCA9C7D277">January 2011 Windows Phone Developer Tools</a> installation.</p>
<h2>What’s new?</h2>
<h3>Tilt effect</h3>
<p>We have integrated the TiltEffect attached property, allowing developers to really easily turn on the “tilt effect” in this apps, automatically giving buttons, hyperlinks and check boxes the desired tilt effect that is found in many parts of the Windows Phone experience.</p>
<p>MSDN documents are available for this feature:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ff941094(VS.92).aspx">Tilt Effect Overview for Windows Phone</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/ff941108(v=VS.92).aspx">How to: Use the Control Tilt Effect for Windows Phone</a> </li>
</ul>
<p>This is the same control that was once presented on <a href="http://blogs.msdn.com/b/ptorr/archive/2010/08/11/updated-tilt-effect.aspx">Peter Torr’s blog</a> and became <a href="http://msdn.microsoft.com/en-us/library/ff941094(VS.92).aspx">a sample</a>, now much easier to use.</p>
<h3>PerformanceProgressBar</h3>
<p>There have been several PerformanceProgressBar iterations, and finally there is one available built-in to the Silverlight for Windows Phone Toolkit.</p>
<p>This version is very easy to use, you can just drop it on a page, without needing to specify styles like earlier workarounds. Also, it smoothly animates out in an improved way, improving the visual attractiveness of apps.</p>
<p>Simply bind to or set the IsIndeterminate property to get the visual effect. There is no need to visually collapse this implementation.</p>
<p>For some history and other information,</p>
<ul>
<li><a href="http://www.jeff.wilcox.name/2010/08/performanceprogressbar/">The original PerformanceProgressBar post</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/gg442303(v=VS.92).aspx">MSDN documentation about the initial work-around I proposed</a> </li>
</ul>
<h3>Bug fixes and feature improvements</h3>
<p>We’ve addressed customer-requested issues and improvements, most in the LongListSelector and transitions space.</p>
<h2>VB.NET Samples</h2>
<p>Now that Visual Basic support is available for Windows Phone, we are pleased to now offer the same sample project we ship with the toolkit, now in VB.NET.</p>
<p>To use VB.NET with Windows Phone apps, you also need this <a href="http://create.msdn.com/en-US/vbrtm">easy download</a>.</p>
<h2>A 1 minute click-through of new features in the sample app</h2>
<p>Here’s a quick video of the emulator running the samples project included with the source download.</p>
<p><object width="680" height="540"><param name="movie" value="http://www.youtube-nocookie.com/v/iTl_MpbDeCQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/iTl_MpbDeCQ?fs=1&amp;hl=en_US&amp;rel=0&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="680" height="540"></embed></object></p>
<p>In the video, you see:</p>
<ul>
<li>The tilt effect in use on the main page </li>
<li>The LongListSelector, which has received a number of improvements and bug fixes </li>
<li>The performance progress bar, including a quick demonstration where the blue progress bar (the PerformanceProgressBar in the toolkit) competes against the red standard ProgressBar with the user interface thread blocked. Also, the blue performance progress bar automatically fades out, yielding a smooth UX polish for your apps. </li>
<li>The tilt effect page, where you see a button, checkbox, and hyperlinkbutton being touched, responding with the tilt effect underneath. </li>
</ul>
<h2>Earlier phone toolkit features</h2>
<p>As always, there are other useful features for app developers built into the toolkit, including:</p>
<ul>
<li>AutoCompleteBox </li>
<li>ContextMenu </li>
<li>DatePicker &amp; TimePicker </li>
<li>Gestures </li>
<li>ListPicker </li>
<li>LongListSelector </li>
<li>ToggleSwitch </li>
<li>Transitions </li>
<li>WrapPanel </li>
</ul>
<h2>Addressing touch responsiveness and list scrolling</h2>
<p>One thing that we’re still trying to find the best solution to is list scrolling. The LongListSelector (LLS) control was designed to help address some of these issues, but we know that we aren’t there yet.</p>
<p>I’ve had conversations with a number of developers both at Microsoft, within the product teams, and with the community out there, to try and compile a list of issues, asks and possible solutions.</p>
<p>We know, for instance, that there are issues with the use of the TouchPanel component that the gesture service is built on, and we want to find a good solution for that.</p>
<p>At this time, LongListScroller is the best recommendation for most apps that need to do grouping, where the standard virtualizing ListBox is not enough.</p>
<h2>A more active CodePlex site</h2>
<p>Another administrative note, we’re trying to keep the CodePlex site at <a href="http://silverlight.codeplex.com/">http://silverlight.codeplex.com/</a> a little more up-to-date than in the past. You’ll notice that work items should be responded too, and we’re going to keep porting bugs between our Microsoft systems and the external site.</p>
<p>One experiment that we’re doing with the phone toolkit is that we are offering many bug fixes <strong>as they happen</strong> as opposed to at release time; in fact, since the November 2010 Silverlight for Windows Phone Toolkit release, we’ve checked in multiple updates to the source to address customer feedback, marketplace ingestion issues, and transition bugs.</p>
<p>You can view the latest source code and related check-ins at <a title="http://silverlight.codeplex.com/SourceControl/list/changesets" href="http://silverlight.codeplex.com/SourceControl/list/changesets">http://silverlight.codeplex.com/SourceControl/list/changesets</a>&#160;</p>
<p>Let us know what you think of this more transparent way of working. Hope this helps. (<a href="http://silverlight.codeplex.com/releases/view/60291">Download link</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/02/feb2011-sl4wptk/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Notes on Silverlight and Phone Toolkits, Testing and Other Phone Stuff</title>
		<link>http://www.jeff.wilcox.name/2011/02/notes-for-2011/</link>
		<comments>http://www.jeff.wilcox.name/2011/02/notes-for-2011/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 21:59:25 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2011/02/notes-for-2011/</guid>
		<description><![CDATA[Just a few notes: new phone tools, an upcoming phone toolkit, source is out already, and other things...]]></description>
			<content:encoded><![CDATA[<p>Hello readers, and happy 2011. It’s been a very busy January, and just now I am preparing a number of exciting new posts to get things going again. Until then, here are some small notes and previews on the Windows Phone tools, the Silverlight for Windows Phone Toolkit, the Silverlight Toolkit, and the Silverlight Unit Test Framework.</p>
<h2>Windows Phone Developer Tools January 2011 update</h2>
<p><a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49B9D0C5-6597-4313-912A-F0CCA9C7D277"><img style="background-image: none; border-right-width: 0px; margin: 0px 6px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="January2011Tools" border="0" alt="January2011Tools" align="left" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/January2011Tools.png" width="128" height="128" /></a>The long-rumored Windows Phone 7 update is even closer, a <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49B9D0C5-6597-4313-912A-F0CCA9C7D277">new developer release download is now available</a>. Please do update to the tools now! You can continue to use the tools to build apps for the marketplace today. (<a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49B9D0C5-6597-4313-912A-F0CCA9C7D277">Release notes</a>)</p>
<p>New functionality: <strong>Copy and paste support for apps</strong>. It just works in your apps, too, so that’s nice – no special action required to enable it for controls. Text boxes, password boxes, and the browser control “just work”.</p>
<p>This is yet another set of patches on top of the original tools download, so it’s not a pretty update, but it is worth the multiple downloads.</p>
<h3 style="clear: all">Rebuilding your applications that use Panorama, Pivot, and Maps</h3>
<p>You might want to rebuild your application and resubmit it to the marketplace if you meet a few conditions:</p>
<ul>
<li>Were using the Bing Maps control <em>without the October 2010 patch</em>. There were a number of key bugs fixed in that release. It is now build into the 1/2011 tools.</li>
<li>Were using text boxes inside of a Panorama or Pivot control. Copy and paste doesn’t work so hot due to some manipulation bugs in the Pano+Pivot libraries.</li>
<li>Were wanting to use a Bing Map inside of a Panorama or Pivot.</li>
</ul>
<p>The reason that you have to rebuild is because these are “client libraries” that are built into your actual .Xap that goes to end users, so to get the goodness of these changes, you have to resubmit a new Xap with these updated client library bits in them.</p>
<h3>Looking at Copy and Paste in action</h3>
<p>So if you have an app that uses text box, you’re ready to go. Here’s what it looks like when you use the newest tools build, that contains the ROM image with copy &amp; paste built into the framework.</p>
<h4>Select some text in the text box</h4>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy1.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="copy1" border="0" alt="copy1" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy1_thumb.png" width="476" height="552" /></a></p>
<h4>Click the copy indicator button near the selection</h4>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy2.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="copy2" border="0" alt="copy2" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy2_thumb.png" width="457" height="352" /></a></p>
<h4>In the SIP (software keyboard), click the paste icon to insert it!</h4>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy3.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="copy3" border="0" alt="copy3" src="http://www.jeff.wilcox.name/wp-content/uploads/2011/02/copy3_thumb.png" width="449" height="203" /></a></p>
<p>There is no programmatic API to access the clipboard at this time.</p>
<h2>Silverlight for Windows Phone Toolkit February 2011 release is brewing</h2>
<p>We’ve been addressing customer-reported bugs and issues with the previous <a href="http://silverlight.codeplex.com/">Silverlight for Windows Phone Toolkit</a> release, and are getting close to having something ready. As we’ve always been a small, agile, dedicated team, we’re trying to fix up a few last-minute issues before pushing the button.</p>
<p>We will also be adding Visual Basic samples this time around.</p>
<p>Some of the fixes you can look forward to:</p>
<ul>
<li>Improved transitions experience including a timing fix and new easing functions to better match the phone UX. Oftentimes the transitions would not appear on the device when complex pages were being navigated to.</li>
<li>Large set of LongListSelector (LLS) control improvements and bug fixes.</li>
<li>An AutoCompleteBox crash fix.</li>
<li>Other minor customer bug fixes (as indicated in the work items tracker)</li>
<li>The November updates addressing marketplace ingestion issues</li>
</ul>
<h3>About bleeding-edge phone toolkit source</h3>
<p>Something we are trying with the phone toolkit now is offering important fixes and other changes directly in the source control, ahead of the next official binary release. This allows us to better serve folks by offering a preview of what’s coming.</p>
<p>Here’s where you go to list all the changesets we’ve submitted for the toolkit source: <a href="http://silverlight.codeplex.com/SourceControl/list/changesets">http://silverlight.codeplex.com/SourceControl/list/changesets</a>&#160;</p>
<p>If you build the source for the toolkit in your project, then you can easily get these new changes. And, you’re an honorary member of the Silverlight Toolkit testing team <img src='http://www.jeff.wilcox.name/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  since you can help us uncover issues and send feedback ahead of the larger release.</p>
<p>This kind of input is super important. We’ll try not to push bugs to the source control, but it can happen!</p>
<h2>Open source notes on the Silverlight Toolkit</h2>
<p>It’s very exciting being a part of the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a> and its sister release, the Silverlight for Windows Phone Toolkit. The large source tree is a great learning resource for Silverlight developers everywhere w.r.t. custom control development. But it is also true that we don’t accept external contributions to the toolkit at this time, it is a pull-only repository. You’re free to fork it into your projects and enjoy it as you like, but if you submit patches to the site, we unfortunately cannot use them. Recently we updated the homepage of the Silverlight Toolkit to note this, since we don’t want to waste anyone’s time creating patches that cannot be used (sorry!).</p>
<p>Here are a few notes specific to the toolkit for Microsofties, however…</p>
<h3>If you are a Microsoft dev</h3>
<p>If you are a full-time Microsoft employee and using the Silverlight (or phone) Toolkit, we’re happy for that, and are definitely interested in accepting any bug fixes or improvements to the existing controls. Just send me an e-mail to talk about this, since we do have a set of guidelines and process for this sort of thing.</p>
<p>We recently had a number of great unit test fixes come in this way, and appreciate the help, since we often can only focus on one release of technology at a time.</p>
<h3>If you are a Microsoft team</h3>
<p>Microsoft teams looking to use the Silverlight Toolkit can find more information at <a href="http://devdiv/sites/controls/">this internal link</a>.</p>
<h3>If you want to be a Microsoft developer</h3>
<p>We’re always hiring – find out more at the <a href="http://careers.microsoft.com/">http://careers.microsoft.com/</a>.</p>
<h2>Silverlight Unit Testing Updates coming soon</h2>
<p>There have been a flurry of bug fixes checked into our source control system for the unit test framework, powered by customer-reported issues and a few generous developers inside Microsoft who have contributed improvements that their teams have been using.</p>
<p>Some of the fixes and changes include:</p>
<ul>
<li>Phone unit test framework interface fixes</li>
<li>Automated test service fixes (restores command-line test execution)</li>
<li>Browser automation fixes</li>
<li>Targets file fixes</li>
<li>Additional metadata for test methods</li>
</ul>
<p>When I have new builds ready and blogged, I’ll also be updating the source on the public CodePlex site. No timeline for this yet, though; sorry.</p>
<h2>Yup, I’m building an app…</h2>
<p>If you follow my Twitter stream (<a href="http://www.twitter.com/jeffwilcox">@jeffwilcox</a>), you know that I often spend my evenings and weekends coding. I’ve been building a social app for Windows Phone and it has been a really fun (and challenging) process building an app from the ground-up.</p>
<p>Once the app is finished, I will be covering in detail the challenges and issues I encountered, and strategies for dealing with many of the issues large apps are hitting. I’m also trying to get the best guidance on improving scrolling performance in lists, and have spoken with a number of devs about this recently.</p>
<h2>Great 2010</h2>
<p>I also wanted to take this time to thank everyone that I’ve had the pleasure of interacting with in the past year. It’s been exciting, bringing our new platform to light, leveraging years of hard work we have done on the Silverlight team.</p>
<p>This was nice for me as I was able to meet other folks at Microsoft worldwide, developers in so many places, and sit with smart engineers from other companies for a change. Well worth the price paid sitting in the back of planes. I swear I could walk through SEA-TAC airport with my eyes closed now.</p>
<p>Thanks, happy new year, and enjoy the Super Bowl if you’re in the states and into American football.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2011/02/notes-for-2011/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>A quick look at the types of Windows Phone page transition animations</title>
		<link>http://www.jeff.wilcox.name/2010/11/toolkit-page-transitions/</link>
		<comments>http://www.jeff.wilcox.name/2010/11/toolkit-page-transitions/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 00:42:14 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/11/toolkit-page-transitions/</guid>
		<description><![CDATA[Today Will Faught from the Silverlight Toolkit team blogged about the transitions built into the latest release of the Silverlight for Windows Phone Toolkit. Good stuff (Will was the developer for this feature). In case you haven’t opened up the sample app that came with the phone kit, and just want to see at a [...]]]></description>
			<content:encoded><![CDATA[<p>Today Will Faught from the Silverlight Toolkit team <a href="http://blogs.msdn.com/b/wfaught/archive/2010/11/15/transitions.aspx">blogged about the transitions built into the latest release</a> of the <a href="http://silverlight.codeplex.com/">Silverlight for Windows Phone Toolkit</a>. Good stuff (Will was the developer for this feature).</p>
<p>In case you haven’t opened up the sample app that came with the phone kit, and just want to see at a basic level what these different transition animations are, I built this quick Silverlight app to show them to you. Click on the name of the animation type to see what it looks like as the out/forward transition.</p>
<div id="silverlightControlHost" style="border:0"><object data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="border:0" width="685" height="585"><param name="source" value="http://www.jeff.wilcox.name/wp-content/uploads/2010/11/PhoneTransitionsReference.zip" /><param name="minRuntimeVersion" value="4.0.50826.0" /><param name="autoUpgrade" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50826.0" style="text-decoration:none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none" /></a></object></div>
<p>And yes, in case you’re wondering about the beauty of Silverlight code consistency, this app is built by just starting a new Silverlight project and pulling in some of the open source phone toolkit files. Enjoy the transition animations on your pages!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/11/toolkit-page-transitions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Early Windows Phone media with the Silverlight Mobile team</title>
		<link>http://www.jeff.wilcox.name/2010/09/slm-media/</link>
		<comments>http://www.jeff.wilcox.name/2010/09/slm-media/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 20:44:47 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/09/slm-media/</guid>
		<description><![CDATA[Links to a few videos, podcasts and documents by Silverlight mobile team members.]]></description>
			<content:encoded><![CDATA[<p>Several of us from the Silverlight Mobile and Silverlight Toolkit team have been featured on podcasts, video segments and written great articles in the weeks leading up to the release of the Windows Phone developer tools.</p>
<p>I wanted to share some links to some of this media to specifically highlight members of the Silverlight team who have been helping to make this launch a success:</p>
<p>Silverlight for Windows Phone Toolkit: </p>
<ul>
<li><a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-05Windows-Phone-Silverlight-Toolkit">David Anson and Dave Relyea (Channel 9)</a></li>
</ul>
<p>Panorama and Pivot Controls Introduction: </p>
<ul>
<li><a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-06-Panorama-and-Pivot-are-in-the-house-Woohoo">Jeff Wilcox (Channel 9)</a></li>
</ul>
<p>Silverlight Performance: </p>
<ul>
<li><a href="http://channel9.msdn.com/shows/Inside+Windows+Phone/Inside-Windows-Phone-03-Optimizing-Windows-Phone-Silverlight-applications/">Shane Guillet (Channel 9 video)</a></li>
<li><a href="http://hanselminutes.com/default.aspx?showID=246">Jeff Wilcox (Hanselminutes podcast)</a></li>
<li><a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;FamilyID=3a8636bf-185f-449a-a0ce-83502b9ec0ec">Various (Performance Whitepaper and Samples Download)</a></li>
</ul>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/09/slm-media/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Windows Phone Developers: Enjoy the new controls, toolkit, and final tools!</title>
		<link>http://www.jeff.wilcox.name/2010/09/phone-tools-toolkit-and-more-released/</link>
		<comments>http://www.jeff.wilcox.name/2010/09/phone-tools-toolkit-and-more-released/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 17:16:14 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/09/phone-tools-toolkit-and-more-released/</guid>
		<description><![CDATA[Today the Windows Phone tools are out, the new Silverlight for Windows Phone Toolkit is live, and yes you can finally use the Panorama and Pivot controls!]]></description>
			<content:encoded><![CDATA[<p>Today the Windows Phone developer tools have been released (<a href="http://weblogs.asp.net/scottgu/archive/2010/09/16/windows-phone-7-developer-tools-released.aspx">Scott’s post here</a>, <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/09/16/windows-phone-developer-tools-are-final.aspx">Windows Phone post here</a>). Everything you need is easy to get started with (<a href="http://go.microsoft.com/fwlink/?LinkId=185584">download here</a>), from the free Visual Studio express to the free Expression Blend designer tools, emulator, and plenty of controls and tools to help you along the way.</p>
<p>There isn’t much I have to add as it’s a fun-filled day of tweeting, blogging, downloading, installin’ and building apps.</p>
<p>Make sure to see the official documentation of <a href="http://msdn.microsoft.com/en-us/library/ff637516(VS.92).aspx">What’s New in the Final Release</a>.</p>
<h2>Official Panorama and Pivot Controls</h2>
<p>Personally, the biggest news of the day is that the Microsoft official Panorama and Pivot controls are now in the tools (we missed getting them in the beta, that’s water under the bridge now though, right?). </p>
<p>Taking some credit here for the Silverlight implementations, <a href="http://www.jeff.wilcox.name/">Jeff Wilcox</a> developed the Pivot control, <a href="http://blogs.msdn.com/b/devdave/">Dave Relyea</a> created the Panorama control, and <a href="http://blogs.msdn.com/b/delay/">David Anson</a> was instrumental in working on both. (Now you know who you can complain to). I also want to point out that there have been many other teams at Microsoft, especially those who work with the mobile operators, who did a lot of the early heavy lifting in defining the model and working to explore this area, having done very similar work. I think together we’ve all learned a lot and built some impressive controls for this new platform – let us know!</p>
<p>The controls are built right into the tools that you can <a href="http://go.microsoft.com/fwlink/?LinkId=185584">download here</a>.</p>
<p><a href="http://www.jeff.wilcox.name/2010/08/looking-ahead-at-panorama-and-pivot/"><img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" border="0" src="http://media.jeff.wilcox.name/blog/Panorama685.png" /></a></p>
<p>My introductory post on the controls is still valid: <a title="http://www.jeff.wilcox.name/2010/08/looking-ahead-at-panorama-and-pivot/" href="http://www.jeff.wilcox.name/2010/08/looking-ahead-at-panorama-and-pivot/">http://www.jeff.wilcox.name/2010/08/looking-ahead-at-panorama-and-pivot/</a></p>
<p>You’ll also find MSDN documentation on <a href="http://msdn.microsoft.com/en-us/library/ff941092(VS.92).aspx">Panorama</a> and the <a href="http://msdn.microsoft.com/en-us/library/ff941123(VS.92).aspx">Pivot control</a>.</p>
<h2>Introducing the Silverlight for Windows Phone Toolkit</h2>
<p>It’s pretty hard to imagine a Silverlight platform without an awesome side dish a.k.a. the <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a>. The Windows Phone platform is no different, and we’re pleased to announce that the Silverlight Toolkit site now includes a new SKU, the <a href="http://silverlight.codeplex.com/releases/view/52297">Silverlight for Windows Phone Toolkit</a>.</p>
<p>Goodness in the bits include:</p>
<ul>
<li>ContextMenu </li>
<li>DatePicker </li>
<li>GestureService </li>
<li>TimePicker </li>
<li>ToggleSwitch </li>
<li>WrapPanel </li>
</ul>
<p><a href="http://blogs.msdn.com/b/delay/archive/2010/09/16/pining-for-windows-phone-7-controls-we-got-ya-covered-announcing-the-first-release-of-the-silverlight-for-windows-phone-toolkit.aspx">David Anson</a> has a <a href="http://blogs.msdn.com/b/delay/archive/2010/09/16/pining-for-windows-phone-7-controls-we-got-ya-covered-announcing-the-first-release-of-the-silverlight-for-windows-phone-toolkit.aspx">really nice overview of all the new controls</a> in the phone toolkit, including XAML samples and APIs. <a href="http://johnpapa.net/silverlight/windows-phone-developer-tools-and-the-silverlight-for-windows-phone-toolkit-released/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+JohnPapa+%28JohnPapa.net%29">John Papa</a> also covers some of the <a href="http://johnpapa.net/silverlight/windows-phone-developer-tools-and-the-silverlight-for-windows-phone-toolkit-released/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+JohnPapa+%28JohnPapa.net%29">new controls here</a>.</p>
<h2>Progress Bar performance note</h2>
<p>And yet another reminder: if you are using the indeterminate ProgressBar built into the Windows Phone platform, <a href="http://www.jeff.wilcox.name/2010/08/progressbarperftips2/">please follow my instructions</a> to make sure you have a smooth, fluid user interface experience. You need to use a <a href="http://www.jeff.wilcox.name/2010/08/progressbarperftips2/">special workaround to offload the animations to the compositor thread</a> and remember to toggle IsIndeterminate back to false when you no longer need it.</p>
<p>This is super important because so many applications are doing potentially heavy processing when they are showing a progress bar like this. The performance issue is not evident in the emulator as much as on actual Windows Phone 7 devices by the way.</p>
<h2>Applications Applications Applications</h2>
<p>I’ve been able to travel around the world meeting with developers to check out their apps. There are some amazing and fun apps being built using these tools, and we have been learning a lot about best practices, caveats, tips and tricks.</p>
<p>Over the coming weeks, we’ll be working to provide more app development guidance, so let us know how things go.</p>
<p>I’d highly recommend that you take the time to subscribe at least initially to these blogs to keep on top of these tips &amp; tricks:</p>
<ul>
<li><a href="http://blogs.msdn.com/b/delay/">David Anson</a> </li>
<li><a href="http://www.jeff.wilcox.name/blog/">Jeff Wilcox</a> </li>
<li><a href="http://blogs.msdn.com/b/ptorr/">Peter Torr</a> </li>
</ul>
<p>Hope you have fun exploring the RTM release of the platform!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/09/phone-tools-toolkit-and-more-released/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Updated Silverlight Unit Test Framework bits for Windows Phone and Silverlight 3</title>
		<link>http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/</link>
		<comments>http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/#comments</comments>
		<pubDate>Thu, 27 May 2010 21:02:52 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/</guid>
		<description><![CDATA[Here's the same unit test framework from the April 2010 Silverlight Toolkit, built for Windows Phone and SL3 developers only.]]></description>
			<content:encoded><![CDATA[<p>Here are updated quasi-official unit test framework bits for Silverlight 3 and Windows Phone developers. These are <strong>not</strong> intended for Silverlight 4 developers, since the same framework built for SL4 is included in the <a href="http://silverlight.codeplex.com/">April 2010 Silverlight Toolkit</a>.</p>
<p>This brings the <a href="http://www.jeff.wilcox.name/2010/05/new-2010-test-framework/">new features</a> from the Silverlight 4 version to developers who have a business reason to continue with Silverlight 3 development for the time being:</p>
<ul>
<li>Updated user interface</li>
<li>Integrated “tag expression” support for selecting subsets of tests to run</li>
<li>Performance improvements</li>
<li>Removal of dependencies on XLinq and System.Windows.Browser assemblies</li>
</ul>
<p>These are also the bits you want for Windows Phone testing.</p>
<h4>Why wasn’t there one for Silverlight 3 already?</h4>
<p>Since the April 2010 toolkit release was targeted for Silverlight 4 developers only, these bits were not released for version 3 (though were built from the same source).</p>
<h4>Why doesn’t the April 2010 toolkit work for Windows Phone development &amp; testing?</h4>
<p>The Windows Phone development environment is based on a version of Silverlight 3 today, and so that means that you need to use Silverlight 3 binaries and class libraries when re-using Silverlight apps and code – <em>not</em> Silverlight 4.</p>
<p>These bits work well for phone developers and replace the older bits I had posted to my <a href="http://www.jeffatmix.com/">MIX talk site</a>.</p>
<h4>Download the binaries</h4>
<p>[<a href="http://media.jeff.wilcox.name/blog/ut/SL3_UTF_May.zip"><strong>Silverlight 3 binaries for the Silverlight Unit Test Framework</strong></a>, Zip 452KB]    <br />You may need to ‘unlock’ the binaries for security reasons once downloading and extracting the assemblies from the .Zip. To do this, right-click on the file and select the ‘Unlock’ button.</p>
<p>These binaries are strong named as before, but are <em>not</em> Authenticode signed, so they are not official. This helps work around some Windows Phone signing issues I’ve heard reports of.</p>
<p>Hope this helps,   <br />Jeff</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>How about a Zune-style ChildWindow?</title>
		<link>http://www.jeff.wilcox.name/2010/05/my-childwindow-design/</link>
		<comments>http://www.jeff.wilcox.name/2010/05/my-childwindow-design/#comments</comments>
		<pubDate>Fri, 21 May 2010 21:25:39 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/05/my-childwindow-design/</guid>
		<description><![CDATA[Today I am sharing my ChildWindow style that resembles the Zune software user interface and has a nice transition. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Today I’m sharing my new ChildWindow style. It is a differentiated child window designed in that it doesn’t have a close button, has a completely different animation in and out, and I thought I was worth sharing. I’ve included a runtime app so you can run it and <a href="http://media.jeff.wilcox.name/blog/cw/index.html">see for yourself</a>.</p>
<h3>My ChildWindow style</h3>
<p><a href="http://media.jeff.wilcox.name/blog/cw/index.html"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="mycw" border="0" alt="mycw" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/mycw.png" width="680" height="359" /></a>     <br /><em>Click on the window above to open a simple Silverlight 4 application that demonstrates the transitions and interactivity. <a href="http://media.jeff.wilcox.name/blog/cw/ChildWindowTheme.zip">Project download</a>.</em></p>
<p>Some things to call out:</p>
<ul>
<li>I don’t include a Close button in the window chrome.</li>
<li>I hook up to the OnKeyDown event in my sample implementation. I always try and do this with my ChildWindows so that the escape (ESC) key can be treated as a cancelation of the dialog. Personal preference but a usability win I believe.</li>
<li>I like a light overlay color instead of a darkening experience, and went for that look.</li>
<li>My actual implementation uses a value converter to capitalize the title. I’ve removed this from my template for the time being.</li>
</ul>
<h3>The story on my evolving, unnamed theme, and how it relates to “Cosmopolitan”</h3>
<p>There’s an excellent <a href="http://visualstudiogallery.msdn.microsoft.com/en-us/9329bdf4-3be7-4347-b1cd-b2c5d4e5a293">“Cosmopolitan” Silverlight project template</a> + theme available that makes building good-looking interfaces a snap, and I’d highly recommend it if you’re looking to modernize the look of a new Silverlight project. I believe it pulls from “codename Metro” design ideas. It just works and as a VS template it rocks!</p>
<p>I’ve built an alternative, but similar theme, over time that I use on many of my projects, and it also pulls from the inspiration of the clean, consistent <a href="http://www.zune.net/en-US/products/software/default.htm">Zune software</a> design principals.</p>
<p>Now that the “Cosmopolitan” theme is out there, I’ve been taking the time to compare and contrast my similar theme with this, and see where I can make changes. Yeah, the things I do in my free time are baffling…</p>
<p>This is a good exercise because design is a two-way street, comparing and contrasting design decisions and implementations: I’ve learned that I should have been including validation templates in my theme (oops, haven’t used that feature enough). And I’ve shared some minor feedback on parts of the “Cosmopolitan” theme’s implementation details with its designers.</p>
<p>In the future I’ll present the complete theme for many controls, but until that develops, I’m going to continue to share small styles and templates, along with my comments along the way. Previously I blogged my <a href="http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/">context menu style</a>.</p>
<p>If you’re wondering “why should I use ChildWindow?” &#8211; I used to wonder the same thing. But I’m using <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.childwindow(VS.95).aspx">ChildWindow</a> more now than ever. I’ve discovered the importance of the nice integration with Visual Studio (there’s an item template for child windows), and out-of-browser applications have many uses for a rich modal-style window for sharing information at runtime.</p>
<p>I’ve completely replaced the MessageBox in my out-of-browser applications to instead use a child window designed to replace the message box functionality, offering a consistent visual design even when a message box-like experience is needed. I even use extension methods to add methods to MessageBox to instead use my styled child window.</p>
<h3>Other ChildWindow styles</h3>
<p>Here’s the standard ChildWindow style and control template that is built into the Silverlight SDK. I’m displaying a password entry form adapted from an app I was experimenting with:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cw1" border="0" alt="cw1" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/cw1.png" width="685" height="239" /> </p>
<p>Here is the same window with the “Cosmopolitan” theme’s style applied:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cwcosmo" border="0" alt="cwcosmo" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/cwcosmo.png" width="685" height="274" /> </p>
<h3>Note: There’s a bug in ChildWindow implicit styling support</h3>
<p>While working on creating themes, I did discover that there’s an unfortunate bug in Silverlight 4 where the implicit styles for ChildWindow are not picked up in certain XAML scenarios. Namely, if you use the handy item template in Visual Studio, the implicit style won’t be picked up.</p>
<p>Oddly, at times Visual Studio will show the proper implicit style, but at runtime it will revert to the standard control default style. Here’s a small screenshot – this is out-of-the-box “Cosmopolitan” theme with a ChildWindow item template.</p>
<h4>At design time it looks fine:</h4>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="dt" border="0" alt="dt" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/dt.png" width="685" height="454" /> </p>
<h4>At runtime:</h4>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="runtime_style_not_applied_bug" border="0" alt="runtime_style_not_applied_bug" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/runtime_style_not_applied_bug.png" width="685" height="231" /> </p>
<p>It appears that this item template format, where the XAML file of the child window’s root is the child window, doesn’t allow the style that was implicitly defined to be picked up.</p>
<p>No worries. To workaround this, add a Style attribute to the root of the file and a static resource to ChildWindow name. If you’re working with “Cosmopolitan”, then here are the steps:</p>
<ul>
<li>Open the Assets/SDKStyles.xaml file</li>
<li>Navigate to the implicit style for ChildWindow around line 2,440</li>
<li>Add an x:Key to make the style explicit instead of implicit. x:Key=”ChildWindowStyle”</li>
<li>Add this line after the (now explicit) style:</li>
</ul>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:839e9ba9-7b8c-4d91-9a85-d509a86d8e22" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Style TargetType="controls:ChildWindow" BasedOn="{StaticResource ChildWindowStyle}" /&gt;</pre>
</div>
<ul>
<li>Open your ChildWindow XAML file (mine is called Password.xaml) and add the attribute Style=”{StaticResource ChildWindowStyle}” to the root element</li>
</ul>
<h4>And here’s it at runtime now with our fix/workaround:</h4>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cwcosmo" border="0" alt="cwcosmo" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/cwcosmo.png" width="685" height="274" /></p>
<p>Note that whenever defining implicit styles myself, I always start explicit, then provide the implicit in the file using BasedOn.</p>
<h4>Download my sample project including the style</h4>
<p>[<a href="http://media.jeff.wilcox.name/blog/cw/ChildWindowTheme.zip">ChildWindowTheme.zip</a>, 71 KB] Includes the theme in App.xaml.</p>
<h3>“My yet-to-be-named Zune-inspired theme” components</h3>
<ul>
<li>ChildWindow (this post)</li>
<li><a href="http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/">ContextMenu</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/05/my-childwindow-design/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Using Silverlight 4 features to create a Zune-like context menu</title>
		<link>http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/</link>
		<comments>http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/#comments</comments>
		<pubDate>Sat, 15 May 2010 19:25:12 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/</guid>
		<description><![CDATA[A customized Silverlight 4 ContextMenu control that resembles the crisp, simple look of the Zune software's context menu.]]></description>
			<content:encoded><![CDATA[<p>Trying to create a modern, clean and crisp user interface is a challenge – and it’s something that Zune has done rather well in both their software and hardware experiences.</p>
<p>I took a few minutes to experiment with new Silverlight 4 features, including the new <a href="http://silverlight.codeplex.com/">Silverlight Toolkit</a> (April 2010 release) that includes a context menu control, to re-style/re-template the menu to look similar to a few other menus.</p>
<p>Here’s a quick look at some common context menu visuals – clearly there is some room for artistry in creating a consistent experience with your app.</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ContextMenus" border="0" alt="ContextMenus" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/ContextMenus.png" width="680" height="330" /> </p>
<p>The center context menu, with the Windows look, is what the default Silverlight Toolkit context menu looks most similar to.</p>
<h3>New features used</h3>
<ul>
<li>Right-click input event, added to the platform in Silverlight 4</li>
<li>Context menu control from the Silverlight Toolkit</li>
<li>Implicit styles support</li>
<li>Local fonts</li>
</ul>
<h3>Consider checking out ‘Cosmopolitan’, too</h3>
<p>There’s a theme that resembles the modern “codename Metro” design style, similar to that of the Zune user interface, that is available for Silverlight 4. <a href="http://timheuer.com/blog/archive/2010/05/03/new-silverlight-4-themes-available-for-download.aspx">More information is available on Tim’s blog</a>.</p>
<h3>What a context menu looks like in XAML</h3>
<p>You need an xmlns for the input assembly in the Silverlight Toolkit. Then you setup the ContextMenuService, a ContextMenu instance, plus multiple MenuItem and Separator instances.</p>
<p>A MenuItem can optionally have an icon, though I believe the trend these days is moving away from the icon-heavy menu and toolbar world into a clean &amp; crisp text-only experience… so I prefer a styled context menu that doesn’t optimize for icons.</p>
<p>The XMLNS for the context menu assembly is:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:9c30beb8-bc99-4dd4-9b26-528b0155f629" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">xmlns:controlsInputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"</pre>
</div>
<p>You can directly wire up to the Click event, or use Commands. Here’s a sample context menu within a data template:</p>
<p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:f1699113-aaec-4a27-8290-b5a8687024a8" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;ListBox.ItemTemplate&gt;
    &lt;DataTemplate&gt;
        &lt;ContentPresenter Content="{Binding}"&gt;
            &lt;controlsInputToolkit:ContextMenuService.ContextMenu&gt;
                &lt;controlsInputToolkit:ContextMenu&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Play" Click="OnMenuItemClick"/&gt;

                    &lt;controlsInputToolkit:Separator/&gt;

                    &lt;controlsInputToolkit:MenuItem Header="Download" Click="OnMenuItemClick"/&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Buy" Click="OnMenuItemClick"/&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Add to cart" Click="OnMenuItemClick"/&gt;

                    &lt;controlsInputToolkit:Separator/&gt;

                    &lt;controlsInputToolkit:MenuItem Header="Add to playlist" Click="OnMenuItemClick"/&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Add to burn list" Click="OnMenuItemClick"/&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Add to now playing" Click="OnMenuItemClick"/&gt;
                    &lt;controlsInputToolkit:MenuItem Header="Mark as favorite" Click="OnMenuItemClick"/&gt;

                    &lt;controlsInputToolkit:Separator/&gt;

                    &lt;controlsInputToolkit:MenuItem Header="Send" Click="OnMenuItemClick"/&gt;

                &lt;/controlsInputToolkit:ContextMenu&gt;
            &lt;/controlsInputToolkit:ContextMenuService.ContextMenu&gt;
        &lt;/ContentPresenter&gt;
    &lt;/DataTemplate&gt;
&lt;/ListBox.ItemTemplate&gt;</pre>
</div>
<p>And here’s what it looks like:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DefaultContextMenu" border="0" alt="DefaultContextMenu" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/DefaultContextMenu.png" width="188" height="242" /> </p>
<p>To use the ContextMenu, make sure your project includes references to <em>both</em> the toolkit’s System.Windows.Controls.Input.Toolkit.dll as well as the SDK’s System.Windows.Controls.dll.</p>
<p>Now I’d like to make this look more Zune-like.</p>
<h3>Using implicit styles</h3>
<p>So there are multiple ways to have a style (predefined look, settings and template) on your object:</p>
<ol>
<li>Default style key – the default template and style that the creator of the control had in mind. No work required.</li>
<li>Implicit styles defined in Resources – in Silverlight 4, a Style defined by a user, but without an x:Key property, will automatically apply to all scoped controls of that type.</li>
<li>Static resource styles defined in Resources – the standard experience up until now, having a Style with an x:Key, then setting the Style=”{StaticResource MyKeyName}” on any and all controls that want to use that style.</li>
<li>Setting properties directly on an object.</li>
</ol>
<p>So here is a standard, simple style for a Button, with the key:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:dc290aa0-a366-4943-89ce-8a6771e556a1" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;UserControl.Resources&gt;
    &lt;Style TargetType="Button" x:Key="MyButtonStyle"&gt;
        &lt;Setter Property="Background" Value="Blue"/&gt;
    &lt;/Style&gt;
&lt;/UserControl.Resources&gt;</pre>
</div>
<p>Here’s how you reference it:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:1c329b9f-9e83-41e4-9883-2927dfdb6c1e" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Button Style="{StaticResource MyButtonStyle}" Content="OK"/&gt;</pre>
</div>
<p>And now let’s make that into an implicit style for Silverlight 4. Just remove the x:Key:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:86e3e09e-40ad-4ef7-a8cb-6ad12d9df35a" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;UserControl.Resources&gt;
    &lt;Style TargetType="Button"&gt;
        &lt;Setter Property="Background" Value="Blue"/&gt;
    &lt;/Style&gt;
&lt;/UserControl.Resources&gt;</pre>
</div>
<p>And here’s how you reference that style – you don’t – it’s implicit:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:87648dd1-5f46-4050-af9d-07bf7335c0a9" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Button Content="OK"/&gt;</pre>
</div>
<p><em>Small caveat, fyi:</em> there is a bug with implicit styles not necessarily being applied within data templates. To work around this, I had to move to explicit styles (adding an x:Key to the style, then setting the Style property in the DataTemplate’s XAML to the static resource’s key).</p>
<h3>Local fonts</h3>
<p>I also used a feature of Silverlight 4 that lets me pick up and use local fonts on the machine. I’m using the ‘Segoe UI’ font, a key part of the Windows 7 user experience and visual identity.</p>
<p>However I also define fallback fonts, just like you would in HTML:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:a62b7fd6-6547-4165-9612-f4a9141b6a58" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Setter Property="FontFamily" Value="Segoe UI, Tahoma, Arial"/&gt;</pre>
</div>
<h3>My Zune-like context menu</h3>
<p>Here are the templates I ended up creating using Expression Blend.</p>
<p>To achieve the fade-in effect, I faked a little and used a Loaded event trigger, so the first time any particular context menu is shown, it will quickly fade – but subsequent presentations of the same instance will not fade, for a faster, more performant feel.</p>
<h4>ContextMenu Style</h4>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:d0a111a7-b70d-4f8b-b81a-abad98ad685e" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Style TargetType="controlsInputToolkit:ContextMenu" x:Key="ZuneLikeContextMenu"&gt;
    &lt;Setter Property="Background" Value="#FFFFFFFF"/&gt;
    &lt;Setter Property="BorderThickness" Value="0,1,0,1"/&gt;
    &lt;Setter Property="BorderBrush" Value="#0D000000"/&gt;
    &lt;Setter Property="Padding" Value="0,4,0,4"/&gt;
    &lt;Setter Property="Template"&gt;
        &lt;Setter.Value&gt;
            &lt;ControlTemplate TargetType="controlsInputToolkit:ContextMenu"&gt;
                &lt;Border
                    x:Name="Menu"
                    Opacity="0"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}"
                    Background="{TemplateBinding Background}"
                    CornerRadius="0"&gt;
                    &lt;Border.Effect&gt;
                        &lt;DropShadowEffect
                            ShadowDepth="0" Opacity="0.6" BlurRadius="22"/&gt;
                    &lt;/Border.Effect&gt;
                    &lt;Border.Triggers&gt;
                        &lt;EventTrigger RoutedEvent="Rectangle.Loaded"&gt;
                            &lt;BeginStoryboard&gt;
                                &lt;Storyboard&gt;
                                    &lt;DoubleAnimation
                                        Duration="0:0:0.2"
                                        To="1"
                                        Storyboard.TargetProperty="Opacity"
                                        Storyboard.TargetName="Menu"/&gt;
                                &lt;/Storyboard&gt;
                            &lt;/BeginStoryboard&gt;
                        &lt;/EventTrigger&gt;
                    &lt;/Border.Triggers&gt;
                    &lt;Grid&gt;
                        &lt;ItemsPresenter Margin="{TemplateBinding Padding}"/&gt;
                    &lt;/Grid&gt;
                &lt;/Border&gt;
            &lt;/ControlTemplate&gt;
        &lt;/Setter.Value&gt;
    &lt;/Setter&gt;
&lt;/Style&gt;</pre>
</div>
<h4>Separator Style</h4>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:010d1470-b3e8-4932-8394-67b1a78e20ce" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Style TargetType="controlsInputToolkit:Separator" x:Key="ZuneLikeSeparator"&gt;
    &lt;Setter Property="Background" Value="LightGray"/&gt;
    &lt;Setter Property="IsTabStop" Value="False"/&gt;
    &lt;Setter Property="Margin" Value="6,2,6,2"/&gt;
    &lt;Setter Property="Template"&gt;
        &lt;Setter.Value&gt;
            &lt;ControlTemplate TargetType="controlsInputToolkit:Separator"&gt;
                &lt;Border
                    BorderThickness="{TemplateBinding BorderThickness}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    Background="{TemplateBinding Background}"
                    Height="1"/&gt;
            &lt;/ControlTemplate&gt;
        &lt;/Setter.Value&gt;
    &lt;/Setter&gt;
&lt;/Style&gt;</pre>
</div>
<h4>MenuItem Style</h4>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:d0da5a04-eff4-4c6b-b93e-b68154f08dad" class="wlWriterEditableSmartContent">
<pre class="xml" name="code">&lt;Style TargetType="controlsInputToolkit:MenuItem" x:Key="ZuneLikeMenuItem"&gt;
    &lt;Setter Property="Background" Value="Transparent"/&gt;
    &lt;Setter Property="FontSize" Value="14"/&gt;
    &lt;Setter Property="FontFamily" Value="Segoe UI, Tahoma, Arial"/&gt;
    &lt;Setter Property="BorderBrush" Value="Transparent"/&gt;
    &lt;Setter Property="BorderThickness" Value="0"/&gt;
    &lt;Setter Property="Padding" Value="8,2,10,2"/&gt;
    &lt;Setter Property="Template"&gt;
        &lt;Setter.Value&gt;
            &lt;ControlTemplate TargetType="controlsInputToolkit:MenuItem"&gt;
                &lt;Grid&gt;
                    &lt;VisualStateManager.VisualStateGroups&gt;
                        &lt;VisualStateGroup x:Name="CommonStates"&gt;
                            &lt;VisualState x:Name="Normal"/&gt;
                            &lt;VisualState x:Name="Disabled"&gt;
                                &lt;Storyboard&gt;
                                    &lt;DoubleAnimation Duration="0" Storyboard.TargetName="Presenter" Storyboard.TargetProperty="Opacity" To="0.5"/&gt;
                                &lt;/Storyboard&gt;
                            &lt;/VisualState&gt;
                        &lt;/VisualStateGroup&gt;
                        &lt;VisualStateGroup x:Name="FocusStates"&gt;
                            &lt;VisualState x:Name="Unfocused"/&gt;
                            &lt;VisualState x:Name="Focused"&gt;
                                &lt;Storyboard&gt;
                                    &lt;DoubleAnimation Duration="0" Storyboard.TargetName="Bg" Storyboard.TargetProperty="Opacity" To="1"/&gt;
                                    &lt;DoubleAnimation Duration="0" Storyboard.TargetName="IconPresenter" Storyboard.TargetProperty="Opacity" To="1"/&gt;
                                    &lt;DoubleAnimation Duration="0" Storyboard.TargetName="Presenter" Storyboard.TargetProperty="Opacity" To="1"/&gt;
                                &lt;/Storyboard&gt;
                            &lt;/VisualState&gt;
                        &lt;/VisualStateGroup&gt;
                    &lt;/VisualStateManager.VisualStateGroups&gt;
                    &lt;Rectangle
                        RadiusX="0"
                        RadiusY="0"
                        Fill="{TemplateBinding Background}"
                        Stroke="{TemplateBinding BorderBrush}"
                        StrokeThickness="{TemplateBinding BorderThickness}"/&gt;
                    &lt;Rectangle
                        x:Name="Bg"
                        RadiusX="0"
                        RadiusY="0"
                        StrokeThickness="0"
                        Opacity="0"
                        Fill="#11000000"/&gt;
                    &lt;Grid Margin="{TemplateBinding Padding}"&gt;
                        &lt;Grid.ColumnDefinitions&gt;
                            &lt;ColumnDefinition
                                Width="Auto"/&gt;
                            &lt;ColumnDefinition Width="2"/&gt;
                            &lt;ColumnDefinition Width="*"/&gt;
                            &lt;ColumnDefinition Width="17"/&gt;
                        &lt;/Grid.ColumnDefinitions&gt;
                        &lt;ContentPresenter
                            x:Name="IconPresenter"
                            Content="{TemplateBinding Icon}"
                            Margin="1"
                            Opacity=".7"
                            VerticalAlignment="Center"/&gt;
                        &lt;ContentPresenter
                            x:Name="Presenter"
                            MinWidth="120"
                            Opacity=".7"
                            Content="{TemplateBinding Header}"
                            ContentTemplate="{TemplateBinding HeaderTemplate}"
                            Grid.Column="2"/&gt;
                    &lt;/Grid&gt;
                &lt;/Grid&gt;
            &lt;/ControlTemplate&gt;
        &lt;/Setter.Value&gt;
    &lt;/Setter&gt;
&lt;/Style&gt;</pre>
</div>
<p><a href="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/ZuneLikeContextMenuImplicitStyles.xaml_.txt"><strong>ZuneLikeContextMenuImplicitStyles.xaml.txt</strong></a><strong>:</strong> XAML. Download all three in one file. The file contains both implicit styles plus defined style names.</p>
<p>Here’s a comparison, a screenshot of the Zune menu on the left, and my Silverlight 4 context menu on the right:</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="FinalContextMenus" border="0" alt="FinalContextMenus" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/FinalContextMenus.png" width="400" height="240" /> </p>
<p>Hope this helps you create some nice modern-looking Silverlight apps!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/05/zunelike-contextmenu-style/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Silverlight Unit Test Framework: New version in the April 2010 Silverlight Toolkit</title>
		<link>http://www.jeff.wilcox.name/2010/05/new-2010-test-framework/</link>
		<comments>http://www.jeff.wilcox.name/2010/05/new-2010-test-framework/#comments</comments>
		<pubDate>Mon, 03 May 2010 22:26:06 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/05/new-2010-test-framework/</guid>
		<description><![CDATA[The latest release of the Silverlight Toolkit contains the new Silverlight Unit Test Framework, with a new modern user interface, out-of-browser support, and performance improvements.]]></description>
			<content:encoded><![CDATA[<p>In April we released a new version of the <a href="http://silverlight.codeplex.com/releases/view/43528">Silverlight Toolkit</a> for targeting Microsoft Silverlight 4. This release contains a new version of the Silverlight Unit Test Framework. Key improvements come in user interface, Silverlight 4 support, and performance.</p>
<h3>Rich, modern user interface</h3>
<p>The user interface no longer uses the antiquated HTML DOM bridge for displaying results, but now is a data bound, rich Silverlight application itself.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="NewTestFramework" border="0" alt="NewTestFramework" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/NewTestFramework.png" width="685" height="579" /></p>
<p>Rich results information is available, and a tree view control allows you to select results to be included in a test report that can be copied to the clipboard. Failures are automatically selected.</p>
<p>The results pane includes information about the tests that ran, as well as detailed information for failures.</p>
<p>Descriptive text helps identify negative tests, known test issues and bugs, and other important metadata that was not always exposed in the previous test framework.</p>
<h4>Integrated tag expression support</h4>
<p>The startup experience now allows you to enter a tag expression to select which tests to run, or not to run. You can add the Tag(“”) attribute to any test methods or classes to define your own tags. Also, the full and short names of tests and classes implicitly become test tags, as well as priorities.</p>
<p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="TagExpressionsEditor" border="0" alt="TagExpressionsEditor" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/05/TagExpressionsEditor.png" width="685" height="375" /> </p>
<p>This means that you can define tags such as:</p>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="152">!MyTest1</td>
<td valign="top" width="448">Run all tests except for the method named MyTest1</td>
</tr>
<tr>
<td valign="top" width="152">MyTest1+MyTest2</td>
<td valign="top" width="448">Run the MyTest1 and MyTest2 test methods</td>
</tr>
</tbody>
</table>
<h3>Out of Browser support</h3>
<p>The framework now supports running out-of-browser. Paired with the new Silverlight 4 Tools for Visual Studio 2010, you can press F5 to run a test project you have marked as an out-of-browser.</p>
<p>This also opens up an opportunity to do testing of elevated apps that make use of AutomationFactory and other advanced features on Windows.</p>
<h3>Simplified dependencies</h3>
<p>The test framework removed dependencies on System.Windows.Browser (from the platform) and System.Xml.Linq (XLinq, from the SDK).</p>
<h3>Building blocks for Windows Phone testing support</h3>
<p>This version also contains the full source to the phone testing interface, which is significantly different in visual design and experience to coincide with the Windows Phone device size.</p>
<p>However, the story for phone testing is still developing: in the meantime binaries designed for phone use can be found at <a href="http://jeffatmix.com/">http://jeffatmix.com/</a> </p>
<h3>New location for binaries</h3>
<p>Since the new rich user interface contains a number of controls, the traditional design-time integration system conflicts and presents some issues.</p>
<p>As a result, we had to move the binaries from the Bin directory of the toolkit installation folder into a new Testing directory.</p>
<p>So the two test framework assemblies (Microsoft.Silverlight.Testing and Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight) have moved.</p>
<p>This location change could cause existing applications that reference the test assemblies to fail to compile due to the &quot;missing&quot; references.</p>
<p>If that happens, please delete the two broken references and create references to these assemblies in their new location. Everything else should continue to work as expected.</p>
<h3>Simplified test project template</h3>
<p>In alignment with the test project changes in Visual Studio 2010, which are more simplified, the unit test project template for Silverlight no longer includes a README.TXT file.</p>
<h3>Known issues</h3>
<h5>Test service</h5>
<p>I’ve received reports from a number of people about issues with the test service automation support. Some of the NDA/preview users of the framework reported issues that were corrected, but there may still be some bugs out there. I’m working to investigate and post a fix if and when I know more.</p>
<p>In the meantime I know that <a href="http://statlight.net/">StatLight</a>, a third party system, has been updated for the April release and is working well for automation.</p>
<h5>Test panel and visuals</h5>
<p>Please beware that some of your tests may need to be updated to use the new framework if your application, utility functions, or tests ever used the Application.Current.RootVisual (against the recommended pattern for interface testing).</p>
<p>The root visual is now the test framework application runner itself, and the tests run within the same TestPanel as before. Controls added to the test panel will not be located at the 0, 0 screen position, but likely near the bottom of the screen instead.</p>
<p>Hope this helps. To get started, download and install the April toolkit!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/05/new-2010-test-framework/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>No March 2010 release of the Silverlight Toolkit</title>
		<link>http://www.jeff.wilcox.name/2010/03/no-march-release/</link>
		<comments>http://www.jeff.wilcox.name/2010/03/no-march-release/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 00:08:04 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight Toolkit]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/03/no-march-release/</guid>
		<description><![CDATA[I’ve received a number of emails and questions from developers about the next release of the Silverlight Toolkit and wanted to take a moment to address the lack of a March release. Although we had previously talked about a March 2010 release to coincide with the Silverlight 4 RC at MIX, we have decided not [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve received a number of emails and questions from developers about the next release of the Silverlight Toolkit and wanted to take a moment to address the lack of a March release.
<p>Although we had previously talked about a March 2010 release to coincide with the Silverlight 4 RC at MIX, we have decided not to ship an interim release for the RC, since the final release of Silverlight 4 is coming next month.</p>
<p>This is a good thing for developers, the time we save by not releasing goes toward a better release overall when Silverlight 4 is final.</p>
<p>In the meantime, the release of the toolkit in November, for Silverlight 3, still works great on Silverlight 4 RC.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/03/no-march-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Silverlight Toolkit and the Windows Phone: WrapPanel, and a few others</title>
		<link>http://www.jeff.wilcox.name/2010/03/toolkit-and-the-windows-phone/</link>
		<comments>http://www.jeff.wilcox.name/2010/03/toolkit-and-the-windows-phone/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 20:27:34 +0000</pubDate>
		<dc:creator>Jeff Wilcox</dc:creator>
				<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Silverlight Toolkit]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.jeff.wilcox.name/2010/03/toolkit-and-the-windows-phone/</guid>
		<description><![CDATA[Are you looking for WrapPanel for your Windows Phone application? Look no further. The Silverlight Toolkit has several controls that work pretty well on the Windows Phone. I wanted to provide my own informal look at how it’s working with Silverlight for Windows Phone today. Note that this information is only current as of today, [...]]]></description>
			<content:encoded><![CDATA[<p>Are you looking for WrapPanel for your Windows Phone application? Look no further. The Silverlight Toolkit has several controls that work pretty well on the Windows Phone.</p>
<p><a href="http://silverlight.codeplex.com/"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WrapPanel" border="0" alt="WrapPanel" src="http://www.jeff.wilcox.name/wp-content/uploads/2010/03/WrapPanel.png" width="454" height="338" /></a> </p>
<p>I wanted to provide my own informal look at how it’s working with Silverlight for Windows Phone today.</p>
<p>Note that this information is only current as of today, 3/21, when used with the MIX-related CTP of the tools and emulator, and the November 2009 Silverlight Toolkit. A lot could change, and this is <strong>not exhaustive</strong>.</p>
<p>I’m also including some controls that are found in the Silverlight SDK today. I present these in order of how much I have used the components while building apps.</p>
<h3>WrapPanel and DockPanel</h3>
<p>Found in the Silverlight Toolkit, System.Windows.Controls.Toolkit.dll (SWC.Toolkit).</p>
<p>Work great.</p>
<p>If you just need the WrapPanel, and don’t want to include the entire toolkit assembly, you can just paste these source files into your application project instead (license: <a href="http://opensource.org/licenses/ms-pl.html">Ms-PL</a>):</p>
<ul>
<li><a href="http://silverlight.codeplex.com/sourcecontrol/network/Show?projectName=Silverlight&amp;changeSetId=35261#636618">OrientedSize.cs</a></li>
<li><a href="http://silverlight.codeplex.com/sourcecontrol/network/Show?projectName=Silverlight&amp;changeSetId=35261#638862">WrapPanel.cs</a></li>
</ul>
<h3>Charting and Data Visualization</h3>
<p>There is a known issue with LINQ that prevents the controls today from working perfectly. A small, targeted fix has been made in the charting codebase and a future release will work well on the device.</p>
<p>Re-templating and styling the control is very important, and required, for working on the phone in an acceptable manner. I hope to share any decent templates I can come up with.</p>
<h3>HeaderedItemsControl, HeaderedContentControl</h3>
<p>Work great. Split between System.Windows.Controls (SWC) and SWC.Toolkit.</p>
<h3>TreeView</h3>
<p>SWC. Functional; requires massive re-templating and styling. Font sizes are much too small, and the theme and visuals do not appear code-name “Metro” compatible.</p>
<h3>AutoCompleteBox</h3>
<p>Found in the System.Windows.Controls.Input SDK library of the Silverlight 3 SDK.</p>
<p>Works OK, not ready for general development use.</p>
<p>Drop-down appears well. Major features all work. However, touching an entry in the drop down only performs selection. A second touch is required to verify the choice, effectively requiring a double-tap in use.</p>
<h3>Calendar, DatePicker</h3>
<p>SWC. Limited functionality, too small visually. Not designed for touch – not enough space to reliably click on a date. Require massive re-templating. Do not resemble the same experience as the date picker built into the Windows Phone operating system.</p>
<h3>GridSplitter</h3>
<p>Works, but may pose difficult to use on a device: requires much larger padding and custom templates to make the touch area visible and useful.</p>
<h3>Not yet checked</h3>
<p>DataGrid, DataPager, ChildWindow, Label, NumericUpDown, DomainUpDown, DataForm, Rating, TimePicker, TimeUpDown, GlobalCalendar, TransitioningContentControl, TreeMap, BusyIndicator, Viewbox, Expander, Accordion, drag and drop features, and many more.</p>
<p>We’re also still developing a story for the toolkit’s phone story moving forward. As there is a lot of momentum around the phone in the company, it’s very likely that some set of phone tools, samples, and toolkits come out.</p>
<p>Hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeff.wilcox.name/2010/03/toolkit-and-the-windows-phone/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

