<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.windows.com/utility/feedstylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Windows Phone Developer Blog</title><subtitle type="html" /><id>http://blogs.windows.com/windows_phone/b/wpdev/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.windows.com/windows_phone/b/wpdev/atom.aspx" /><generator uri="http://telligent.com" version="7.1.2.30501">Telligent Community 7.1.2.30501 (Build: 7.1.2.30501)</generator><updated>2013-04-16T15:54:54Z</updated><entry><title>Windows Phone 8 XAML LongListSelector</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/23/windows-phone-8-xaml-longlistselector.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/23/windows-phone-8-xaml-longlistselector.aspx</id><published>2013-05-23T19:47:22Z</published><updated>2013-05-23T19:47:22Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Rohan Thakkar, a Program Manager on the Windows Phone team.&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;  &lt;hr&gt;  &lt;p&gt;Last year we evangelized the use of the &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/10/01/how-to-create-an-infinite-scrollable-list-with-longlistselector.aspx" target="_blank"&gt;LongListSelector control to provide smooth infinite scrolling scenarios&lt;/a&gt;. The LongListSelector control is so useful that we decided to enhance it and move it to the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.controls.longlistselector(v=vs.105).aspx" target="_blank"&gt;SDK for Windows Phone 8&lt;/a&gt;. In this post we discuss the improvements we’ve made to the control, and provide a mapping guide for Windows Phone developers who are already using the Windows Phone Toolkit 7.1 version of the LongListSelector.  &lt;p&gt;If you prefer to read XAML instead of plain text, you can go straight to the samples and explore them:  &lt;ul&gt; &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e" target="_blank"&gt;TwitterSearch - Windows Phone 8 LongListSelector Infinite Scrolling Sample&lt;/a&gt;  &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/wpapps/PhotoHub-Windows-Phone-8-fd7a1093" target="_blank"&gt;PhotoHub - Windows Phone 8 XAML LongListSelector Grid Layout sample&lt;/a&gt;  &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/wpapps/PeopleHub-Windows-Phone-80-88abe94d" target="_blank"&gt;PeopleHub - Windows Phone 8 XAML LongListSelector sample&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;For more info about how to use the LongListSelector, see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx" target="_blank"&gt;How to display data in a grouped list in LongListSelector for Windows Phone 8&lt;/a&gt;.  &lt;p&gt;Let’s dig a little deeper into various enhancements we’ve made to the control. Skip to the sections that interest you.  &lt;ol&gt; &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_Moved_LongListSelector_to"&gt;LongListSelector moved to Windows Phone 8 SDK and to ROM&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_Sticky_headers"&gt;Sticky headers&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_Grouped_grid_layout"&gt;Grouped grid layout&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_Improvements_to_infinite"&gt;Improvements to infinite scrolling scenario&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_Globalization_&amp;ndash;_SortedLocaleGroupin"&gt;Globalization – SortedLocaleGrouping&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_LongListSelector_mapping_guide"&gt;LongListSelector mapping guide – Differences between Windows Phone OS 7.1 Toolkit and Windows Phone 8.0 SDK&lt;/a&gt;  &lt;li&gt;&lt;a href="http://portals/windowsphone8/client/eng/devplat/Windows Phone Developer Blog Drafts/#_FAQ"&gt;FAQs&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;LongListSelector moved to Windows Phone 8 SDK and to ROM&lt;/h2&gt; &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector(v=vs.105).aspx" target="_blank"&gt;LongListSelector&lt;/a&gt; control is now a part of &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls(v=vs.105).aspx" target="_blank"&gt;Microsoft.Phone.Controls&lt;/a&gt; namespace in &lt;strong&gt;Microsoft.Phone.Controls.dll&lt;/strong&gt; assembly. This means it’s now a fully supported, high-quality control shipped by the Windows Phone Development team. We also moved the assembly to ROM to take advantage of the internal off-thread input and the render thread architecture. This means the control is optimized for the full potential of Windows Phone.  &lt;p&gt;The &lt;strong&gt;Microsoft.Phone.Controls.dll&lt;/strong&gt; assembly also contains other phone-specific controls, such as &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.panorama(v=vs.105).aspx" target="_blank"&gt;Panorama&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.pivot(v=vs.105).aspx" target="_blank"&gt;Pivot&lt;/a&gt;. These controls also get the performance benefits of being in ROM, including reduced memory consumption (~50% reduced memory for a basic app) and improved touch performance, especially when you have data being loaded in the panorama view.  &lt;h2&gt;Sticky headers&lt;/h2&gt; &lt;p&gt;The native Windows Phone grouped list has the headers stick to the top as you scroll. The LongListSelector control in Windows Phone 8 has the same smooth effect.  &lt;p&gt;Note the headers in the following screenshots.  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_2F6395DF.png"&gt;&lt;img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_434D02A8.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 1 - Notice group header "a"&lt;/em&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_49642976.png"&gt;&lt;img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_46B28420.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 2 - Scrolling up, notice how "a" sticks to top&lt;/em&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_7D5FB957.png"&gt;&lt;img title="clip_image006" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image006" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_thumb_5F00_69A2A9F6.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 3 - Notice how the group header "b" pushes "a"&lt;/em&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_4B284340.png"&gt;&lt;img title="clip_image008" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image008" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_thumb_5F00_65C4B98C.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 4 - Now "b" is sticky, same as "a"&lt;/em&gt;  &lt;p&gt;&amp;nbsp; &lt;h2&gt;Grouped grid layout&lt;/h2&gt; &lt;p&gt;In Windows Phone 8, LongListSelector supports grid layout, which is more than just the &lt;b&gt;WrapPanel&lt;/b&gt; that’s available in the &lt;a href="http://phone.codeplex.com/" target="_blank"&gt;Windows Phone Toolkit&lt;/a&gt;. The LongListSelector grid layout is virtualized, which provides better performance. The following screenshots are from the &lt;a href="http://code.msdn.microsoft.com/wpapps/PhotoHub-Windows-Phone-8-fd7a1093" target="_blank"&gt;PhotoHub&lt;/a&gt; sample.  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image010_5F00_00612FD9.png"&gt;&lt;img title="clip_image010" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image010" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image010_5F00_thumb_5F00_633773CF.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 5 - LongListSelector's Grid layout&lt;/em&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image012_5F00_6628C483.png"&gt;&lt;img title="clip_image012" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image012" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image012_5F00_thumb_5F00_562959F2.png" width="259" height="432"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 6 - Jumplist's List layout.&lt;/em&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;The following code is an excerpt of the XAML for the LongListSelector from the PhotoHub sample.&lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c9aba403-4880-4b74-981b-b0f3d526b80e" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;phone:&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PhoneApplicationPage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Resources&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;lt;phone: &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;JumpListItemBackgroundConverter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; x:Key=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;BackgroundConverter&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;phone:&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;JumpListItemForegroundConverter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; x:Key=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ForegroundConverter&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Style&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; x:Key=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;JumpListStyle&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; TargetType=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;phone:LongListSelector&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Setter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Property=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;LayoutMode&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Value=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;List&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Setter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Property=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Margin&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Value=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;12,12,0,0&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Setter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Property=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ItemTemplate&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;Setter.Value&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataTemplate&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Border&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Background=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{Binding Converter={StaticResource BackgroundConverter}}&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            &lt;span style="background:#ffffff;color:#000000"&gt;Width=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;470&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;                            &lt;span style="background:#ffffff;color:#000000"&gt;Height=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;70&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                            &lt;span style="background:#ffffff;color:#000000"&gt;Margin=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;6&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                            &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TextBlock&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Text=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{Binding Key}&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;Foreground=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{Binding Converter= {StaticResource ForegroundConverter}}&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;Font Family=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{StaticResource PhoneFontFamilySemiBold}&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;                                FontSize=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;28&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;Padding=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Bottom&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Border&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataTemplate&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Setter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Value&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Setter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Style&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;/phone:&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PhoneApplicationPage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Resources&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;phone:&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LongListSelector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Name=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;PhotoHubLLS&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Margin=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;13,-30,0,0&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;ItemsSource=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{Binding GroupedPhotos}&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;    ItemTemplate=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{StaticResource ItemTemplate}&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;GroupHeaderTemplate=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{StaticResource GroupHeader}&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;JumpListStyle=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;{StaticResource JumpListStyle}&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;IsGroupingEnabled=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;True&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;LayoutMode=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Grid&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;GridCellSize=&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;108,108&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;Let’s look at some examples of interesting properties found in this code.  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector.layoutmode(v=vs.105).aspx" target="_blank"&gt;LayoutMode&lt;/a&gt;&lt;b&gt; – &lt;/b&gt;Indicates whether the collection in the context should be displayed as a list or as a grid. In the preceding XAML example, &lt;b&gt;LayoutMode&lt;/b&gt; is set to &lt;b&gt;Grid&lt;/b&gt; as a property on the LongListSelector, and set to &lt;b&gt;List&lt;/b&gt; as a property on &lt;b&gt;JumpListStyle&lt;/b&gt;.  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector.jumpliststyle(v=vs.105).aspx" target="_blank"&gt;JumpListStyle&lt;/a&gt; – Provides the style for the jump list items.  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector.gridcellsize(v=vs.105).aspx" target="_blank"&gt;GridCellSize&lt;/a&gt; – Indicates the size of each cell in the grid. This property has to be set on the LongListSelector or the &lt;b&gt;JumpListStyle&lt;/b&gt; wherever the grid layout is to be rendered.  &lt;p&gt;&lt;b&gt;Converters&lt;/b&gt; - Note that the &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.jumplistitembackgroundconverter(v=vs.105).aspx" target="_blank"&gt;JumpListItemBackgroundConverter&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.jumplistitemforegroundconverter(v=vs.105).aspx" target="_blank"&gt;JumpListItemForegroundConverter&lt;/a&gt; are needed to convert the foreground and background colors of the jump list item (group header of a group) whether or not it has items in the group. These converters also are part of the SDK and are in the same Microsoft.Phone.Controls namespace.  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image013_5F00_220494D2.png"&gt;&lt;img title="clip_image013" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image013" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image013_5F00_thumb_5F00_409B3323.png" width="552" height="603"&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;Figure 7 - Value converters shading empty group jump list items&lt;/em&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;The default foreground and background colors match the first-party app. You can customize it to align with your design needs using the &lt;b&gt;Enabled&lt;/b&gt; and &lt;b&gt;Disabled&lt;/b&gt; properties as shown here: &lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f9acfce7-253c-4662-b45a-4e0314ec9b1e" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;XAML&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;phone&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;JumpListItemBackgroundConverter&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Disabled&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;Bisque&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Enabled&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;Aqua&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Key&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;BackgroundConverter&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;phone&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;JumpListItemForegroundConverter&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Disabled&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;Azure&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Enabled&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;BlueViolet&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Key&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;ForegroundConverter&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;h2&gt;Improvements to infinite scrolling scenarios&lt;/h2&gt; &lt;p&gt;Earlier we spoke about &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/10/01/how-to-create-an-infinite-scrollable-list-with-longlistselector.aspx" target="_blank"&gt;infinite scrolling for the Windows Phone Toolkit 7.1 LongListSelector&lt;/a&gt;. As you approach the end of the visible list when scrolling, the LongListSelector automatically fetches more items and adds them to the list, which gives you a sense of infinite scrolling. We made this scenario simple to implement in Windows Phone 8. The following code from the &lt;a href="http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e" target="_blank"&gt;Twitter Search sample&lt;/a&gt; demonstrates how easy it is to implement:   &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:729d316c-9c09-4069-8156-9a960dc34604" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;XAML&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;phone&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;LongListSelector&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Name&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;resultList&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; Grid.Row&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; DataContext&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; viewModel}&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; ItemTemplate&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; ResultItemTemplate}&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; ItemsSource&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; TwitterCollection}&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; ListFooter&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Binding}&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; ItemRealized&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;resultList_ItemRealized&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f6b7893c-bf6d-49a6-aada-30bae89de406" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; resultList_ItemRealized(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; sender, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ItemRealizationEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; e)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (!_viewModel.IsLoading &amp;amp;&amp;amp; resultList.ItemsSource != &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;amp;&amp;amp; resultList.ItemsSource.Count &amp;gt;= _offsetKnob)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (e.ItemKind == &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LongListSelectorItemKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Item)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ((e.Container.Content &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;as&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; TwitterSearchResult).Equals(resultList.ItemsSource[resultList.ItemsSource.Count - _offsetKnob]))&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;_viewModel.LoadPage(_searchTerm, _pageNumber++);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;} &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.phone.controls.longlistselector.itemrealized(v=vs.105).aspx" target="_blank"&gt;ItemRealized&lt;/a&gt; event is raised every time a LongListSelector item acquires a UI container to be displayed on the screen. In other words, every time an item enters the UI buffers above or below the current viewport, the &lt;b&gt;ItemRealized&lt;/b&gt; event is raised. The event argument property &lt;b&gt;ItemKind&lt;/b&gt; indicates whether the UI container is an &lt;b&gt;Item&lt;/b&gt;, &lt;b&gt;ListHeader&lt;/b&gt;, &lt;b&gt;GroupHeader&lt;/b&gt;, or &lt;b&gt;ListFooter&lt;/b&gt;. Using the property &lt;b&gt;Container.Content&lt;/b&gt; you can get the actual object associated with the UI container that was realized. This way you can monitor the objects within the UI container buffer.  &lt;p&gt;Note how the app code in this example contains a private variable &lt;b&gt;_offsetKnob&lt;/b&gt;. This helps fine-tune the LongListSelector scrolling experience by helping to determine when to load more items depending on how heavy your item template is, or on how slow the response is from the service sending the data.  &lt;h2&gt;Globalization – &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.globalization.sortedlocalegrouping(v=vs.105).aspx" target="_blank"&gt;SortedLocaleGrouping&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;When you group contacts in alphabetical order, you want to do this in all languages. You could provide your own globalized, sorted alphabet characters for group headers. However, using your own alphabet strings will not guarantee 100% matching with the phone first-party contacts list. So we introduced a class called &lt;b&gt;SortedLocaleGrouping&lt;/b&gt; that provides a set of alphabets that are the same as those used by the first party. In the &lt;a href="http://code.msdn.microsoft.com/PeopleHub-Windows-Phone-80-88abe94d" target="_blank"&gt;PeopleHub&lt;/a&gt; sample, &lt;b&gt;SortedLocaleGrouping&lt;/b&gt; (from &lt;b&gt;Microsoft.Phone.Globalization&lt;/b&gt; namespace) is used in one of the helper types, &lt;b&gt;AlphaKeyGroup&lt;/b&gt; (which also is very highly recommended).  &lt;p&gt;You get the group display names by using the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.globalization.sortedlocalegrouping.groupdisplaynames(v=vs.105).aspx" target="_blank"&gt;SortedLocaleGrouping.GetGroupDisplayNames&lt;/a&gt; property to populate your groups. Then use the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.globalization.sortedlocalegrouping.getgroupindex(v=vs.105).aspx" target="_blank"&gt;GetGroupIndex&lt;/a&gt; method to classify your contacts list.  &lt;h4&gt;&lt;em&gt;SupportsPhonetics property&lt;/em&gt;&lt;/h4&gt; &lt;p&gt;This is a unique property and we have included it in &lt;b&gt;SortedLocaleGrouping&lt;/b&gt;. In some cultures, such as ja-JP, last names are written in a different script and are pronounced differently depending on the region or background.  &lt;p&gt;Here’s an example:  &lt;table cellspacing="1" cellpadding="2" width="649" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="156"&gt; &lt;p align="center"&gt;&lt;b&gt;String of LastName&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="204"&gt; &lt;p align="center"&gt;&lt;b&gt;Yomi/Pronunciation &lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="137"&gt; &lt;p align="center"&gt;&lt;b&gt;Group based on Yomi&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="145"&gt; &lt;p align="center"&gt;&lt;b&gt;Group without Yomi&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="156"&gt; &lt;p&gt;新井 (display string)&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="205"&gt; &lt;p&gt;Nii --&amp;gt; にいい (in Hiragana) or ニイイ (in Katakana)&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="137"&gt; &lt;p&gt;ナ&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="145"&gt; &lt;p&gt;The Globe icon&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="155"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="205"&gt; &lt;p&gt;Arai --&amp;gt; あらい (in Hiragana) or アライ (in Katakana)&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="137"&gt; &lt;p&gt;ア&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="145"&gt; &lt;p&gt;The Globe icon&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="155"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="205"&gt; &lt;p&gt;Shinkyo --&amp;gt; しんきょ (in Hiragana) or シンキョ (in Katakana)&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="137"&gt; &lt;p&gt;サ&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="145"&gt; &lt;p&gt;The Globe icon&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;This is a common phenomenon catching on in different cultures, and the first-party contacts list will be grouped based on the Yomi that is passed in. If no Yomi is passed in, it will return the default, same group (equivalent to other or globe).  &lt;p&gt;You usually would use the &lt;b&gt;SupportsPhonetics&lt;/b&gt; property when classifying the contacts into groups &lt;b&gt;and&lt;/b&gt; if you have the Yomi (pronunciation) database that you can access via a service or other means for the specific culture. The code between the //EXAMPLE comments in the following example is from one of the helper methods that shows how you would use it if you have a database of the pronunciations (Yomi) for various names. &lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c5ac621c-9f73-475d-9f5a-0b8771bb7a5e" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Create a list of AlphaGroup&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;T&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; with keys set by a SortedLocaleGrouping.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;param name=&amp;quot;items&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;The items to place in the groups.&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;param name=&amp;quot;ci&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;The CultureInfo to group and sort by.&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;param name=&amp;quot;getKey&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;A delegate to get the key from an item.&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;param name=&amp;quot;sort&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;Will sort the data if true.&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;An items source for a LongListSelector&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;List&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;AlphaKeyGroup&amp;lt;T&amp;gt;&amp;gt; CreateGroups(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IEnumerable&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; items, CultureInfo ci, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Func&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; keySelector, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;bool&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; sort)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;SortedLocaleGrouping slg = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; SortedLocaleGrouping(ci);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;List&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;AlphaKeyGroup&amp;lt;T&amp;gt;&amp;gt; list = CreateDefaultGroups(slg);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;foreach&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (T item &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; items)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; index = 0;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// EXAMPLE&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (slg.SupportsPhonetics)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//check if your database has Yomi string for item&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//if it does not, then do you want to generate Yomi or ask the user for this item.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;index = slg.GetGroupIndex(Yomiof(item));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// EXAMPLE&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;index = slg.GetGroupIndex(keySelector(item));&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (index &amp;gt;= 0 &amp;amp;&amp;amp; index &amp;lt; list.Count)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;list[index].Add(item);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (sort)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;foreach&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (AlphaKeyGroup&amp;lt;T&amp;gt; group &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; list)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;group.Sort((c0, c1) =&amp;gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ci.CompareInfo.Compare(keySelector(c0), keySelector(c1)); });&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; list;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;h2&gt;LongListSelector mapping guide – Differences between Windows Phone Toolkit 7.1 and Windows Phone 8.0 SDK&lt;/h2&gt; &lt;p&gt;We modified and enhanced the Windows Phone Toolkit LongListSelector. In this section we briefly outline what has changed.  &lt;h3&gt;Properties modified from the Windows Phone Toolkit 7.1&lt;/h3&gt; &lt;h4&gt;&lt;em&gt;Deleted&lt;/em&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;BufferSize &lt;/li&gt; &lt;li&gt;IsBouncy &lt;/li&gt; &lt;li&gt;IsScrolling &lt;/li&gt; &lt;li&gt;MaximumFlickVelocity &lt;/li&gt; &lt;li&gt;ShowListFooter/ShowListHeader &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;&lt;em&gt;Modified&lt;/em&gt;&lt;/h4&gt; &lt;table cellspacing="0" cellpadding="0" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="348"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone Toolkit 7.1&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="348"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone 8 ROM SDK&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;DisplayAllGroups&lt;/strong&gt;  &lt;p&gt;Display all groups in the list whether or not they have items. Default is true.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;HideEmptyGroups &lt;/strong&gt; &lt;p&gt;Hide all groups in the list without items. Default is false.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;GroupItemTemplate&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;JumpListStyle&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;IsFlatList&lt;/strong&gt;  &lt;p&gt;Gets or sets whether the list is flat instead of a group hierarchy. Default is true.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="348"&gt; &lt;p&gt;&lt;strong&gt;IsGroupingEnabled&lt;/strong&gt;  &lt;p&gt;Gets or sets whether the list is flat instead of a group hierarchy. Default is false.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h4&gt;&lt;em&gt;New concepts&lt;/em&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;GridCellSize &lt;/li&gt; &lt;li&gt;LayoutMode LongListSelectorLayoutMode { List, Grid }; &lt;/li&gt; &lt;li&gt;ManipulationState &lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b33bbd80-58cc-4b4a-9229-e70bcba9e635" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;enum&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ManipulationState&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;Idle, &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// nothing is manipulating or animating&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;Manipulating, &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Gesture is being recognized, finger is down and any delta is received, drag/pan or flick&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;Animating &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//No Gesture is currently happening, but there is some animation happening, like scroll animation or compression animation&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;} &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Methods modified from the Windows Phone Toolkit 7.1&lt;/h3&gt; &lt;h4&gt;&lt;em&gt;Deleted&lt;/em&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;AnimateTo(object item) &lt;/li&gt; &lt;li&gt;CloseGroupView() &lt;/li&gt; &lt;li&gt;DisplayGroupView() &lt;/li&gt; &lt;li&gt;GetItemsInView() &lt;/li&gt; &lt;li&gt;GetItemsWithContainers(bool onlyItemsInView, bool getContainers) &lt;/li&gt; &lt;li&gt;ScrollToGroup(object group) &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Events modified from the Windows Phone Toolkit 7.1&lt;/h3&gt; &lt;h4&gt;&lt;em&gt;Deleted&lt;/em&gt;&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;StretchingBottom &lt;/li&gt; &lt;li&gt;StretchingCompleted &lt;/li&gt; &lt;li&gt;StretchingTop &lt;/li&gt;&lt;/ul&gt; &lt;h4&gt;&lt;em&gt;Modified&lt;/em&gt;&lt;/h4&gt; &lt;table cellspacing="0" cellpadding="0" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="316"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone Toolkit 7.1&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="322"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone 8 ROM SDK&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="316"&gt; &lt;p&gt;ScrollingCompleted  &lt;p&gt;ScrollingStarted&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="322"&gt; &lt;p&gt;ManipulationStateChanged  &lt;p&gt;(coupled with ManipulationState property)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="316"&gt; &lt;p&gt;Link/Unlink&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="322"&gt; &lt;p&gt;ItemRealized/ ItemUnrealized  &lt;p&gt;With EventArgs including ItemKind &lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c36355e9-63d1-40a1-8a4d-558b9690af1f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ItemRealizationEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;EventArgs&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; The ContentPresenter which is displaying the item.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ContentPresenter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Container { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Gets the kind of item that is realized&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LongListSelectorItemKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ItemKind { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Different kinds of items that exists in LongListSelector&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;enum&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LongListSelectorItemKind&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;ListHeader,&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;GroupHeader,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;Item,&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;GroupFooter,&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;ListFooter&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;} &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;FAQ&lt;/h2&gt; &lt;h3&gt;Why use IList instead of IEnumerable for ItemsSource?&lt;/h3&gt; &lt;p&gt;You have to know how many elements there are and there is no &lt;b&gt;Count&lt;/b&gt; property on &lt;b&gt;IEnumerable&lt;/b&gt;. You also have to be able to access the items by index, not just in the forward-only, one-at-a-time way that enumerators do. If &lt;b&gt;ItemsSource&lt;/b&gt; accepted &lt;b&gt;IEnumerables&lt;/b&gt; or an &lt;b&gt;IEnumerable&lt;/b&gt; of &lt;b&gt;IEnumerables&lt;/b&gt;, you’d have to convert them to lists internally using the default method of iterating over every single item. This conversion would rule out data virtualization, which could cause poor performance without the app author knowing why. Worse yet, the author might think that it is the status quo and simply accept a longer start time. This was one of the complaints about the original toolkit LongListSelector. Now, if an app author has only an &lt;b&gt;IEnumerable&lt;/b&gt; set of data, the developer can simply call &lt;b&gt;ToList()&lt;/b&gt; for the default conversion to an &lt;b&gt;IList&lt;/b&gt; but the developer also has the flexibility provide their own &lt;b&gt;IList&lt;/b&gt; implementation.  &lt;h3&gt;Is LongListSelector recommended instead of ListBox?&lt;/h3&gt; &lt;p&gt;Yes! We have designed the LongListSelector specifically for phone scenarios and we encourage people to use the LongListSelector instead of &lt;b&gt;ListBox&lt;/b&gt; for phone apps.     &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588474&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term=" LongListSelector" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/+LongListSelector/default.aspx" /><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /><category term=" XAML" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/+XAML/default.aspx" /></entry><entry><title>Testing your Windows Phone app – Part 2</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/21/testing-your-windows-phone-app-part-2.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/21/testing-your-windows-phone-app-part-2.aspx</id><published>2013-05-21T20:07:00Z</published><updated>2013-05-21T20:07:00Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Craig Horsfield, a Senior SDET on the Windows Phone Test and Operations team.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Testing your app throughout the development process can help you create a really great Windows Phone app. Testing helps ensure that your app is effectively represented in the Windows Phone Store as an app that offers Windows Phone users a high level of performance and quality. A small investment in the key areas described in this post can help you bypass common errors early in the development process, and help you get positive results in the long term. This post is part 2 of a 3-part series that outlines key test areas that you should consider before submitting your app to the Store. See &lt;a title="part 1" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/testing-your-windows-phone-app-part-1.aspx" target="_blank"&gt;part 1&lt;/a&gt; for additional details.&lt;/p&gt;
&lt;h2&gt;Push notification and Live Tiles&lt;/h2&gt;
&lt;h3&gt;Live Tiles&lt;/h3&gt;
&lt;p&gt;Live Tiles are updated through push notification or through an app&amp;rsquo;s periodic background agent. When testing these areas, you should accelerate the update time so that you can test more rapidly. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/hh202948(v=vs.105).aspx" target="_blank"&gt;Tiles for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;1. Verify that your Live Tile updates.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;Verify that the Live Tile updates after it has been pinned to &lt;b&gt;Start&lt;/b&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;2. Verify that your Live Tile stops updating.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;If this setting is disabled in the app, make sure the Live Tile stops updating.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;3. Verify that the Live Tile updates via a periodic agent.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;If the Live Tile is updated via a periodic agent, verify the update on all network types, and verify that the Live Tile updates when there is no network, for example, in Airplane mode.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;4. Verify that the Live Tile is working and present after an app upgrade.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;5. Verify that the Live Tile is working and present after an app upgrade and subsequent restarting the device.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;If updating the app, make sure that you don&amp;rsquo;t change the &lt;b&gt;TokenID&lt;/b&gt; in the &lt;b&gt;WMAppManifest.xml&lt;/b&gt; file. This results in your Live Tile being removed from &lt;b&gt;Start&lt;/b&gt; when the device is restarted.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="291" valign="top"&gt;
&lt;p&gt;6. If using a background agent, verify that the agent doesn&amp;rsquo;t crash or terminate.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="334" valign="top"&gt;
&lt;p&gt;This results in disabling the agent and Tile updates will fail.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Notifications&lt;/h3&gt;
&lt;p&gt;Apps that use notifications normally are used within background agents. Test these notifications to ensure that they work properly. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/jj207004(v=vs.105).aspx" target="_blank"&gt;Notifications for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="315" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="310" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="315" valign="top"&gt;
&lt;p&gt;1. Verify that notifications are received.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="310" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="315" valign="top"&gt;
&lt;p&gt;2. Verify what happens when you tap the notification.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="310" valign="top"&gt;
&lt;p&gt;Tapping the notification launches the user into the app in the correct state.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="315" valign="top"&gt;
&lt;p&gt;3. Verify that the app doesn&amp;rsquo;t overuse toast notifications.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="401" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Agents&lt;/h2&gt;
&lt;p&gt;Background agents provide key abilities for an app, but they also introduce some specific test considerations. Agents can be disabled and enabled in the phone&amp;rsquo;s settings, on the &lt;b&gt;Settings&lt;/b&gt; &amp;gt; &lt;b&gt;Application&lt;/b&gt; &amp;gt; &lt;b&gt;Background Tasks&lt;/b&gt; screen. The app needs to be aware of the state of the agent. Resources available to agents also are restricted. A key point to remember is that when running in the debugger, these restrictions are not enforced so it&amp;rsquo;s important to test your app outside of the debugger and track the resource that it is using. For more info, see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202942%28v=vs.105%29.aspx" target="_blank"&gt;Background agents for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;1. Verify initial app start.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;The agent starts when it&amp;rsquo;s needed.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;2. Verify that the app handles state in which the agent has been disabled by the user in Settings\Application\Background Tasks.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;Additionally, verify that the app performs as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;App notifies the user that it&amp;rsquo;s not available and continues to work as expected.&lt;/li&gt;
&lt;li&gt;App notifies that the agent is needed and re-enables it.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;3. Agents are disabled in low-battery conditions - test that the app can handle these states.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;4. Agents that crash or are terminated by the OS for exceeding resources, on two successive crashes will be disabled. Ensure your app handles this state.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;In this state the foreground app has to reschedule the agent. This state can be queried from the agent API. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/hh202944(v=vs.105).aspx#BKMK_DetectingWhenBackgroundAgentsHaveBeenDisabled" target="_blank"&gt;Background agent best practices for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;5. Resource-intensive agent only runs when on power and Wi-Fi. Ensure app handles this correctly.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="347" valign="top"&gt;
&lt;p&gt;6. Verify that the agent stays below the required CPU and memory caps.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This table lists the required CPU and memory caps, by agent on Windows Phone 8:&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Agent&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="190" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;CPU&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="207" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Memory &lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p&gt;CBE&lt;/p&gt;
&lt;/td&gt;
&lt;td width="190" valign="top"&gt;
&lt;p&gt;10%&lt;/p&gt;
&lt;/td&gt;
&lt;td width="207" valign="top"&gt;
&lt;p&gt;N/A&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p&gt;GBA&lt;/p&gt;
&lt;/td&gt;
&lt;td width="190" valign="top"&gt;
&lt;p&gt;10%&lt;/p&gt;
&lt;/td&gt;
&lt;td width="207" valign="top"&gt;
&lt;p&gt;11 MB&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p&gt;BAP&lt;/p&gt;
&lt;/td&gt;
&lt;td width="190" valign="top"&gt;
&lt;p&gt;10%&lt;/p&gt;
&lt;/td&gt;
&lt;td width="207" valign="top"&gt;
&lt;p&gt;20 MB&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p&gt;FA&lt;/p&gt;
&lt;/td&gt;
&lt;td width="190" valign="top"&gt;
&lt;p&gt;5%&lt;/p&gt;
&lt;/td&gt;
&lt;td width="207" valign="top"&gt;
&lt;p&gt;10 MB&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="197" valign="top"&gt;
&lt;p&gt;VoIP agent&lt;/p&gt;
&lt;/td&gt;
&lt;td width="224" valign="top"&gt;
&lt;p&gt;20%&lt;/p&gt;
&lt;/td&gt;
&lt;td width="278" valign="top"&gt;
&lt;p&gt;60 MB&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;&lt;/h4&gt;
&lt;h2&gt;Media, audio, and video&lt;/h2&gt;
&lt;p&gt;Media, audio, and video throughout your app should be tested. Consider these test scenarios in the table below. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff402550(v=vs.105).aspx" target="_blank"&gt;Media for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;1. Preserve audio state.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;If your app plays an audio sound (clip) when it starts, your app should not pause the currently playing audio. The app should preserve and not interfere with the currently audio playing on the device.&lt;/li&gt;
&lt;li&gt;If your app plays back audio content from a background agent or a foreground app, your app should pause any currently playing audio.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;2. Verify the Universal Audio Control during audio playback.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Verify Play.&lt;/li&gt;
&lt;li&gt;Verify Pause / Resume.&lt;/li&gt;
&lt;li&gt;Verify Skip Next / Skip Previous.&lt;/li&gt;
&lt;li&gt;Skip to last and back to the first track, etc.&lt;/li&gt;
&lt;li&gt;Some apps may take time to process these calls. Verify that the UI is set to disabled while the app is processing these calls to prevent multiple invokes.&lt;/li&gt;
&lt;li&gt;Verify volume controls.&lt;/li&gt;
&lt;li&gt;Audio continues under lock.&lt;/li&gt;
&lt;li&gt;Audio continues when app is on the back stack.&lt;/li&gt;
&lt;li&gt;Verify all expected &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff462087(v=vs.105).aspx" target="_blank"&gt;codecs&lt;/a&gt;that the app offers can be played back.&lt;/li&gt;
&lt;li&gt;Track info is displayed in the UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;3. Verify audio playback via a background audio agent.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Test all of the above test cases.&lt;/li&gt;
&lt;li&gt;Audio continues when the app is terminated but the background agent is allowed to continue.&lt;/li&gt;
&lt;li&gt;Audio continues to play when device screen is locked.&lt;/li&gt;
&lt;li&gt;App agent remains below the app 20-MB cap.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;4. Media Source&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Verify media from a network stream.&lt;/li&gt;
&lt;li&gt;Verify media from the app&amp;rsquo;s ISO store.&lt;/li&gt;
&lt;li&gt;Verify media playing from the media library on the phone. (This case requires the correct capability in the app manifest.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;5. Video playback&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Verify all states:
&lt;ul&gt;
&lt;li&gt;Play from start&lt;/li&gt;
&lt;li&gt;Pause, resume&lt;/li&gt;
&lt;li&gt;Skip forward and back&lt;/li&gt;
&lt;li&gt;Change states rapidly&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;6. S-Video playback in FAS scenarios&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;On navigate away event, the app needs to record the current media stream location.&lt;/li&gt;
&lt;li&gt;Play media stream return to the phone start page and then switch back to the app. Verify the stream is preserved, should continue from the previous point.&lt;/li&gt;
&lt;li&gt;Play media stream and force the app to tombstone via Visual Studio. In this case, the app should continue from previous point but will have to load the stream and forward it to the location saved in navigate away and deactivated events.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;7. Bandwidth&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Verify media stream playback on different networks and bandwidth. App should adjust playback quality and codec as need.&lt;/li&gt;
&lt;li&gt;Verify network dropped scenario and the app handles this and informs the user correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visual studio phone emulator can manipulate the network quality and type to aid in this testing.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;8. &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff769558(v=vs.105).aspx" target="_blank"&gt;Media hub integration&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="337" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;Verify app is visible in the Media hub, manifest must have HubType=1.&lt;/li&gt;
&lt;li&gt;App has to use &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.devices.mediahistory(v=vs.105).aspx" target="_blank"&gt;MediaHistory&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.devices.mediahistoryitem(v=vs.105).aspx" target="_blank"&gt;MediaHistoryItem&lt;/a&gt;classes in this scenario.&lt;/li&gt;
&lt;li&gt;Verify post market place ingestion where the correct capabilities are set on the app manifest to enable it in the hub. (Use the App Beta submission process to test this.)&lt;/li&gt;
&lt;li&gt;App must update the, &amp;lsquo;now playing&amp;rsquo; tile, &amp;lsquo;history&amp;rsquo; and &amp;lsquo;new&amp;rsquo; list.&lt;/li&gt;
&lt;li&gt;Verify app plays correct stream when launched from history or new list.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="288" valign="top"&gt;
&lt;p&gt;9. &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff769541(v=vs.105).aspx" target="_blank"&gt;FM Radio&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="425" valign="top"&gt;
&lt;ul&gt;
&lt;li&gt;App is not compatible with all hardware and versions of Windows Phone. Test app on the correct platform.&lt;/li&gt;
&lt;li&gt;Verify that app sets the correct region based on the phone location; this enables the correct frequency stepping. If incorrect it will not tune well or find stations.&lt;/li&gt;
&lt;li&gt;Set the correct power modes. For example, verify that the user is not playing media from the FM radio, then set &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/microsoft.devices.radio.radiopowermode(v=vs.105).aspx" target="_blank"&gt;RadioPowerMode&lt;/a&gt;&lt;b&gt;&lt;/b&gt; to off.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Geolocation&lt;/h2&gt;
&lt;p&gt;With Windows Phone 8, you can create apps that use info about the phone&amp;rsquo;s physical location. Scenarios for location-aware apps include checking the user into a web service using the user&amp;rsquo;s instantaneous location, and tracking the user&amp;rsquo;s location as it changes over a period of time. The location data the phone provides comes from multiple sources, including GPS, Wi-Fi, and cellular. The visual studio phone emulator can be used to simulate these location changes. The location can be moved manually or simulate a sequence of location changes. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff431800(v=vs.105).aspx" target="_blank"&gt;Location for Windows Phone 8&lt;/a&gt;.&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p&gt;1. Prevent &lt;b&gt;PositionChange&lt;/b&gt; events from firing too often and placing CPU processing load on the app.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p&gt;Set the &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/windows.devices.geolocation.geolocator.movementthreshold.aspx" target="_blank"&gt;MovementThreshold&lt;/a&gt;&lt;b&gt;&lt;/b&gt; property to the appropriate value for the app needs and make sure that events fire only outside of that threshold.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p&gt;2. Handle the unknown location state.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p&gt;Ensure the app can handle &lt;b&gt;NA&lt;/b&gt; values. Test the app when it has no location state.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p&gt;3. Test a large change in location data so that any internal calculations in the app do not fail in these cases.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p&gt;For example, position changes greater than 1 degree. This can happen if the phone has had no valid location data for some period of time.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p&gt;4. Test app in all hemispheres: North/South and West/East.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p&gt;Ensure that your calculations on negative degree values are correct.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="302" valign="top"&gt;
&lt;p&gt;5. Test 0-degree and 180-degree location for longitude and latitude.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="409" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Design considerations when using location:&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="356" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="269" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="356" valign="top"&gt;
&lt;p&gt;1. Use a lower level of accuracy to save on battery power if applicable.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="356" valign="top"&gt;
&lt;p&gt;2. Check the &lt;b&gt;Position.Location.IsUnknown&lt;/b&gt; and &lt;b&gt;GeoPositionStatus&lt;/b&gt; properties to ensure that the location is valid.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="348" valign="top"&gt;
&lt;p&gt;None.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Resource usage and performance&lt;/h2&gt;
&lt;p&gt;Windows Phone apps need to be designed to efficiently use and preserve the limited resources of the phone platform. You want to design your apps to use the least possible CPU cycles, to access networks efficiently and purposefully, and to make the best use of visual components&amp;mdash;graphics, bright colors, and themes use more power than a simpler UI.&lt;/p&gt;
&lt;p&gt;Test areas to consider:&lt;/p&gt;
&lt;table style="width: 630px;" border="1" cellspacing="1" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="316" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Test scenario &lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="309" valign="top"&gt;
&lt;p align="center"&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="316" valign="top"&gt;
&lt;p&gt;1. Check for a nonresponsive or jerky UI.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="309" valign="top"&gt;
&lt;p&gt;This could be caused by long-running activity on the UI thread.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="316" valign="top"&gt;
&lt;p&gt;1. Check for Memory leaks &amp;ndash; repeat scenarios multiple times to detect memory leaks during specific sequences.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="309" valign="top"&gt;
&lt;p&gt;Repeat page navigation could increase app memory.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="316" valign="top"&gt;
&lt;p&gt;2. Check for rapid battery drain.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="400" valign="top"&gt;
&lt;p&gt;Can be caused by using the app for long periods of time.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Tips and tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Visual Studio app profiler, on the debug menu, is a key tool for looking into app memory and CPU usage.&lt;/li&gt;
&lt;li&gt;Using the &lt;b&gt;EnabledFrameRateCounter&lt;/b&gt;/&lt;b&gt;EnableRedrawRegions&lt;/b&gt;can be useful when app testing.&lt;/li&gt;
&lt;li&gt;Use APIs in the &lt;b&gt;DeviceStatus&lt;/b&gt; class track memory usage in the app, especially &lt;b&gt;ApplicationCurrentMemoryUsage&lt;/b&gt; and &lt;b&gt;ApplicationPeakMemoryUsage&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;See &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff967560(v=vs.105).aspx" target="_blank"&gt;App performance considerations for Windows Phone&lt;/a&gt; for an overview of app performance for Windows Phone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;&lt;/h5&gt;
&lt;p&gt;In part 3 of this series, we&amp;rsquo;ll discuss additional areas and testing approaches to consider, including to &lt;i&gt;network resources, device-specific tests for hardware variations, display resolution, app upgrade, common Store test cases, and real-world testing&lt;/i&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588461&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term="Testing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Testing+Apps/default.aspx" /><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Use your HTML5 skills, port your PhoneGap app to Windows Phone, and win prizes</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/20/use-your-html5-skills-port-your-phonegap-app-to-windows-phone-and-win-prizes.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/20/use-your-html5-skills-port-your-phonegap-app-to-windows-phone-and-win-prizes.aspx</id><published>2013-05-20T19:09:00Z</published><updated>2013-05-20T19:09:00Z</updated><content type="html">&lt;p&gt;Many of you have heard about &lt;a href="http://phonegap.com/" target="_blank"&gt;PhoneGap&lt;/a&gt; (aka &lt;a href="http://cordova.io/" target="_blank"&gt;Apache Cordova&lt;/a&gt;), the popular open source framework you can use to create mobile apps using HTML, CSS, and JavaScript. PhoneGap has &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2011/09/08/phonegap-mobile-html5-framework-adding-support-for-windows-phone-mango.aspx" target="_blank"&gt;supported&lt;/a&gt; the Windows Phone platform &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2011/09/08/phonegap-mobile-html5-framework-adding-support-for-windows-phone-mango.aspx" target="_blank"&gt;since Windows Phone 7.5&lt;/a&gt;, and had a &lt;a href="http://phonegap.com/blog/2012/12/21/apache-cordova-and-windows-phone-8/" target="_blank"&gt;major update&lt;/a&gt; to support new capabilities in Windows Phone 8, including Internet Explorer 10. &lt;br /&gt;Today, we&amp;rsquo;re launching a Porting Challenge and inviting developers who have used PhoneGap to publish apps in other stores &amp;ndash; for example, Apple iTunes, Google Play, Blackberry World, Bada, Symbian, or Palm OS &amp;ndash; to take any of their existing PhoneGap apps, published in any store, and port it to Windows Phone 8, like the Untappd app &lt;a href="http://blog.untappd.com/post/49432420630/untappd-for-windows-phone-8" target="_blank"&gt;recently ported to Windows Phone 8&lt;/a&gt;.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://www.phonegapwpchallenge.com/" target="_blank"&gt;&lt;img width="223" height="240" title="clip_image002" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_43F15E0B.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Members of a panel selected from Microsoft, the Adobe PhoneGap team, and industry experts will choose 20 winners, based on apps that are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Original&lt;/li&gt;
&lt;li&gt;Innovative&lt;/li&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;Engaging and visually appealing to the user&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The panel will pick 3 grand prize winners who each will receive a Windows Phone 8 device&amp;nbsp;and a Surface Pro, and 17 first prize winners who each will receive a Windows Phone 8 device. All winning apps will be evaluated for featured slots in the Windows Phone Store.&lt;/p&gt;
&lt;p&gt;The challenge starts today, May 20, 2013. You have through June 30, 2013, to submit your app for this porting challenge. Winners will be announced July 19, 2013, at the &lt;a href="http://pgday.phonegap.com/us2013/" target="_blank"&gt;PhoneGap Day&lt;/a&gt; event in Portland, Oregon. The challenge is open to developers in all countries/regions where &lt;a href="http://msdn.microsoft.com/library/windowsphone/help/jj215599(v=vs.105).aspx" target="_blank"&gt;Windows Phone Dev Center registration is available&lt;/a&gt;. Read the &lt;a href="http://aka.ms/phonegapwpchallengerules" target="_blank"&gt;complete rules&lt;/a&gt; for all the details before you sign up at &lt;a href="http://www.phonegapwpchallenge.com/" target="_blank"&gt;http://www.phonegapwpchallenge.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re a seasoned PhoneGap developer new to Windows Phone, or if you&amp;rsquo;re new to PhoneGap, I encourage you check the pointers on how to get started on the challenge site: &lt;a href="http://www.phonegapwpchallenge.com/Home/Resources" target="_blank"&gt;http://www.phonegapwpchallenge.com/Home/Resources&lt;/a&gt;&lt;br /&gt;We have a &lt;a href="http://aka.ms/wp8PhoneGapTutorial" target="_blank"&gt;5-minute video tutorial&lt;/a&gt;&amp;nbsp;that shows you how to set up PhoneGap with Visual Studio, and a few other detailed tutorials. We&amp;rsquo;ve also collected tips &amp;amp; tricks to adapt WebKit-optimized HTML5 code to Internet Explorer 10, and how to give your app UI a Windows Phone look and feel.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re curious to see examples of published Windows Phone apps that were built using the PhoneGap framework, head over to the PhoneGap website to browse their &lt;a href="http://phonegap.com/app/windows_phone/" target="_blank"&gt;Windows Phone app gallery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ready, set, go!&lt;/p&gt;
&lt;p&gt;JC Cimetiere&lt;br /&gt;&lt;a href="http://www.twitter.com/jccim" target="_blank"&gt;@jccim&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588456&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>JC Cimetiere</name><uri>http://blogs.windows.com/members/JC-Cimetiere/default.aspx</uri></author></entry><entry><title>XAudio2 Performance and Battery Considerations for Windows Phone 8</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/17/xaudio2-performance-and-battery-considerations-for-windows-phone-8.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/17/xaudio2-performance-and-battery-considerations-for-windows-phone-8.aspx</id><published>2013-05-17T18:50:31Z</published><updated>2013-05-17T18:50:31Z</updated><content type="html">&lt;p&gt;&lt;em&gt;This blog post was authored by Joao Lucas Guberman Raza, a program manager on the Windows Phone team.&lt;/em&gt; &lt;p&gt;&lt;em&gt;- Adam&lt;/em&gt; &lt;hr&gt;  &lt;p&gt;In this post we cover important information for Windows Phone 8 developers who use the XAudio2 APIs, including best practices for battery performance. XAudio2 is a high-performance audio API available in Windows 8, Xbox 360, and Windows Phone 8. An app developer can use XAudio2 to create audio graphs in which they can treat each audio source in the graph as a distinct “voice.” The developer can apply different effects to each of the “voices.”  &lt;p&gt;In Windows Phone 8, the XAudio2 engine must be aligned with the life cycle of the app. This means that if an app is suspended, the app that’s using XAudio2 must force the XAudio2 engine to stop. When the app resumes/rehydrates, if it is designed to resume sounds using XAudio2, it must restart the XAudio2 engine. &lt;b&gt;Significant battery drain can occur if an app doesn’t stop the XAudio2 engine when the app is suspended, and the engine continues to run.&lt;/b&gt;  &lt;p&gt;To avoid this scenario, an app must call &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2.ixaudio2.stopengine%28v=vs.85%29.aspx" target="_blank"&gt;IXAudio2::StopEngine&lt;/a&gt; when the app is suspended as described in the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206944%28v=vs.105%29.aspx" target="_blank"&gt;Native audio APIs for Windows Phone 8&lt;/a&gt;. When the app resumes, it should call &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2.ixaudio2.startengine%28v=vs.85%29.aspx" target="_blank"&gt;IXAudio2::StartEngine&lt;/a&gt;. For Silverlight and Direct3D with XAML apps, the suspend/resume APIs are the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.deactivated(v=vs.105).aspx" target="_blank"&gt;Suspended&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.activated(v=vs.105).aspx" target="_blank"&gt;Activated&lt;/a&gt; events. For Direct3D native-only apps, the suspend/resume APIs are the &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.core.coreapplication.suspending.aspx" target="_blank"&gt;Suspending&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/library/windows/apps/windows.applicationmodel.core.coreapplication.resuming.aspx" target="_blank"&gt;CoreView Resuming&lt;/a&gt; events.  &lt;p&gt;The following code examples show you how you can do this in a pure native Direct3D app.  &lt;ol&gt; &lt;li&gt;First create the XAudio2 object, which handles the XAudio2 sound APIs.&lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:06515ff5-5e87-43fa-8f95-c86d2c82e8f1" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;IXAudio2* pXAudio = NULL ;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;( FAILED(XAudio2Create(&amp;amp;pXAudio, 0, XAUDIO2_DEFAULT_PROCESSOR) ) )&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ( FAILED(pXAudio-&amp;gt;CreateMasteringVoice( &amp;amp;pMasterVoice ) ) )&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/li&gt; &lt;li&gt;Then, on the suspending/resume events, set up the XAudio2 object to call &lt;b&gt;StopEngine&lt;/b&gt; and then &lt;b&gt;StartEngine&lt;/b&gt;. In the following example, we use the default events in the Windows Phone 8 SDK template for Direct3D native-only apps.&lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6872c5b6-ba6c-4433-81a5-3653266ceea5" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; WindowsApp::Initialize(CoreApplicationView^ applicationView)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;applicationView-&amp;gt;Activated +=&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; TypedEventHandler&amp;lt;CoreApplicationView^, IActivatedEventArgs^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &amp;amp;WindowsApp::OnActivated);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;CoreApplication::Suspending +=&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; EventHandler&amp;lt;SuspendingEventArgs^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &amp;amp;WindowsApp::OnSuspending);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;CoreApplication::Resuming +=&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; EventHandler&amp;lt;Platform::Object^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &amp;amp;WindowsApp::OnResuming);    &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; WindowsApp::OnSuspending(Platform::Object^ sender, SuspendingEventArgs^ args)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;pXAudio-&amp;gt;StopEngine() ;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; WindowsApp::OnResuming(Platform::Object^ sender, Platform::Object^ args)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;pXAudio-&amp;gt;StartEngine() ;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;With these steps, you can design your app to follow best practices for battery consumption when you use the XAudio2 APIs. It’s important to note that this is one of many best practices you can use in your app. To learn more, see also &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769544%28v=vs.105%29.aspx" target="_blank"&gt;local folder best practices for Windows Phone&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967552%28v=vs.105%29.aspx" target="_blank"&gt;localization best practices for Windows Phone&lt;/a&gt;, and &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202944%28v=vs.105%29.aspx" target="_blank"&gt;background agent best practices for Windows Phone&lt;/a&gt;.  &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588450&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term=" XAudio2" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/+XAudio2/default.aspx" /><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Tips to grow your app revenue through in-app purchase</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/16/tips-to-grow-your-app-revenue-through-in-app-purchase.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/16/tips-to-grow-your-app-revenue-through-in-app-purchase.aspx</id><published>2013-05-16T17:28:18Z</published><updated>2013-05-16T17:28:18Z</updated><content type="html">&lt;p&gt;Your Windows Phone 8 app presents three potential sources of revenue: app sales, in-app advertisement, and &lt;b&gt;in-app purchases&lt;/b&gt;.  &lt;p&gt;In a &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/09/increase-monetization-by-adding-in-app-purchase-to-your-apps.aspx" target="_blank"&gt;previous blog post&lt;/a&gt; I wrote about what you can sell in your Windows Phone 8 app by adding &lt;b&gt;in-app purchase&lt;/b&gt;. You can:  &lt;ul&gt; &lt;li&gt;Sell digital items.  &lt;li&gt;Offer consumables (items that are used a set number of times per purchase) and durables (items purchased and then owned by the buyer).  &lt;li&gt;Extend app features: add game levels, app features, and game currency, for example.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Today, I want to share recommendations and guidance to optimize the experience and effectiveness of &lt;b&gt;in-app purchase&lt;/b&gt; in your Windows Phone app.  &lt;h3&gt;In-app purchase trends in the Windows Phone store&lt;/h3&gt; &lt;p&gt;In-app purchase was added with the launch of Windows Phone 8 as a way to expand the value of apps and offer the possibility of additional revenue. It represents a growing revenue source in the Windows Phone Store: already 40% of the top 15 highest-grossing developers have apps that use in-app purchase.  &lt;p&gt;Consumer adoption of in-app purchase varies by market, depending on regional trends, consumer preferences, and other regional differences. Central Europe, China, France, Middle East and United States are the markets where consumers purchased most in-app items, as a percentage of app downloads, compared to other markets.  &lt;p&gt;&lt;b&gt;&lt;/b&gt; &lt;table cellspacing="1" cellpadding="2" width="600" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="193"&gt; &lt;p&gt;In-app items are used in all categories of Windows Phone 8 apps in the Store. The categories with highest use of in-app purchase are Games, Tools and Productivity and Books &amp;amp; Reference. So in-app purchase can be used in all types of apps.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="402"&gt; &lt;p align="center"&gt;&lt;b&gt;Use of in-app purchase by app category&lt;/b&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_10FD1F0F.png"&gt;&lt;img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_7075DF5C.png" width="370" height="209"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h3&gt;&lt;/h3&gt; &lt;h3&gt;Insight from the apps with highest in-app revenue&lt;/h3&gt; &lt;p&gt;We analyzed the &lt;b&gt;30 apps and games with the highest in-app purchase revenue&lt;/b&gt; in the Windows Phone Store, and found some interesting trends, common characteristics, and best practices. Here’s what we discovered.  &lt;p&gt;In-app purchase can add value to both games and non-game apps: the top grossing list includes 20 games (shooters, puzzles, racing, family, and other types of games) as well as 10 non-game apps (audio book, health/fitness, tools/productivity, navigation, and sports).  &lt;p&gt;&lt;u&gt;Start with a great app&lt;/u&gt;: All these top 30 apps are high quality, engaging apps with beautiful graphics and compelling sounds and music. All apps have 4-star ratings or higher, and user comments posted in the Store show that users love these apps, and therefore are willing to purchase the in-app items to enhance their experience. All these apps are easy to use and intuitive.  &lt;p&gt;&lt;u&gt;Use the ‘freemium’ business model&lt;/u&gt;: Most of these apps are free and offer in-app purchase extends the value of the app (90% of the apps are free and 10% are available in a paid version only). There are a few apps that are not free, and these apps are from developers with a brand name strong enough that users will know the quality or utility of the app. Very few of the apps, less than 5, use advertisement in the apps: most of these top developers focus only on in-app purchase to generate revenue.  &lt;p&gt;&lt;u&gt;Offer value even without purchase, and extend the app through in-app purchase&lt;/u&gt;: 28 of the 30 apps are useful even without in-app purchase. The apps provide great value even if no in-app purchase is used. In-app purchase is used to improve the app experience:  &lt;ul&gt; &lt;li&gt;The &lt;b&gt;games&lt;/b&gt; use in-app &lt;i&gt;consumables&lt;/i&gt; to offer game currency, which in turn is used to purchase items in the game. Users can earn this currency through gameplay, or accelerate gameplay through purchase.  &lt;li&gt;&lt;b&gt;Non-games&lt;/b&gt; offer content through &lt;i&gt;consumables&lt;/i&gt; and &lt;i&gt;durables&lt;/i&gt; (audio books, book chapters, navigation maps, more sounds) or offer additional features through &lt;i&gt;durable&lt;/i&gt; in-app purchase (for example additional features like online backup).  &lt;li&gt;Three of the five apps that have ads use in-app purchase as an option for the user to remove the ads.  &lt;li&gt;Two apps use in-app purchase to unlock the full version or new levels. These apps require in-app purchase to provide value beyond the introductory level or content.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt; &lt;table cellspacing="1" cellpadding="2" width="689" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="517"&gt; &lt;p&gt;&lt;u&gt;Integrate in-app purchase seamlessly&lt;/u&gt;: The app developers use in-app purchase as a natural extension of the app, not as an afterthought. When using these apps, users feel that they are getting a significant additional value of value through the in-app purchase, and don’t feel forced to buy the app items to be able to use the app. In-app purchase is shown on simple, clear screens that show the value of what is being purchased, and frequently offer many options so the user can choose the best one for their budget and needs.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="167"&gt; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_09057CAD.png"&gt;&lt;img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_1A75DD85.png" width="135" height="136"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;&lt;u&gt;Make the app available also on Windows Phone 7&lt;/u&gt;: In-app purchase is only available on Windows Phone 8, so many of these top apps have created a XAP for Windows Phone 7 and a XAP for Windows Phone 8, to offer the app on Windows Phone 7:  &lt;ul&gt; &lt;li&gt;10 of these apps are available for &lt;b&gt;free&lt;/b&gt; on Windows Phone 7, providing the same functionality as the Windows Phone 8 versions, without in-app purchase. A few of these apps added mobile ads to provide ad revenue in place of the in-app revenue.  &lt;li&gt;5 of these apps have a &lt;b&gt;paid&lt;/b&gt; Windows Phone 7 version that offers the capabilities of the Windows Phone 8 version with all the in-app purchases.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;Rebellion: Dredd vs Zombies and Guns 4 Hire&lt;/h3&gt; &lt;p&gt;I interviewed Chris Kingsley, CTO of Rebellion, to understand more about their Windows Phone games and how they use in-app purchase. Rebellion has two shooter games on Windows Phone: &lt;b&gt;&lt;a href="http://www.windowsphone.com/s?appid=730bcecb-7e82-4ea7-8280-7315fbdb5a8e" target="_blank"&gt;Dredd vs Zombies&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://www.windowsphone.com/s?appid=9f98321d-4ff3-4a48-84ad-f92e97c12e5e" target="_blank"&gt;Guns 4 Hire&lt;/a&gt;&lt;/b&gt;. Both games use in-app purchase, and are among the highest grossing free Windows Phone games.  &lt;p&gt;Rebellion makes games for many platforms, including PC games and Windows Store games. Chris shared with me the principles that he thinks have made in-app purchase successful in their Windows Phone games:  &lt;ul&gt; &lt;li&gt;The game has to be great.  &lt;li&gt;The game has to be designed with in-app purchase from the ground up.  &lt;li&gt;The game has to balance free versus paid content.  &lt;li&gt;Test, test, test, with as many people as possible.&lt;/li&gt;&lt;/ul&gt; &lt;table cellspacing="1" cellpadding="2" width="683" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="300"&gt; &lt;p&gt;&lt;b&gt;Dredd vs Zombies&lt;/b&gt; was designed for in-app purchase from the ground up: the game is playable from beginning to end without in-app purchase. In-app purchase is used to sell credits that are used to purchase items that make the game more fun and which accelerate leveling up.  &lt;p&gt;The items are designed so they genuinely feel like they are part of the game, and they provide a better play experience.&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="378"&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_40D7C0D0.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_5FAE34AE.png" width="380" height="214"&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Dredd also offers items to try out, so players can get a feel for the game items that can be purchased. This also helps increase player engagement.&lt;/p&gt; &lt;table cellspacing="1" cellpadding="2" width="683" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="300"&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_77656C14.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_03F31931.png" width="366" height="206"&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="378"&gt; &lt;p&gt;&lt;b&gt;Guns 4 Hire&lt;/b&gt; offers a variety of in-app purchase items. The player has different options to choose from, and isn’t required to purchase to play the game.  &lt;p&gt;The game shows the items for purchase in a very effective way: a large display for each item, a price, and a short and clear description of what you get with the purchase. &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Chris from Rebellion mentioned they have another game coming up this month for Windows Phone – Zombie HQ – which builds on the shooter template by allowing players to customize their own HQ between missions.  &lt;h3&gt;Adding in-app purchase to your app&lt;/h3&gt; &lt;p&gt;&lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/jj206949(v=vs.105).aspx" target="_blank"&gt;In-app purchase&lt;/a&gt; can enhance the app experience and increase your revenue, so if you think that you have a great app or game that is a good candidate for in-app purchase, add it today! Here’s how to get started:  &lt;ul&gt; &lt;li&gt;Understand &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/09/increase-monetization-by-adding-in-app-purchase-to-your-apps.aspx" target="_blank"&gt;what can be sold through in-app purchase and how to add it&lt;/a&gt;.  &lt;li&gt;Define how you would add in-app purchase to your Visual Studio project:  &lt;ul&gt; &lt;li&gt;Add it to an existing Windows Phone 7 project (&lt;a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Inside-Windows-Phone-45--Adding-In-App-Purchase-as-a-light-up-feature-to-your-Windows-Phone-7-Games" target="_blank"&gt;through reflection&lt;/a&gt;) or create a new Windows Phone 8 project that uses in-app purchase natively.  &lt;li&gt;Offer a trial/paid version for Windows Phone 7 users.&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Add the in-app purchase to your code.  &lt;li&gt;Add the in-app purchase items through Dev Center.  &lt;li&gt;Test using the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681689(v=vs.105).aspx" target="_blank"&gt;different available testing techniques&lt;/a&gt;, and share the game with as many users as possible to polish the in-app purchase experience.  &lt;li&gt;Publish your app in the Store!&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Please post your feedback or questions about in-app purchase.  &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588447&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Bernardo Zamora</name><uri>http://blogs.windows.com/members/Bernardo-Zamora/default.aspx</uri></author><category term=" In-App Purchase" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/+In_2D00_App+Purchase/default.aspx" /><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Latest Windows Phone app submission improvements</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/10/latest-windows-phone-app-submission-improvements.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/10/latest-windows-phone-app-submission-improvements.aspx</id><published>2013-05-10T18:12:43Z</published><updated>2013-05-10T18:12:43Z</updated><content type="html">&lt;p&gt;As Todd mentioned in his &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/expanded-developer-opportunity-new-payout-markets-and-billing-connections.aspx" target="_blank"&gt;post last week&lt;/a&gt;, I’d like to share some details about the latest improvements we’ve made to &lt;a href="http://dev.windowsphone.com/" target="_blank"&gt;Dev Center&lt;/a&gt; to address your feedback. &lt;p&gt;&lt;b&gt;Multiple XAP management during app submission&lt;/b&gt; &lt;p&gt;As more developers update their apps to take advantage of new Windows Phone 8 functionality, managing multiple XAP files for a single app becomes an increasingly common scenario. Many apps have different XAPs for Windows Phone 7.x and Windows Phone 8.0. Dev Center allows each to be serviced independently. Many of you asked for a simplified way to manage XAPs, so we set out to streamline the experience, make it easier to keep track of which XAPs exist for your app, and to clearly identify which XAP you’re acting on when you make a change. Here’s the new UI for managing XAPs in an app submission: &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_3FC7C8EB.png"&gt;&lt;img title="clip_image002" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_460E9F79.png" width="482" height="161"&gt;&lt;/a&gt; &lt;p&gt;When you update an existing app, you’ll see that all of the XAPs for your app are already present in the submission. You can replace or delete one or more of the existing XAPs, add new ones, or leave them unchanged. Typically you’ll only want to add a new XAP when you’re either submitting a new app or adding support for a new platform version to an existing app. (For more details, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/help/jj631569(v=vs.105).aspx" target="_blank"&gt;Guidance for app management for Windows Phone&lt;/a&gt;). Be careful when you delete a XAP in a submission because it will be removed from your app and no longer available in Store after the submission is published. You can think of this table as showing all XAPs that will be available for your app when the submission is published. &lt;p&gt;After you’ve established the XAPs that you want for your app, you can select each XAP individually by clicking the button beside its name, and then add/edit the Store listing info for each language that the XAP supports. &lt;p&gt;&lt;b&gt;MPNS certificate management&lt;/b&gt; &lt;p&gt;To use &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/hh202945(v=vs.105).aspx" target="_blank"&gt;authenticated push notifications&lt;/a&gt; from the Microsoft Push Notification Service (MPNS), your app needs to be associated with the authentication certificate that’s used by your service. You can manage certificates at an account level in Dev Center and then choose from those certificates when you submit a new app or update an existing app. &lt;p&gt;We’ve refreshed the certificate management UI to make it easier to see all of the certificates that you’ve uploaded, and to differentiate between them: &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_577F0051.png"&gt;&lt;img title="clip_image004" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_16DCB3E2.png" width="482" height="290"&gt;&lt;/a&gt; &lt;p&gt;We’ve also updated the certificate selection UI on the &lt;b&gt;App info&lt;/b&gt; submission page to help you select the correct certificate. Remember that if you’re updating an app to associate it with an updated certificate, MPNS requires that the &lt;b&gt;Subject Name CN&lt;/b&gt; value remains the same. Dev Center will enforce this restriction to ensure that push notifications continue to work after your update is published. &lt;p&gt;&lt;b&gt;Review submission&lt;/b&gt; &lt;p&gt;When you create a submission for a new or existing app in Dev Center, that submission will remain until you submit or delete it. This means that you can make changes to a submission on different days and from different browser windows and we’ll keep track of them. This can be a powerful feature as you don’t have to worry about losing changes by closing your browser or switching computers. However, this also makes it important to check your work before final submission to make sure you’re aware of all of the changes. We’ve created a new review page to help you do just that. Now you’ll have the opportunity to check the review page for a submission to be sure you are satisfied with the changes that you’ve made before you submit your app. Here’s an example: &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_0427BA2B.png"&gt;&lt;img title="clip_image006" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image006" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image006_5F00_thumb_5F00_43856DBB.png" width="482" height="432"&gt;&lt;/a&gt; &lt;p&gt;The review page is organized into three sections: &lt;ol&gt; &lt;li&gt;&lt;b&gt;Submission&lt;/b&gt;: Displays the publish option chosen, along with errors and warnings if applicable.&lt;/li&gt; &lt;li&gt;&lt;b&gt;App&lt;/b&gt;: Displays the changes made at the app level. By default, this section shows only the changes you made, but you can clear the &lt;b&gt;Only show changes I made&lt;/b&gt; box to see the full summary.&lt;/li&gt; &lt;li&gt;&lt;b&gt;XAPs&lt;/b&gt;: Displays a list of XAPs that will be published for your app.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Here’s how the page looks if you choose to see the full summary of app-level information: &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_30D07404.png"&gt;&lt;img title="clip_image008" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="clip_image008" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image008_5F00_thumb_5F00_702E2794.png" width="482" height="544"&gt;&lt;/a&gt; &lt;p&gt;We made these changes to enhance your experience with Dev Center. As always, please keep adding your feedback to the &lt;a href="http://wpdev.uservoice.com/forums/110711-dev-center-store" target="_blank"&gt;Windows Phone Dev Center UserVoice forum&lt;/a&gt;. We appreciate hearing from you and your feedback helps us shape future development priorities. &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588415&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Rushmi Malaviarachchi</name><uri>http://blogs.windows.com/members/Rushmi-Malaviarachchi/default.aspx</uri></author><category term="Dev Center" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Dev+Center/default.aspx" /><category term=" News and Information" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/+News+and+Information/default.aspx" /></entry><entry><title>Inside Windows Phone – Windows Phone and HTML5</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/09/inside-windows-phone-windows-phone-and-html5.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/09/inside-windows-phone-windows-phone-and-html5.aspx</id><published>2013-05-09T18:41:20Z</published><updated>2013-05-09T18:41:20Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Matthias Shapiro&lt;/i&gt;&lt;i&gt;, a technical evangelist at Microsoft.&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;- Larry&lt;/i&gt;  &lt;hr&gt;  &lt;p&gt;One of the exciting things and lesser known features in Windows Phone development is how it’s the perfect place to develop apps using HTML5. Jeff Burtoft, an HTML5 technical evangelist with Microsoft, joins us this week to talk about the flexibility and cross-platform power of HTML5 in Windows Phone. The in-depth example that we cover in the video is a project called YetiBowl, a standards-compliant HTML5 game that runs flawlessly on the web, as a Windows 8 app, and as a Windows Phone 8 app. For more information, see &lt;a href="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Developing-in-HTML5-and-Javascript-for-Windows-Phone" target="_blank"&gt;Developing in HTML5 and Javascript for Windows Phone&lt;/a&gt;. &lt;p&gt;&lt;iframe style="height: 340px; width: 660px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/Developing-in-HTML5-and-Javascript-for-Windows-Phone/player?w=660&amp;amp;h=340" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588409&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Larry Lieberman</name><uri>http://blogs.windows.com/members/Larry-Lieberman/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Testing your Windows Phone app – Part 1</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/testing-your-windows-phone-app-part-1.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/testing-your-windows-phone-app-part-1.aspx</id><published>2013-05-03T20:44:00Z</published><updated>2013-05-03T20:44:00Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Craig Horsfield, a Senior SDET on the Windows Phone Test and Operations team.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Testing your app throughout the development process helps to ensure that your app has a high level of performance and quality. Testing also helps to make sure your app is effectively represented in the Windows Phone Store. A small investment in the key areas described in this post can give your app positive results in your market, and help bypass common errors early in the development process. This document will outline testing approaches for key test areas that you should consider.&lt;/p&gt;
&lt;h4&gt;Beta testing&lt;/h4&gt;
&lt;p&gt;After you have thoroughly tested your app using the emulator and on a Windows Phone device, it&amp;rsquo;s important to also test your app as a beta app. Submit your beta app for beta distribution, where you can continue to test your app based on the beta and code flow experience. Additionally, you can include beta tester to help review your app. For more info, see &lt;a href="http://msdn.microsoft.com/library/windowsphone/help/jj215598(v=vs.105).aspx" target="_blank"&gt;Beta testing your app and in-app products&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Installation and launch&lt;/h4&gt;
&lt;p&gt;Testing your app&amp;rsquo;s install and launch process is a vital area that can often be overlooked. By following these steps, you can minimize installation and launch issues that are not handled by your app. There are a few scenarios to consider when testing the initial launch experience and resume paths scenarios. One of these is the new Windows Phone 8 &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/jj735579(v=vs.105).aspx" target="_blank"&gt;fast app resume&lt;/a&gt;&lt;b&gt;&lt;/b&gt;scenario that a Windows Phone 8 app can opt into.&lt;/p&gt;
&lt;p&gt;The following tests can help verify your app&amp;rsquo;s install, launch, and resume functions.&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="0" cellpadding="4"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="239" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="359" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="239" valign="top"&gt;
&lt;p&gt;1. Verify the app on the first launch.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="359" valign="top"&gt;
&lt;p&gt;Note any End User License Agreement (EULA) and any other one-time notifications that appear in the launch UI.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="239" valign="top"&gt;
&lt;p&gt;2. Reinstall the app.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="359" valign="top"&gt;
&lt;p&gt;Verify that all one-time notifications appear again on a subsequent install and launch.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="239" valign="top"&gt;
&lt;p&gt;3. Start the app, and then return to the Windows Phone Start screen.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="359" valign="top"&gt;
&lt;p&gt;Launch the app again from a Live Tile, or from the phone&amp;rsquo;s App list.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;middot; Verify the default scenario, in which the old app is terminated, and a new instance of the app starts.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;middot; For Windows Phone 8 apps, if the app uses &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/jj735579(v=vs.105).aspx" target="_blank"&gt;fast app resume for Windows Phone 8&lt;/a&gt;, in which ActivationPolicy="Resume", then the app resumes instead of starting a new instance. Verify that the app returns to the correct page in the app.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Fast Application Switching (FAS) and tombstoning&lt;/h4&gt;
&lt;p&gt;When a Windows Phone app is moved to the back stack based on the app&amp;rsquo;s navigation history, the app is suspended. When the app resumes, it returns to the foreground. Apps on the back stack are tombstoned when there is resource pressure on the device. The exception occurs when &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681691(v=vs.105).aspx" target="_blank"&gt;running location-tracking apps in the background for Windows Phone 8&lt;/a&gt;. Windows Phone 8 location-tracking apps continue to run in this scenario. Your app needs to handle both of these cases, and you should test this function in your app. FAS occurs when the user leaves the app to go to &lt;b&gt;Start&lt;/b&gt;, &lt;b&gt;Search&lt;/b&gt;, or some other path based on the launchers and choosers you&amp;rsquo;ve used in your app to support navigation. For more info, see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202866(v=vs.105).aspx#BKMK_FastApplicationSwitching" target="_blank"&gt;Multitasking for Windows Phone&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff817008(v=vs.105).aspx" target="_blank"&gt;App activation and deactivation for Windows Phone&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following tests can help verify your app&amp;rsquo;s FAS and tombstoning functions.&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="0" cellpadding="4"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;1. Test the phone&amp;rsquo;s &lt;b&gt;Start&lt;/b&gt; button and &lt;b&gt;Back&lt;/b&gt; button.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;Launch the app, and then press the &lt;b&gt;Start&lt;/b&gt; button to verify that the Windows Phone start page appears. Press the &lt;b&gt;Back&lt;/b&gt; button to resume the app. Verify that the app resumes in the required time, and in the state it was in before you navigated away from the app.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;2. Test the &lt;b&gt;Camera&lt;/b&gt; button.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;Launch the app, and then press the &lt;b&gt;Camera&lt;/b&gt; button to verify that the camera starts. Press the &lt;b&gt;Back&lt;/b&gt; button to resume the app. Verify that the app resumes in the required time (10 seconds) and that is in the state it was before you navigated away from the app.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;3. Test locking the phone using the &lt;b&gt;Power&lt;/b&gt; button.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;Launch the app, and then press the &lt;b&gt;Power&lt;/b&gt; button to lock the phone. Unlock the phone, and then verify that the app resumes in the required time, and that the app is in the state it was in before you locked the phone.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;4. Perform the same test cases for FAS and tombstone state.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;To force a tombstone path, in Visual Studio, in the project &lt;b&gt;Properties&lt;/b&gt; windows, click the &lt;b&gt;Debug&lt;/b&gt; tab, and then select &lt;b&gt;Tombstone upon deactivation while debugging&lt;/b&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;5. Test deactivating and closing your app.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="349" valign="top"&gt;
&lt;p&gt;Make sure the app doesn&amp;rsquo;t take too long to process the &lt;b&gt;Application_Deactivated&lt;i&gt; &lt;/i&gt;&lt;/b&gt;and &lt;b&gt;Application_Closing&lt;/b&gt;&lt;b&gt; &lt;/b&gt;events, so that the app can save its state correctly. Avoid doing a lot of work in the &lt;b&gt;Application_Closing&lt;/b&gt; code path, because processing time and access to the UI thread are limited.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="249" valign="top"&gt;
&lt;p&gt;6. Test background execution of your app.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="428" valign="top"&gt;
&lt;p&gt;For continued background execution in location tracking apps, you&amp;rsquo;ll want to test the app&amp;rsquo;s &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.phone.shell.phoneapplicationservice.runninginbackground(v=vs.105).aspx" target="_blank"&gt;RunningInBackground&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;event handler. In addition to running the preceding tests, check for the following conditions:&lt;/p&gt;
&lt;p&gt;&amp;middot; Background execution occurs when the app enters the back stack.&lt;/p&gt;
&lt;p&gt;&amp;middot; Start the app and move it to the back stack and resume the app. Verify that the app was not suspended and that it continued to run.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;App navigation&lt;/h4&gt;
&lt;p&gt;You should navigate all paths in the app to test its navigation. You especially want to be sure that your app exits and handles navigation interruptions as intended.&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="0" cellpadding="4"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="277" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="321" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="277" valign="top"&gt;
&lt;p&gt;1. Test the &lt;b&gt;Back&lt;/b&gt; button.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="321" valign="top"&gt;
&lt;p&gt;Your app should exit when you press the &lt;b&gt;Back&lt;/b&gt; button on the top most page.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="277" valign="top"&gt;
&lt;p&gt;2. Test navigation interruptions.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="404" valign="top"&gt;
&lt;p&gt;Your app should not try to initiate new navigation while your app is currently navigating. Test rapid navigations in the app, and navigating in the app while pages are loading.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Don&amp;rsquo;t throw unhandled exceptions to exit the app at a page that isn&amp;rsquo;t at the top of the page stack. Instead, navigate over the page by &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.navigation.navigationservice.removebackentry(v=vs.105).aspx" target="_blank"&gt;removing&lt;/a&gt; it from the back stack; you don&amp;rsquo;t want to display the page on the exit path, or call API available in &lt;a href="http://msdn.microsoft.com/en-US/library/windowsphone/develop/system.windows.application.terminate(v=vs.105).aspx" target="_blank"&gt;Application.Terminate&lt;/a&gt;in Windows Phone 8 apps. This triggers an app crash, and a Watson error report. You might see the crashes indicated in the app reports available in the Store.&lt;/p&gt;
&lt;h4&gt;Launchers and choosers&lt;/h4&gt;
&lt;p&gt;Launchers in your Windows Phone app give users the ability to perform common tasks, such as launching the Bing Maps app, launching Media Player, or launching the Store or Marketplace. Launchers do not return data or status to your app. With a chooser, on the other hand, users can return data to your app. For instance, users can choose return info from the Contacts app. For all &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769542(v=vs.105).aspx" target="_blank"&gt;launchers and choosers&lt;/a&gt;, test your app to be sure the launcher or chooser works correctly, and that it doesn&amp;rsquo;t trigger related errors.&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="0" cellpadding="4"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="270" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="328" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="270" valign="top"&gt;
&lt;p&gt;1. Test navigating to and from the launcher or chooser.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="328" valign="top"&gt;
&lt;p&gt;In the app, navigate to the launcher or chooser. Immediately go back to the previous page or screen. The app should return to the page and state the navigation was initiated from.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="270" valign="top"&gt;
&lt;p&gt;2. Test the complete scenario when using the launcher or chooser.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="328" valign="top"&gt;
&lt;p&gt;In the app, navigate to the launcher or chooser. Complete the scenario, i.e., select a photo or send mail. When the action is completed, the app should return to the preceding app state.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="270" valign="top"&gt;
&lt;p&gt;3. Test FAS scenarios when navigating to a launcher or chooser.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="414" valign="top"&gt;
&lt;p&gt;Navigating to a launcher or chooser can triggers an FAS scenario. See the related section earlier in this post for additional test scenarios related to FAS.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;UI and layout&lt;/h4&gt;
&lt;p&gt;You need to test to make sure all elements of your UI and their layout work as intended, and meet app submission requirements, such as supporting Light Theme and Dark Theme. Test each control you use in your app, and the overall appearance of your app on the phone.&lt;/p&gt;
&lt;p&gt;The following tests will help verify your app&amp;rsquo;s UI and layout.&lt;/p&gt;
&lt;table style="width: 600px;" border="1" cellspacing="0" cellpadding="4"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Test scenario&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;&lt;b&gt;Details&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;1. Test your app in the Light Theme.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;Ensure all text is readable and all UI is visible.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;2. Test your app in the Dark Theme.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;Ensure all text is readable and all UI is visible.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;3. Test the UI for text clipping.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;You may need to set the text to wrap or make other layout changes.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;4. Test your Splash screen display.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;If you use a splash screen in your app, verify that it&amp;rsquo;s visible when the app starts, and that it displays for the expected time.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;5. Test each animation.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="329" valign="top"&gt;
&lt;p&gt;Ensure all animations are smooth. If they appear slow or stop unexpectedly, see if the app is doing excessive work on a background task or thread.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="269" valign="top"&gt;
&lt;p&gt;6. Test each screen orientation.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="413" valign="top"&gt;
&lt;p&gt;Verify that the layout looks as you intended in portrait and landscape orientations, and that each page can display and move between orientations.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In &lt;a title="part 2" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/21/testing-your-windows-phone-app-part-2.aspx"&gt;part 2&lt;/a&gt; of this series, we&amp;rsquo;ll discuss additional areas and testing approaches to consider related to &lt;i&gt;push notification&lt;/i&gt;; &lt;i&gt;Live Tiles&lt;/i&gt;; &lt;i&gt;background agents&lt;/i&gt;; &lt;i&gt;media, audio, and video&lt;/i&gt;; &lt;i&gt;geolocation&lt;/i&gt;, and &lt;i&gt;resource usage and performance&lt;/i&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588376&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author></entry><entry><title>Expanded developer opportunity – new payout markets and billing connections</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/expanded-developer-opportunity-new-payout-markets-and-billing-connections.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/03/expanded-developer-opportunity-new-payout-markets-and-billing-connections.aspx</id><published>2013-05-03T16:02:00Z</published><updated>2013-05-03T16:02:00Z</updated><content type="html">&lt;p&gt;We continue to take steps forward on the path to establish a Windows Phone ecosystem characterized by quality, scale, and developer opportunity. We are seeing strong results for the ecosystem since the launch of Windows Phone 8 with more than a 100% increase in app downloads and nearly 140% increase in paid app revenue. Today I have a few enhancements to announce that can help you expand your app distribution reach and revenue opportunities.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Diverse phone offering and distribution&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nokia&amp;rsquo;s Lumia 720 and 520/521 phones have just begun to ship across the globe, giving potential Windows Phone customers additional choices in form factor, phone capabilities, and price points. This review from CNET (&lt;a href="http://reviews.cnet.co.uk/mobile-phones/nokia-lumia-520-review-50010925/" target="_blank"&gt;Nokia Lumia 520 review: One of the best budget phones around&lt;/a&gt;) pretty much sums up the sentiment on the new device, stating the Lumia 520 packs an &amp;ldquo;impressive punch&amp;rdquo;&lt;i&gt; &lt;/i&gt;both in terms of hardware quality and value for the money. &lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;These phones will be available in new markets and distribution channels, given their budget-friendly pricing. In fact, this week the Nokia Lumia 521 paired with an offer from US mobile operator T-Mobile to make its debut on the popular US &lt;a href="http://news.cnet.com/8301-1035_3-57581407-94/nokias-budget-lumia-521-phone-starts-selling-april-27-for-$150/" target="_blank"&gt;Home Shopping Network&lt;/a&gt;, a first for Windows Phone.&lt;/p&gt;
&lt;p&gt;The industry continues to recognize Windows Phone steady growth. According to &lt;a href="http://www.kantarworldpanel.com/global/News/news-articles/Windows-sees-steady-growth-in-Q1-2013" target="_blank"&gt;Kantar Worldpanel ComTech&lt;/a&gt;, Windows Phone has already increased its share of all smartphone sales by nearly 2% compared to last year and is attracting first-time smartphone buyers. With over half of the US market (and much of the world) still owning a feature phone, it&amp;rsquo;s likely many will upgrade over the coming year, which ultimately will contribute to growth for Windows Phone.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Six new developer payout markets&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This week we will enable developer payout in 6 new markets via &lt;a href="http://dev.windowsphone.com/" target="_blank"&gt;Dev Center&lt;/a&gt; bringing the total markets supporting developer payout to 122. The new markets include: Afghanistan, Iraq, Montenegro, Serbia, Timor-Leste, and Ukraine. Developers in these 6 markets will now be able to submit both free and paid apps to the Windows Phone Store to reach customers in 191 &lt;a title="markets" href="http://msdn.microsoft.com/library/windowsphone/help/jj215599(v=vs.105).aspx" target="_blank"&gt;markets&lt;/a&gt;. &lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New Mobile Operator Billing Connections&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;We have added 15 new mobile operator billing partners since August 2012, bringing the total number of supported partners to &lt;a title="25 in 19 markets" href="http://msdn.microsoft.com/library/windowsphone/help/jj215902(v=vs.105).aspx" target="_blank"&gt;25 in 19 markets&lt;/a&gt;, surpassing Google Play.&amp;nbsp; Mobile operator billing gives consumers a payment option with significantly higher conversion rates than credit cards.&amp;nbsp; On average, an app developer earns 3x more per active user on a paid app published in a mobile operator billing-enabled market than a market that only supports credit card. We will continue to expand this footprint and you&amp;rsquo;ll be seeing many more connections in the near future.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Simplified app submissions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Finally, I want to point out that we continue to incorporate your feedback and streamline the app submission process. Recently the Dev Center team enabled cancelling submissions, rotating screenshots and automatic screenshot resizing &amp;ndash; all items you indicated needed improvement. You can read more about these enhancements on the &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/05/more-dev-center-features-we-re-listening.aspx" target="_blank"&gt;Windows Phone Developer blog&lt;/a&gt;. Next, we&amp;rsquo;ll add the ability to review your app submission, giving you a chance to make sure everything looks right, before you actually submit. I encourage you to watch for a post from Rushmi Malaviarachchi in the coming week that will provide details on all the latest improvements.&lt;/p&gt;
&lt;p&gt;If you haven&amp;rsquo;t yet developed an app for Windows Phone or if you haven&amp;rsquo;t updated your app recently, I&amp;rsquo;d like to encourage you to visit the &lt;a href="https://dev.windowsphone.com/" target="_blank"&gt;Dev Center&lt;/a&gt; to download the SDK and get started. There&amp;rsquo;s never been a better time to develop for Windows Phone.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588374&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Todd Brix</name><uri>http://blogs.windows.com/members/Todd-Brix/default.aspx</uri></author><category term="News and Information" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/News+and+Information/default.aspx" /></entry><entry><title>Inside Windows Phone – Data binding</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/02/inside-windows-phone-data-binding.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/05/02/inside-windows-phone-data-binding.aspx</id><published>2013-05-02T20:48:33Z</published><updated>2013-05-02T20:48:33Z</updated><content type="html">&lt;p&gt;Data binding is one of the fundamental concepts used for good Windows Phone application design, but can be difficult to grasp for newcomers. The core concept is this: No one wants to manually update the user interface elements. It’s best to have the UI automatically reflect the state of the application. Data binding helps us do this. We can work exclusively on our Windows Phone UI, bind the values in the UI and then work on the inner logic of the application knowing that all the updates are being reflected to the user. Because of the power in the model, as you see in this video, there are some really great "fringe" benefits in terms of interaction and design that we get, along with the core benefits. For more information, see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/cc278072(v=vs.105).aspx" target="_blank"&gt;Data binding for Windows Phone&lt;/a&gt;.  &lt;p&gt;&lt;iframe style="height: 400px; width: 600px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP54--Windows-Phone-Data-Binding-and-the-Magic-of-XAML/player?w=600&amp;amp;h=400" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588370&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Larry Lieberman</name><uri>http://blogs.windows.com/members/Larry-Lieberman/default.aspx</uri></author><category term="Inside Windows Phone" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Inside+Windows+Phone/default.aspx" /></entry><entry><title>Using the Windows Phone 8.0 SDK to localize Windows Phone OS 7.1 projects</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/24/using-the-windows-phone-8-0-sdk-to-localize-windows-phone-os-7-1-projects.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/24/using-the-windows-phone-8-0-sdk-to-localize-windows-phone-os-7-1-projects.aspx</id><published>2013-04-24T19:00:17Z</published><updated>2013-04-24T19:00:17Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Dan Zucker, a program manager on the Windows Phone team.&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;  &lt;hr&gt;  &lt;p&gt;Here are the quick steps you need to take to set up a Windows Phone OS 7.1 Visual Studio project to use the techniques and features described in the blog posts &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank"&gt;Tips for Localizing Windows Phone 8 XAML Apps - Part1&lt;/a&gt; and &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank"&gt;Tips for localizing Windows Phone apps – Part 2&lt;/a&gt; to localize apps. Note that throughout these steps, you must replace &lt;i&gt;&amp;lt;PROJECT_NAME_SPACE&amp;gt;&lt;/i&gt; with your project name.  &lt;ol&gt; &lt;li&gt;Follow the steps in the &lt;i&gt;Standard Localizing Steps&lt;/i&gt; section described in &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank"&gt;Tips for Localizing Windows Phone 8 XAML Apps - Part1&lt;/a&gt; to make your single-language app ready for localization.  &lt;li&gt;Update the &lt;i&gt;&amp;lt;Application.Resources&amp;gt;&lt;/i&gt; node in the &lt;b&gt;App.xaml&lt;/b&gt; file with the following code, where &lt;i&gt;&amp;lt;PROJECT_NAME_SPACE&amp;gt; &lt;/i&gt;is replaced with your project name:&lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f48d8cee-1986-4d56-9f0c-e51e730b2868" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;XAML&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;&amp;lt;!--Application Resources--&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Application.Resources&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;local&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;LocalizedStrings&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; xmlns&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;local&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;clr-namespace:&amp;lt;PROJECT_NAME_SPACE&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Key&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&amp;quot;LocalizedStrings&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Application.Resources&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;br&gt;The &lt;b&gt;LocalizedStrings&lt;/b&gt; Application Resource, along with the &lt;b&gt;LocalizedStrings&lt;/b&gt; class added in the next step provides a globally accessible means for your app to access its project’s localized resources. Although there are simpler ways to achieve that goal, the method described here provides the benefits of strong typing, including resource visibility in IntelliSense and compilation validation during coding.  &lt;li&gt;Add a new class file named &lt;b&gt;LocalizedStrings.cs&lt;/b&gt; to the project. Replace the existing code with the following, where &lt;i&gt;&amp;lt;PROJECT_NAME_SPACE&amp;gt; &lt;/i&gt;is replaced with your project name: &lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c77b715b-aee6-4f79-8f1b-f08505322f16" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;lt;PROJECT_NAME_SPACE&amp;gt;.Resources;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;lt;PROJECT_NAME_SPACE&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Provides access to string resources.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LocalizedStrings&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppResources&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _localizedResources = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppResources&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppResources&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; LocalizedResources { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _localizedResources; } }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;li&gt;Search the entire project for localized string resources. Update the project namespace as needed by including the following code, where &lt;i&gt;&amp;lt;PROJECT_NAME_SPACE&amp;gt; &lt;/i&gt;is replaced with your project name:&lt;b&gt; &lt;br&gt;&lt;/b&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:22126b98-1384-4cbf-97b0-6e9bc572af8f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;lt;PROJECT_NAME_SPACE&amp;gt;.Resources;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;li&gt;Add a folder named &lt;b&gt;Resources&lt;/b&gt; to the project.  &lt;li&gt;Add a new resources file named &lt;b&gt;AppResources.resx&lt;/b&gt; file to the new &lt;b&gt;Resources&lt;/b&gt; folder.  &lt;li&gt;Add the language initialization resource strings &lt;b&gt;ResourceFlowDirection&lt;/b&gt; and &lt;b&gt;ResourceLanguage&lt;/b&gt; to &lt;b&gt;AppResources.resx&lt;/b&gt;, as described in &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank"&gt;Tips for Localizing Windows Phone 8 XAML Apps - Part1&lt;/a&gt;. Typically, the value of the resource strings should be set to meet the traditional flow direction and locale of the neutral language (the one that a viewer of your app will see if they have selected a phone language that is not supported by your app).&lt;br&gt;&lt;br&gt; &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="216"&gt; &lt;p align="center"&gt;&lt;b&gt;Name&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="142"&gt; &lt;p align="center"&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="190"&gt; &lt;p align="center"&gt;&lt;b&gt;Comment&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="216"&gt; &lt;p&gt;ResourceFlowDirection&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="142"&gt; &lt;p&gt;LeftToRight&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="190"&gt; &lt;p&gt;Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="216"&gt; &lt;p&gt;ResourceLanguage&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="142"&gt; &lt;p&gt;en-US&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="190"&gt; &lt;p&gt;Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;li&gt;Change the access modifier of &lt;b&gt;AppResources.resx&lt;/b&gt; to "Public" by using the &lt;b&gt;Access Modifier&lt;/b&gt; drop-down list at the top of the resource editor.&lt;br&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_5C25455D.jpg"&gt;&lt;img title="clip_image002" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image002" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image002_5F00_thumb_5F00_22360271.jpg" width="623" height="276"&gt;&lt;/a&gt;  &lt;li&gt;Save and rebuild the solution.  &lt;li&gt;Add the following references to &lt;b&gt;App.xaml.cs&lt;/b&gt;, where &lt;i&gt;&amp;lt;PROJECT_NAME_SPACE&amp;gt; &lt;/i&gt;is replaced with your project name:&lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f3d7bcb3-ea2f-4e04-9888-b2ad5806e77d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;lt;PROJECT_NAME_SPACE&amp;gt;.Resources;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.Threading;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.Globalization;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.Diagnostics;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System.Windows.Markup;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;li&gt;Add the &lt;b&gt;InitializeLanguage&lt;/b&gt; function and call to the constructor of the &lt;b&gt;App.xaml.cs&lt;/b&gt; file. Include the following using statements to reference &lt;b&gt;System.Threading&lt;/b&gt; and &lt;b&gt;System.Globalization&lt;/b&gt; at the beginning of the file. Also, add the declaration for the &lt;b&gt;appForceCulture&lt;/b&gt; global variable to enable the international testing feature described in &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank"&gt;Tips for localizing Windows Phone apps – Part 2&lt;/a&gt;. &lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e37be9ee-7414-4d54-a514-773b43615096" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// . . .&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;partial&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;App&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Application&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Global variable to set app locale at launch for International testing&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// An empty value causes the app to following users phone language culture &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; appForceCulture = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;qps-ploc&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Provides easy access to the root frame of the phone app.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;The root frame of the phone app.&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PhoneApplicationFrame&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; RootFrame { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Constructor for the Application object.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; App()&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Global handler for uncaught exceptions.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;UnhandledException += Application_UnhandledException;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Standard XAML initialization&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;InitializeComponent();&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Phone-specific initialization&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;InitializePhoneApplication();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Language display initialization&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;InitializeLanguage();&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// . . .&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;li&gt;Add the &lt;b&gt;InitializeLanguage&lt;/b&gt; method to &lt;b&gt;App.xaml.cs:&lt;br&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8c328130-cae3-4126-8694-aed38d08cea9" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Initialize the app&amp;#39;s font and flow direction as defined in its localized resource strings.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// To ensure that your apps font is aligned with its supported languages and that the&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// FlowDirection for each of those languages follows its traditional direction, ResourceLanguage&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// and ResourceFlowDirection should be initialized in each .resx file to match these values with that&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// file&amp;#39;s culture. For example:&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// AppResources.es-ES.resx&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//    ResourceLanguage&amp;#39;s value should be &amp;quot;es-ES&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//    ResourceFlowDirection&amp;#39;s value should be &amp;quot;LeftToRight&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// AppResources.ar-SA.resx&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//     ResourceLanguage&amp;#39;s value should be &amp;quot;ar-SA&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//     ResourceFlowDirection&amp;#39;s value should be &amp;quot;RightToLeft&amp;quot;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; InitializeLanguage()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Change locale to appForceCulture if it is not empty&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.IsNullOrWhiteSpace(appForceCulture) == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Force app globalization to follow appForceCulture&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;Thread.CurrentThread.CurrentCulture = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; CultureInfo(appForceCulture);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;               &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Force app UI culture to follow appForceCulture&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;Thread.CurrentThread.CurrentUICulture = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; CultureInfo(appForceCulture);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Set the font to match the display language defined by the&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// ResourceLanguage resource string for each supported language.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Fall back to the font of the neutral language if the display&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// language of the phone is not supported.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// If a compiler error occurs, ResourceLanguage is missing from&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// the resource file.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;RootFrame.Language = XmlLanguage.GetLanguage(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppResources&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.ResourceLanguage);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Set the FlowDirection of all elements under the root frame based&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// on the ResourceFlowDirection resource string for each&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// supported language.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// If a compiler error occurs, ResourceFlowDirection is missing from&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// the resource file.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FlowDirection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; flow = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FlowDirection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Enum&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Parse(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeof&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FlowDirection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;), &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppResources&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.ResourceFlowDirection,&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;RootFrame.FlowDirection = flow;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;catch&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// If an exception is caught here it is most likely due to either&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// ResourceLangauge not being correctly set to a supported language&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// code or ResourceFlowDirection is set to a value other than LeftToRight&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// or RightToLeft.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (Debugger.IsAttached)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;Debugger.Break();&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;throw&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;As the comments in the code explain, the &lt;b&gt;InitializeLanguage&lt;/b&gt; method initializes the app's font and flow direction as defined in the localized resource strings. &lt;/p&gt; &lt;p&gt;As described in the blog posts &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/02/01/tips-for-localizing-windows-phone-8-xaml-apps-part1.aspx" target="_blank"&gt;Tips for Localizing Windows Phone 8 XAML Apps - Part1&lt;/a&gt; and &lt;a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/03/08/tips-for-localizing-windows-phone-apps-part-2.aspx" target="_blank"&gt;Tips for localizing Windows Phone apps – Part 2&lt;/a&gt;, when you add a language to your app using the Windows Phone 8.0 SDK, a resource file for that locale is created. In that .resx file, the &lt;b&gt;ResourceLanguage&lt;/b&gt; and &lt;b&gt;ResourceFlowDirection&lt;/b&gt; values are initialized for the locale of the language you added. When the app is launched, &lt;b&gt;InitializeLanguage()&lt;/b&gt; uses the values of &lt;b&gt;ResourceLanguage&lt;/b&gt; and &lt;b&gt;ResourceFlowDirection &lt;/b&gt;to initialize the &lt;b&gt;xml:lang&lt;/b&gt; and &lt;b&gt;&lt;u&gt;FlowDirection&lt;/u&gt;&lt;/b&gt; of the app’s Rootframe.  &lt;p&gt;Typically the culture used by &lt;b&gt;InitializeLanguage()&lt;/b&gt; is the culture the system chooses to most closely match to the user’s phone language setting. The &lt;b&gt;appForceCulture&lt;/b&gt; clause allows you to override this with the culture of your choice, so that you can deploy and review your app in the language of your choice without the time-consuming process of changing settings or restarting the device or emulator. If you use this convenient method, don’t forget to also test the app to be sure that everything works as expected when you modify the Phone Language setting and reboot.  &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588342&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Inside Windows Phone – code samples</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/19/inside-windows-phone-code-samples.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/19/inside-windows-phone-code-samples.aspx</id><published>2013-04-19T18:05:05Z</published><updated>2013-04-19T18:05:05Z</updated><content type="html">&lt;p&gt;What Windows Phone code samples are available to you, and how do you get them? We publish a large number of code samples that cover a solid range of Windows Phone developer scenarios. In this video, we touch on some of the code samples we’ve created to help you design and develop great Windows Phone apps, and where to find them. &lt;p&gt;&lt;iframe style="height: 288px; width: 512px" src="http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP53--Matthias-on-Samples/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;Here’s where you can find some of the Windows Phone code samples and resources we discuss in the video. &lt;ul&gt; &lt;li&gt;Matthias's &lt;a href="http://blogs.msdn.com/b/matthiasshapiro/archive/2013/03/21/10-great-windows-phone-8-code-samples-no-wait-30.aspx" target="_blank"&gt;blog post&lt;/a&gt; that highlights some awesome Windows Phone samples, and where to get them&lt;/li&gt; &lt;li&gt;The &lt;u&gt;&lt;a href="http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=Contributors&amp;amp;f%5B0%5D.Value=Windows%20Phone%20SDK%20Team&amp;amp;f%5B0%5D.Text=Windows%20Phone%20SDK%20Team" target="_blank"&gt;Windows Phone Dev Center samples&lt;/a&gt;&lt;/u&gt; page – the complete list of samples created by the Windows Phone developer content team, by developers for developers &lt;/li&gt; &lt;li&gt;The &lt;a href="http://code.msdn.microsoft.com/wpapps/Basic-Lens-sample-359fda1b" target="_blank"&gt;Lens sample&lt;/a&gt; (check out &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206990(v=vs.105).aspx" target="_blank"&gt;Lenses for Windows Phone 8&lt;/a&gt; for an overview and walkthrough of how to build your Lens app)&lt;/li&gt; &lt;li&gt;The &lt;a href="http://code.msdn.microsoft.com/wpapps/Photo-Extensibility-Sample-db289044" target="_blank"&gt;photo extensibility sample&lt;/a&gt; (see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202966(v=vs.105).aspx" target="_blank"&gt;Photo extensibility for Windows Phone&lt;/a&gt; for more info about how to use the sample and how to create your app)&lt;/li&gt; &lt;li&gt;The &lt;a href="http://code.msdn.microsoft.com/wpapps/TwitterSearch-Windows-b7fc4e5e" target="_blank"&gt;Twitter search infinite scrolling sample&lt;/a&gt; using the LongListSelector control in Windows Phone (check out the topic on &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx" target="_blank"&gt;how to display data in a grouped list using LLS&lt;/a&gt;)&lt;/li&gt; &lt;li&gt;The &lt;a href="http://code.msdn.microsoft.com/wpapps/PeopleHub-Windows-Phone-80-88abe94d" target="_blank"&gt;People Hub LongListSelector sample&lt;/a&gt;, with jump lists (be sure to see the topic on &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx" target="_blank"&gt;how to display data in a grouped list using LLS&lt;/a&gt; for info about using LLS for this sample, too) &lt;/li&gt; &lt;li&gt;A &lt;a href="http://code.msdn.microsoft.com/wpapps/Speech-for-Windows-Phone-3771fc6d" target="_blank"&gt;speech recognition sample&lt;/a&gt; that covers using a custom grammar (see &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206959(v=vs.105).aspx" target="_blank"&gt;Voice commands for Windows Phone 8&lt;/a&gt; for more info about how to use this feature in your app)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Please send us any questions or feedback – we’d like to hear from you. &lt;p&gt;Tweet to &lt;a href="https://twitter.com/intent/tweet?screen_name=LarryALieberman" target="_blank"&gt;@LarryALieberman&lt;/a&gt; or &lt;u&gt;&lt;a href="https://twitter.com/intent/tweet?screen_name=matthiasshap" target="_blank"&gt;@matthiasshap&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588323&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Larry Lieberman</name><uri>http://blogs.windows.com/members/Larry-Lieberman/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Facebook SDK for .NET - Featured in the Facebook Technology Partner program</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/18/facebook-sdk-for-net-featured-in-the-facebook-technology-partner-program.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/18/facebook-sdk-for-net-featured-in-the-facebook-technology-partner-program.aspx</id><published>2013-04-18T17:01:25Z</published><updated>2013-04-18T17:01:25Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by Sanjeev Dwivedi, a developer evangelist for Microsoft working with Facebook.&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;  &lt;hr&gt;  &lt;p&gt;Today we are pleased to share with you that Facebook has announced the Facebook SDK for .NET as part of the Facebook Technology Partners program. This is a C#/XAML–based SDK that makes integrating your Windows Phone and Windows 8 style apps with Facebook a breeze. The SDK is an open-source project owned and released by the Outercurve Foundation. The Outercurve website for the SDK is &lt;a href="http://facebooksdk.net" target="_blank"&gt;http://facebooksdk.net&lt;/a&gt;, which hosts tutorials for both &lt;a href="http://facebooksdk.net/docs/windows/tutorial/" target="_blank"&gt;Windows 8&lt;/a&gt; and &lt;a href="http://facebooksdk.net/docs/phone/tutorial/" target="_blank"&gt;Windows Phone&lt;/a&gt;, and has links to the &lt;a href="https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/" target="_blank"&gt;GitHub repository&lt;/a&gt; where the source is hosted.  &lt;p&gt;You can easily integrate the SDK into your project using &lt;i&gt;NuGet,&lt;/i&gt; which automatically downloads and installs the SDK in your project. To do this, launch the &lt;b&gt;Package Manager Console&lt;/b&gt; from the toolbar:&lt;br&gt;&lt;b&gt;Tools&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&amp;gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;Library Package Manager&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&amp;gt; &lt;b&gt;Package Manager Console&lt;/b&gt;  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_5DCE4B32.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_6ED27915.png" width="624" height="437"&gt;&lt;/a&gt; &lt;p&gt;Install the Facebook NuGet package as part of your app by running the following command:  &lt;p&gt;&lt;font face="Courier New"&gt;Install-Package Facebook&lt;/font&gt;  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_14C8296C.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_13EFC382.png" width="624" height="196"&gt;&lt;/a&gt; &lt;p&gt;The Facebook SDK for .NET makes your life easier by providing two key functionalities:  &lt;ol&gt; &lt;li&gt;It takes away all of the complexity of logging on with Facebook. Based on the provided samples, all you need to do is use a bit of boilerplate code, add your Facebook app ID to the mix, and voila! You can have people logging on to your app with Facebook.  &lt;li&gt;It allows you to focus on your Facebook-related scenarios by abstracting away the low-level details such as HTTP connections and query parameters. This way you can plan and develop around Open Graph APIs and objects, which is where you want to spend your development resources.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;An added benefit of using this SDK is that it provides very similar APIs on both the Windows Phone and the Windows 8 platforms, so code-sharing between the two platforms becomes very easy. Here is a snippet that showcases retrieval of a Friends list from Facebook on Windows Phone. As you can see in the code example, setting up the client and making the call to retrieve your Friends list requires just a few lines of code. The rest of the code is your logic around picking the data that is of interest to you.&lt;/p&gt; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4f753b3e-9cdf-4537-9d40-76d9595ddf68" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px; white-space: nowrap"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Instantiate the Facebook client&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;FacebookClient fb = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; FacebookClient(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;&amp;lt;Supply Access Token here&amp;gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Make the friends list Open Graph API request&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; friendsTaskResult = await fb.GetTaskAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;/me/friends&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; result = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;)friendsTaskResult;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IEnumerable&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;)result[&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;];&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;foreach&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; item &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; friend = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IDictionary&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;)item;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Pick out the properties from the dictionary without the need for writing deserializing classes&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; name = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)friend[&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;];&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; id = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)friend[&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;];&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;You can find more details about the SDK on the Outercurve Foundation website: &lt;a href="http://facebooksdk.net/docs/" target="_blank"&gt;http://facebooksdk.net/docs/&lt;/a&gt;. You can also follow the development of the SDK at its &lt;a href="https://www.facebook.com/csharpsdk" target="_blank"&gt;Facebook page&lt;/a&gt;, report any issues on &lt;a href="https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/issues" target="_blank"&gt;Github issue tracker&lt;/a&gt;, and ask any follow-up questions on the &lt;a href="http://facebook.stackoverflow.com/questions/tagged/facebook-c%23-sdk" target="_blank"&gt;StackOverFlow forum&lt;/a&gt;. For details about how to obtain an Access Token, see the &lt;i&gt;Authenticate&lt;/i&gt; section in the Windows Phone &lt;a href="http://facebooksdk.net/docs/phone/tutorial/" target="_blank"&gt;tutorial&lt;/a&gt;.  &lt;hr&gt;  &lt;p&gt;&lt;em&gt;The offerings and resources presented may be relevant to developers. However, this post is for informational purposes only and Microsoft is providing this information "as is" with no warranties. Each contribution is licensed to you under an agreement by its provider, not Microsoft. It is your responsibility to evaluate if these resources are suitable for your usage.&lt;/em&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588315&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Defining your app’s requirements for a great customer experience</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/17/defining-your-app-s-requirements-for-a-great-customer-experience.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/17/defining-your-app-s-requirements-for-a-great-customer-experience.aspx</id><published>2013-04-17T18:30:48Z</published><updated>2013-04-17T18:30:48Z</updated><content type="html">&lt;p&gt;One of the things I really enjoy about developing for Windows Phone is being able to reach a diverse audience across the globe. Windows Phone users access my apps on phones from different manufacturers, all with varying capabilities and price points to meet local needs. While I benefit from the diverse audience, it does take a little planning on my part to create a great user experience and to ensure that my apps comply with the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184840(v=vs.105).aspx" target="_blank"&gt;Windows Phone technical certification requirements&lt;/a&gt;.  &lt;p&gt;In this post I’ll help you identify the phone features and hardware your app requires, and then provide guidance on how define these needs in Visual Studio.  &lt;h2&gt;Capabilities and requirements&lt;/h2&gt; &lt;p&gt;Windows Phone uses the app manifest file to identify the software capabilities, hardware required, and memory each app requires to run correctly:  &lt;ul&gt; &lt;li&gt;&lt;b&gt;Software capabilities: &lt;/b&gt;indicate that an app accesses the phone identity, camera, maps, media libraries, networking, Near-Field Communication (NFC), push notifications, sensors, wallet, web browser, and other software capabilities. Windows Phone grants access to these capabilities, and customers are informed before purchasing the app which capabilities are used.  &lt;li&gt;&lt;b&gt;Hardware requirements&lt;/b&gt;: indicate phone features that the app must have to function correctly. The operating system uses the list to prevent apps from being installed on phones that don’t meet these requirements.  &lt;li&gt;&lt;b&gt;Functional capabilities&lt;/b&gt;: indicate that your app is &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681682(v=vs.105).aspx" target="_blank"&gt;requesting more memory at run time&lt;/a&gt;, if it is available. &lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Your app must enable the relevant capabilities and hardware requirements&lt;/h2&gt; &lt;p&gt;Make sure your app is not marking capabilities and requirements that it doesn’t need. Users see your app’s capabilities and requirements when they install the app, and may decide not to move forward with installation if they see that your app uses capabilities that they don’t want to enable, or that are not related to the purpose of the app.  &lt;p&gt;In a scenario in which your app can provide value even when some hardware is absent, use API checks to first detect the presence of the hardware, and then to inform users if some features are disabled because of missing hardware.  &lt;p&gt;The following steps explain how you can modify support for different Windows Phone capabilities in your app.  &lt;h5&gt;&lt;/h5&gt; &lt;p&gt;Open your project in Visual Studio, go to the &lt;b&gt;Solution Explorer&lt;/b&gt;, and then in the &lt;b&gt;Properties&lt;/b&gt; folder, open &lt;b&gt;WMAppManifest.xml&lt;/b&gt;. Then, &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247542(v=vs.105).aspx" target="_blank"&gt;add or remove the capabilities&lt;/a&gt; as illustrated here: &lt;/p&gt; &lt;p&gt; &lt;table cellspacing="0" cellpadding="0" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="168"&gt; &lt;p style="background-color: #dbe5f1"&gt;&lt;strong&gt;Windows Phone 7 project&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="463"&gt; &lt;p style="background-color: #8db3e2" align="center"&gt;&lt;strong&gt;Windows Phone 8 project&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_6D4E4129.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_6C09A84A.png" width="624" height="524"&gt;&lt;/a&gt;&lt;/p&gt; &lt;h3&gt;Add hardware and functional capabilities to the manifest file&lt;/h3&gt; &lt;p&gt;If the hardware or functional capabilities you need are not listed in Visual Studio, you must manually &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247542(v=vs.105).aspx" target="_blank"&gt;edit the manifest file&lt;/a&gt;. To do this, first understand all the &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206936(v=vs.105).aspx" target="_blank"&gt;capabilities available&lt;/a&gt;, and then edit the manifest file in a text editor, such as Notepad, or directly in the code. Right-click the file in &lt;b&gt;Solution Explorer&lt;/b&gt;, click &lt;b&gt;Open With&lt;/b&gt;, and then edit through &lt;b&gt;Notepad or ‘view code’&lt;/b&gt;. You turn these on by adding the correct flag:  &lt;table cellspacing="0" cellpadding="2" width="498" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="244"&gt; &lt;p align="center"&gt;&lt;b&gt;Requirement&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="252"&gt; &lt;p align="center"&gt;&lt;b&gt;Short description&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="246"&gt; &lt;p&gt;ID_REQ_MEMORY_90&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires at least 90 MB of RAM&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_MEMORY_300&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires at least 180 MB of RAM&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_FRONTCAMERA&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires the front-facing camera&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_REARCAMERA&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires the rear camera&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_NFC&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires a phone with NFC chip&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_MAGNETOMETER&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires a compass&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="247"&gt; &lt;p&gt;ID_REQ_GYROSCOPE&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="251"&gt; &lt;p&gt;App requires gyroscope to measure rotational velocity&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Here’s an example of the manifest flag that shows the software, hardware, and functional capabilities:  &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image003_5F00_6AC50F6B.png"&gt;&lt;img title="clip_image003" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="clip_image003" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image003_5F00_thumb_5F00_69ECA981.png" width="586" height="633"&gt;&lt;/a&gt;  &lt;h2&gt;Capabilities required when using the Microsoft Ad Control&lt;/h2&gt; &lt;p&gt;If your app uses the &lt;a href="http://msdn.microsoft.com/en-us/library/advertising-mobile-windows-phone-manifest-capabilities(v=msads.20).aspx" target="_blank"&gt;Microsoft Ad Control&lt;/a&gt;, be sure to &lt;a href="http://msdn.microsoft.com/en-us/library/advertising-mobile-windows-phone-manifest-capabilities(v=msads.20).aspx" target="_blank"&gt;enable the following capabilities&lt;/a&gt;:  &lt;table cellspacing="0" cellpadding="2" width="650" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone 7 Silverlight&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone 7 XNA&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p align="center"&gt;&lt;b&gt;Windows Phone 8 project&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_IDENTITY_USER&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt; &lt;p&gt;ID_CAP_IDENTITY_USER&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_IDENTITY_USER&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_MEDIALIB&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt; &lt;p&gt;ID_CAP_NETWORKING&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_MEDIALIB_PHOTO&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_NETWORKING&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt; &lt;p&gt;ID_CAP_PHONEDIALER&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_NETWORKING&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_PHONEDIALER&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_PHONEDIALER&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_WEBBROWSERCOMPONENT&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="164"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="242"&gt; &lt;p&gt;ID_CAP_WEBBROWSERCOMPONENT&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;Additional considerations &lt;/h2&gt; &lt;p&gt;In some scenarios, capabilities are added automatically. Here are some examples:  &lt;ul&gt; &lt;li&gt;During debugging, when running the app in the Windows Phone Emulator, the Network Capability is set to ‘on’ by default. You should always test your app on a phone instead of on the emulator if your app uses any of the Windows Phone Software or Hardware capabilities, to ensure you are getting correct test results.  &lt;li&gt;For Windows Phone 8 projects, it is your responsibility to ensure all the correct Software capabilities are identified and added to the manifest file.  &lt;li&gt;For Windows Phone 7 projects, the submission process looks for software API calls and, if found, will add the Software capabilities to ensure that the app has the correct permissions to run.  &lt;li&gt;Third-party libraries could make calls to some APIs, for example, to network or sensor APIs. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Having a variety of phones with different price points creates opportunities to reach out to more users. Take the time to set the correct information and get your app ready to be successful on a variety of Windows Phone devices.  &lt;h2&gt;How capabilities are displayed to Windows Phone users&lt;/h2&gt; &lt;p&gt;The following table shows examples of how capabilities appear to consumers in the web Store and on the phone:  &lt;table cellspacing="0" cellpadding="2" width="613" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="308"&gt; &lt;p style="background-color: #dbe5f1"&gt;How capabilities are shown in app details page of an app on the Windows Phone &lt;a href="http://www.windowsphone.com/" target="_blank"&gt;web Store&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="303"&gt; &lt;p style="background-color: #8db3e2"&gt;How capabilities are shown in the app details page of an app on Windows Phone&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;table cellspacing="0" cellpadding="0" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="307"&gt; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_222B209A.jpg"&gt;&lt;img title="clip_image004" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image004" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image004_5F00_thumb_5F00_01A3E0E8.jpg" width="235" height="224"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="283"&gt; &lt;p&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_611CA135.jpg"&gt;&lt;img title="clip_image005" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; border-top-width: 0px; margin-right: auto" border="0" alt="clip_image005" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/clip_5F00_image005_5F00_thumb_5F00_356BD739.jpg" width="215" height="351"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h2&gt;Using the Store Test Kit (for Windows Phone 7 projects)&lt;/h2&gt; &lt;p&gt;If your app targets Windows Phone 7.1, you can use the Store Test Kit to &lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg180730(v=vs.105).aspx" target="_blank"&gt;verify the capabilities&lt;/a&gt; that are being detected, to confirm they align with what you are expecting. The Windows Phone 8.0 SDK includes the Store Test Kit, and the Windows Phone 7 SDK requires you to install a &lt;a href="http://www.codeproject.com/Articles/120762/Checking-Your-WP7-Application-Capabilities)" target="_blank"&gt;stand-alone tool&lt;/a&gt; to run these tests.  &lt;p&gt;Take the following steps to run the Store Test Kit for Windows Phone 7 project:  &lt;ul&gt; &lt;li&gt;&lt;b&gt;INSTALL AND START THE TEST KIT. &lt;/b&gt;Install and run the Store Test Kit. In the latest version of the SDK you can open the Store Test Kit directly from within your project: on the &lt;b&gt;Project&lt;/b&gt; menu, click &lt;b&gt;Open Store Test Kit&lt;/b&gt;.  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg180730(v=vs.105).aspx" target="_blank"&gt;RUN THE AUTOMATED TESTS&lt;/a&gt;&lt;b&gt;&lt;/b&gt;. The Store Test Kit can detect and add software capabilities based on API calls for Windows Phone OS 7.x managed projects (not on native projects or Windows Phone OS 8.0 managed projects). &lt;b&gt;Note&lt;/b&gt;&amp;nbsp;&amp;nbsp; You probably will need to update the test cases the first time you run the Test Kit, because we update them frequently. You can do this easily from the blue alert bar you might see across the bottom of the Test Kit window.&lt;br&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_74C98AC9.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_7F1AAF29.png" width="257" height="302"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;Use the &lt;b&gt;Automated Tests&lt;/b&gt; tool to identify the capabilities that your app is using. Verify that these are the capabilities your app actually requires.&lt;br&gt;&lt;a href="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_4C4AA8B5.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.windows.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-53-84-metablogapi/image_5F00_thumb_5F00_1D84F013.png" width="569" height="194"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Windows Phone users appreciate having visibility into my app requirements, so that they can make an informed choice about downloading and purchasing your app. In the end, the user gets an app that performs well on their phone, and you get a better review for your apps. Everyone wins.  &lt;p&gt;I’d like to hear from you. Please let me know your questions about defining capabilities, as well as suggestions for topics you’d like me to cover in future blog posts.  &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588309&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Bernardo Zamora</name><uri>http://blogs.windows.com/members/Bernardo-Zamora/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry><entry><title>Controlling a hardware prototype with your Windows Phone</title><link rel="alternate" type="text/html" href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/16/controlling-a-hardware-prototype-with-your-windows-phone.aspx" /><id>http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/04/16/controlling-a-hardware-prototype-with-your-windows-phone.aspx</id><published>2013-04-16T22:54:54Z</published><updated>2013-04-16T22:54:54Z</updated><content type="html">&lt;p&gt;&lt;i&gt;This blog post was authored by &lt;/i&gt;&lt;a href="https://twitter.com/reitanerik" target="_blank"&gt;Erik Reitan&lt;/a&gt;&lt;i&gt;&lt;/i&gt;&lt;i&gt;, a programming writer on the Windows Phone developer content team.&lt;/i&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt; &lt;p&gt;&lt;i&gt;- Adam&lt;/i&gt;  &lt;hr&gt;  &lt;p&gt;You’re already familiar with &lt;a href="http://msdn.microsoft.com/library/windowsphone/develop/ff402529(v=vs.105).aspx" target="_blank"&gt;creating&lt;/a&gt; great &lt;a href="http://www.windowsphone.com/en-us/store/featured-apps" target="_blank"&gt;apps&lt;/a&gt; for Windows Phone, and porting your apps from iOS or Android, but did you know that you can build .NET hardware prototype devices to integrate with your Windows Phone?  &lt;p&gt;Using a prototyping platform for small electronic devices, such as &lt;a href="http://www.netmf.com/gadgeteer/" target="_blank"&gt;.NET Gadgeteer&lt;/a&gt; or &lt;a href="http://www.netduino.com/netduino/" target="_blank"&gt;Netduino&lt;/a&gt;, you can create interesting hardware projects. Using &lt;a href="http://msdn.microsoft.com/vstudio/hh341490.aspx" target="_blank"&gt;C#&lt;/a&gt;, the &lt;a href="http://netmf.codeplex.com/" target="_blank"&gt;.NET Micro Framework&lt;/a&gt;‎, and &lt;a href="http://msdn.microsoft.com/vstudio" target="_blank"&gt;Visual Studio&lt;/a&gt;, you can develop your own hardware prototype and use the capabilities of your Windows Phone to interact with the hardware.  &lt;p&gt;The following video shows how Matt &lt;a href="https://twitter.com/RogueCode" target="_blank"&gt;@RogueCode&lt;/a&gt; used his Windows Phone to control a maze using Bluetooth and Netduino.&lt;br&gt;&lt;br&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/q_nzCgNW28g&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/q_nzCgNW28g&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;p&gt;For more details about Matt’s project, read &lt;a href="http://channel9.msdn.com/Niners/gduncan411" target="_blank"&gt;Greg Duncan’s&lt;/a&gt; &lt;a href="http://channel9.msdn.com/coding4fun/blog/An-amazing-maze-with-some-Windows-Phone-8-Netduino-servos-and-some-3D-printing-for-flavor" target="_blank"&gt;Coding4Fun blog post on Channel 9&lt;/a&gt;.  &lt;p&gt;Here’s another video that shows how Marco Minerva &lt;a href="http://www.twitter.com/marcominerva" target="_blank"&gt;@MarcoMinerva&lt;/a&gt; used his Windows Phone to control a rover with Bluetooth and.NET Gadgeteer. Very cool!&lt;/p&gt; &lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ono714-H8cg&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ono714-H8cg&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;For complete details about Marco’s project, see the related &lt;a href="http://channel9.msdn.com/coding4fun/blog/Building-a-Windows-Phone-controlled-Wi-Fi-Gadgeteer-Image-Streaming-Robot" target="_blank"&gt;Coding4Fun blog post on Channel 9&lt;/a&gt;.  &lt;p&gt;Here’s another video by Matt that shows how you can combined Windows Phone, Netduino, a sonar sensor, and Bluetooth for some interesting results. &lt;/p&gt; &lt;p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jtNh3nvP8xo&amp;amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/jtNh3nvP8xo&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;For more details about Matt’s project, see the following &lt;a href="http://channel9.msdn.com/coding4fun/blog/What-does-the-Imperial-March-Windows-Phone-8-Netduino-Bluetooth-and-Sonar-have-in-common-This" target="_blank"&gt;Coding4Fun blog post on Channel 9&lt;/a&gt;. &lt;p&gt;Each of these Windows Phone projects provide the steps, code, and details necessary to build the project yourself, through the above links. Possibly, these examples could lead to your own hardware prototype. Let us know what you create. &lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.windows.com/aggbug.aspx?PostID=588299&amp;AppID=5384&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</content><author><name>Adam Denning</name><uri>http://blogs.windows.com/members/Adam-Denning/default.aspx</uri></author><category term="Developing Apps" scheme="http://blogs.windows.com/windows_phone/b/wpdev/archive/tags/Developing+Apps/default.aspx" /></entry></feed>