<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://mobileworld.appamundi.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>APPA Mundi</title><link>http://mobileworld.appamundi.com/blogs/</link><description>Mobile World</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 (Build: 30912.2823)</generator><item><title>WPH303 Triskaidekaphobia - Session Code</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/08/31/wph303-triskaidekaphobia-session-code.aspx</link><pubDate>Tue, 31 Aug 2010 07:25:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:234</guid><dc:creator>Peter Foot</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Attached is the code from today&amp;#39;s session. The Windows Mobile 6 project requires Visual Studio 2008 and the Windows Mobile 6 SDK. The Windows Phone 7 project requires the Windows Phone 7 Development tools Beta. I&amp;#39;ll blog separately about some of the individual techniques and snippets contained within this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=234" width="1" height="1"&gt;</description><enclosure url="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.02.34/T6and7Final.zip" length="1223954" type="application/x-zip-compressed" /></item><item><title>DataContractSerializer and Internal types</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/08/23/datacontractserializer-and-internal-types.aspx</link><pubDate>Sun, 22 Aug 2010 22:21:25 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:231</guid><dc:creator>Peter Foot</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Under Silverlight only public types may be serialized with the DataContractSerializer. If you want to make your data classes internal to your assembly and serialise them for use in a WCF service you will find that the service call will fail at runtime with a SecurityException inside a misleading exception about inability to communicate with the service. There is a workaround however which involves exposing your internal types to the Silverlight base class libraries with the InternalsVisibleTo attribute. Simply add the following code to your AssemblyInfo.cs file:-&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f60e47ce-359a-41ef-bb1f-13f46e367979" class="wlWriterEditableSmartContent"&gt; &lt;div style="border:#000080 1px solid;color:#000;font-family:&amp;#39;Courier New&amp;#39;, Courier, Monospace;font-size:10pt;"&gt; &lt;div style="background:#ddd;overflow:auto;"&gt; &lt;ol style="background:#ffffff;margin:0 0 0 2em;padding:0 0 0 5px;"&gt; &lt;li&gt;[&lt;span style="color:#0000ff;"&gt;assembly&lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;InternalsVisibleTo&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;System.Runtime.Serialization, PublicKey=00240000048000009400000006020000002400005253413100040000010001008d56c76f9e8649383049f383c44be0ec204181822a6c31cf5eb7ef486944d032188ea1d3920763712ccb12d75fb77e9811149e6148e5d32fbaab37611c1878ddc19e20ef135d0cb2cff2bfec3d115810c3d9069638fe4be215dbf795861920e5ab6f7db2e2ceef136ac23d5dd2bf031700aec232f6c6b1c785b4305c123b37ab&amp;quot;&lt;/span&gt;)]&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;If you use the DataContractJsonSerializer you must also add the &lt;strong&gt;System.Servicemodel.Web&lt;/strong&gt; assembly (the public key is the same).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=231" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Windows+Phone/default.aspx">Windows Phone</category><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Code/default.aspx">Code</category></item><item><title>Windows Phone 7 Jump Start training Online!</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/08/18/windows-phone-7-jump-start-training-online.aspx</link><pubDate>Wed, 18 Aug 2010 14:44:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:230</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Microsoft have finished processing all the video from the two days of online training that fellow MVP Rob Miles and myself delivered last month. They&amp;rsquo;ve removed the worst of the jokes and left in all the best bits, leaving 12 50 minute sessions of training on Silverlight and XNA for Windows Phone 7 to get you started with developing using the beta release of the tools.&lt;/p&gt;
&lt;p&gt;There were 12 sessions in all:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL1USBL/"&gt;Windows Phone 7 Jump Start (Session 1 of 12): Introduction&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A quick tour of Windows Phone 7 and how you write programs for it. We take a look at the platform capabilities and the software development options. We also offer you a chance to win a prize that is almost certainly not a private jet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL2USBL/"&gt;Windows Phone 7 Jump Start (Session 2 of 12): Building a Silverlight Application, Part 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Building an application from scratch. How you can take a simple idea for a program and build the user interface, followed by the program behaviors that sit behind it. We take a look at databinding on Windows Phone and how best to structure your application to make best use of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL3USBL/"&gt;Windows Phone 7 Jump Start (Session 3 of 12): Building a Silverlight Application, Part 2&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Making more complex applications. You also get an overview of how the built in controls work, and how to tailor the user input to match your requirements. We also take a look at page navigation within a multi-form Silverlight application on the phone and how to use the navigation inputs for best effect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL4USBL/"&gt;Windows Phone 7 Jump Start (Session 4 of 12): Building Games for the Windows Phone 7 Platform&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using Silverlight as a platform for game creation. We show how to get a draw/update behavior into your Silverlight games and give you a fully worked game to chew on. We also illustrate how a Silverlight game can leverage the XNA libraries to add sound effects to a game.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL5USBL/"&gt;Windows Phone 7 Jump Start (Session 5 of 12): Building XNA Games for the Windows Phone 7 Platform, Part 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Getting Started with&amp;nbsp; XNA on Windows Phone. We talk about what makes the Windows Phone such a good platform for XNA development and how you create XNA games for it. We take a look at how games can manage the orientation of a phone and give you some tips on getting the best performance. Then we move on to take a look at the accelerometer input and how to make games that use this.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL6USBL/"&gt;Windows Phone 7 Jump Start (Session 6 of 12): Building XNA Games for the Windows Phone 7 Platform, Part 2&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using the Windows Phone platform features in your XNA games. We continue with our look at Windows Phone features that make the platform so interesting to game developers. We cover the use of the touch screen, sound creation and finally give you some coverage of how to access the Zune media content in the device. Then we round off with a little look at how you can get text input from users by means of the Guide support in XNA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL7USBL/"&gt;Windows Phone 7 Jump Start (Session 7 of 12): Advanced Application Development, Part 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Application Lifecycle. A look at the execution model on the phone, and how to create solutions that give a great user experience in the face of phone calls, termination and even total shutdown of the device itself. We show how to respond to messages to make your application give the appearance of being &amp;quot;always on&amp;quot; and the data persistence facilities that you will need to make this work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL8USBL/"&gt;Windows Phone 7 Jump Start (Session 8 of 12): Advanced Application Development, Part 2&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Launchers and Choosers plus Using Isolated Storage. In this session we take a look at &amp;quot;Launchers and Choosers&amp;quot;, how your application can use the built in phone behaviors to place calls, take pictures and select contacts, making it part of how the phone works. We also show how your application can store data in its own isolated storage on the phone device.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL9USBL/"&gt;Windows Phone 7 Jump Start (Session 9 of 12): Advanced Application Development, Part 3&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Storing Data and Using the Network. In this session we look at the connectedness of Windows Phone and how you can make this work for you. We demonstrate connected applications and how the notification service is used to allow external systems to give your application a wake-up call. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL10USBL/"&gt;Windows Phone 7 Jump Start (Session 10 of 12): Marketing Your Windows Phone 7 Application&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using Windows Marketplace. In this session we explain how to join the Marketplace and get your applications out there. We take a look at how your solutions are packaged and deployed and how you go about registering a device for development and then using that with Visual Studio 2010 to test your applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL11USBL/"&gt;Windows Phone 7 Jump Start (Session 11 of 12): Working with Media&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Using XNA in 3D and with Media. In this session we take a quick look at how the Windows Phone works as an excellent platform for 3D games in XNA. We also explore how an XNA game can make use of the media stored in the phone, including photographs taken by the user and media loaded onto it from Zune.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://r.ch9.ms/WP7MSL12USBL/"&gt;Windows Phone 7 Jump Start (Session 12 of 12): Final Silverlight Topics and Wrap-Up&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Taking Silverlight to the max. We start with a look at the Application bar, a crucial component in Windows Phone applications. We then move on to the Expression Blend tool, and how to create compelling user experiences with it. Finally we round off the session by showing how easy it is to use the map services in your phone and demonstrate some of the really cool navigation tools that are coming.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Read more on the &lt;a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/08/17/windows-phone-7-jump-start-training.aspx"&gt;Windows Phone 7 Team blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/wp7dev"&gt;wp7dev&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=230" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/wp7dev/default.aspx">wp7dev</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlightverlight/default.aspx">Silverlightverlight</category></item><item><title>Windows Phone 7, VS2010 and VMWare</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/08/15/windows-phone-7-vs2010-and-vmware.aspx</link><pubDate>Sun, 15 Aug 2010 08:13:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:227</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;As anyone who has read my blog may know, I am a great fan of using Virtual Machines for development, but keeping my source code on my &amp;#39;main&amp;#39; drive for security and backup purposes. Up until recently, I couldn&amp;#39;t do this, as I had problems running VS2010 and the Windows Phone 7 emulator. &lt;/p&gt;
&lt;p&gt;Yesterday, VMWare informed me that an update to &lt;a href="http://downloads.vmware.com/d/info/desktop_downloads/vmware_workstation/7_0"&gt;VMWare Workstation&lt;/a&gt; was available, so I downloaded it and updated it. I updated the VMWare tools, and then fired up VS2010 and created a new Windows Phone 7 project and hit F5. Lo and behold, the emulator fired up, and my &amp;#39;Hello World&amp;#39; project ran on the emulator. &lt;/p&gt;
&lt;p&gt;Flushed with success, I opened one of my projects from a mapped drive, located on my &amp;#39;host&amp;#39; machine. I hit F5 to run the project, and got an error message:-&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Error&amp;nbsp;1&amp;nbsp;Could not load the assembly &lt;/strong&gt;&lt;strong&gt;file:///Y:\Users\Pete&lt;/strong&gt;&lt;strong&gt; Vickers\Documents\Visual Studio 2010\Projects\APPATest\APPATest\obj\Debug\APPATest.dll. This assembly may have been downloaded from the Web.&amp;nbsp; &lt;em&gt;If an assembly has been downloaded from the Web, it is flagged by Windows as being a Web file, even if it resides on the local computer.&lt;/em&gt; This may prevent it from being used in your project. You can change this designation by changing the file properties. Only unblock assemblies that you trust. See &lt;/strong&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=179545"&gt;&lt;strong&gt;http://go.microsoft.com/fwlink/?LinkId=179545&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; for more information.&amp;nbsp;APPATest&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After searching this, saw a few people with the same problem, and several suggestions, including hosting the project on my local system. I didn&amp;#39;t want to do this, as it would interfere with my backup strategy, and keeping all my source code on a &amp;#39;host&amp;#39; drive. Then I read a couple of suggestions to add an entry to &amp;#39;devenc.exe.config&amp;#39;...&lt;/p&gt;
&lt;p&gt;&amp;quot;Open devenv.exe.config (in C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE on my machine), and add this&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="background-color:white;color:black;"&gt;
&lt;pre&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;runtime&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;loadFromRemoteSources&lt;/span&gt; &lt;span style="color:red;"&gt;enabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&lt;span style="color:black;"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;
  ....
&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;runtime&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Restart Visual Studio and it should work.&amp;quot;&lt;/p&gt;
&lt;p&gt;I made the change, restarted VS2010, and everything worked as it should. So now I can have the best of all worlds. I can do my Windows Phone 7 development in a VM, I can keep my source files on my host system, and I can use TFS in VS2010.&lt;/p&gt;
&lt;p&gt;So, for anyone who has tried Windows Phone 7 development in VMWare Workstation in the past, without success, try updating to version 7.1.1 and see if it helps.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=227" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7+development/default.aspx">Windows Phone 7 development</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/VS2010/default.aspx">VS2010</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/VMWare+Workstation/default.aspx">VMWare Workstation</category></item><item><title>Data connection when travelling</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/08/07/data-connection-when-travelling.aspx</link><pubDate>Sat, 07 Aug 2010 08:28:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:226</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I do a reasonable amount of travelling, and spend quite a bit of time in Menorca. I have a Vodafone ES dongle for this, which gives me unlimited 3G access for &amp;euro;20 for 7 days, and have been using this for over a year without a problem. Last week, I plugged in the dongle, and the modem couldn&amp;#39;t be recognised, even though 3 weeks earlier, there wasn&amp;#39;t a problem using it! The obvious solution is to search the internet for the solution, but with no connection, how to do it. &lt;/p&gt;
&lt;p&gt;In this case, I removed the sim card from the dongle, put it in my Windows Mobile phone, made a connection and used &amp;#39;Internet Sharing&amp;#39; so I could use the phone as a modem. There is an excellent guide &lt;a href="http://thewindowsphone.com/2008/10/internet-sharing-love-laptop-windows-mobile-phone/"&gt;here&lt;/a&gt;&amp;nbsp;on how to setup internet sharing. I was fortunate that my phone was unlocked and would allow use of my Spanish Sim, and that I could find the APN settings to connect. I was also fortunate enough (and sad enough) to have a &amp;#39;spare&amp;#39; Windows Mobile phone with me. &lt;/p&gt;
&lt;p&gt;So this all worked great. But to further complicate matters, I was doing some work with a device that is debugged over wirless, but appears to consider an ad-hoc wireless network the work of the devil, and refused to associate with my ad-hoc network regardless of what I do.&lt;/p&gt;
&lt;p&gt;I was pointed at a &lt;a href="http://www.zoom.com/products/mobile_broadband_overview.html#4501"&gt;Zoom 3G Wireless-N Desktop Router&lt;/a&gt;&amp;nbsp;by a friend who was using this set-up. So I ordered one from &lt;a href="http://www.amazon.co.uk/Zoom-3G-Wireless-N-Desktop-Router/dp/B002SXMH1C/ref=sr_1_1?ie=UTF8&amp;amp;s=electronics&amp;amp;qid=1281178831&amp;amp;sr=8-1"&gt;Amazon&lt;/a&gt;&amp;nbsp;and it was waiting for me when I got home. Unwrapped it, configured it through a brilliantly simple web-interface, plugged in a T-Mobile dongle, and it just connected to the Internet - that was it. No fuss, no messing, just a connection. The wireless network was immediately visible (supports WEP/WPA/WPA2) and I connected to it as a router from several devices just to test it out. It is a fully fledged router supporting DHCP, has a Lan and a Wan port, so in theory, you could use the Lan cable in a Hotel, and then set up your own Wireless network using the Zoom.&lt;/p&gt;
&lt;p&gt;It is early days, but this is an amazing piece of kit, and for the price, amazing value. At a stroke, it solved all the problems I was facing connecting. It is small (12cm*13cm*3cm), lightweight and doesn&amp;#39;t have a brick for a power supply. I have nothing but praise for this and it will certainly become part of my travelling kit from now on.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.02/zoom.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=226" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Internet+Sharing/default.aspx">Internet Sharing</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Zoom+3G+wireless-n+desktop+router/default.aspx">Zoom 3G wireless-n desktop router</category></item><item><title>Windows Phone 7 UI Guide and Design Templates</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/07/29/windows-phone-7-ui-guide-and-design-templates.aspx</link><pubDate>Thu, 29 Jul 2010 06:06:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:225</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Microsoft has update the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=183218"&gt;UI Design and Interaction Guide for Windows Phone 7&lt;/a&gt; for the newly release beta. At the same time, also available are &lt;a href="http://go.microsoft.com/fwlink/?LinkId=196225"&gt;Design Templates for Windows Phone 7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;font-size:12pt;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;mso-ansi-language:EN-GB;mso-fareast-language:EN-GB;mso-bidi-language:AR-SA;"&gt;These are a collection of 28 layered Photoshop template files and the Segoe WP font family that can be used to create pixel-perfect application layouts, to help guide UI development, or to pitch an idea. These design templates showcase many controls that are a part of the Windows Phone Developer Tools Beta. They also include examples of controls that are a part of Windows Phone, but are not available as a part of the Windows Phone Developer Tools.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=225" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Design+Templates/default.aspx">Design Templates</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/UI+Design/default.aspx">UI Design</category></item><item><title>Windows Phone 7 Jumpstart Training - Recordings available</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/07/24/windows-phone-7-jumpstart-training-recordings-available.aspx</link><pubDate>Sat, 24 Jul 2010 17:05:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:223</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;If you didn&amp;#39;t get to see the excellent Jumpstart Training sessions last week, the recordings are now available &lt;a href="http://blogs.msdn.com/b/jaimer/archive/2010/07/23/video-recordings-for-first-windows-phone-7-jumpstart-event.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For anyone who didn&amp;#39;t get to attend this event &amp;#39;live&amp;#39;, and wants to know more about writing apps for Windows Phone 7, these recordings are a must. Andy Wigley and Rob Miles did an excellent (and entertaining) job of the training, and there was a lot of new information following the release of the beta.&lt;/p&gt;
&lt;p&gt;I recommend these recordings if you have any interest at all in Windows Phone 7 development. If nothing else, watch session 3 for a great explanation of &amp;#39;tombstoning&amp;#39; and &amp;#39;reactivation&amp;#39;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=223" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/recordings/default.aspx">recordings</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/reactivation/default.aspx">reactivation</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/tombstoning/default.aspx">tombstoning</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Jumpstart/default.aspx">Jumpstart</category></item><item><title>Uninstalling the Windows Phone 7 CTP</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/07/13/uninstalling-the-windows-phone-7-ctp.aspx</link><pubDate>Tue, 13 Jul 2010 13:54:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:222</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you are having problems uninstalling the Windows Phone 7 CTP, take a look at the excellent &lt;a href="http://coderjournal.com/2010/07/uninstalling-windows-phone-developer-tools-ctp/"&gt;link&lt;/a&gt; from Nick Beradi&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=222" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/uninstall/default.aspx">uninstall</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/CTP/default.aspx">CTP</category></item><item><title>Updated Windows Phone 7 Training</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/07/13/updated-windows-phone-7-training.aspx</link><pubDate>Tue, 13 Jul 2010 08:32:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:220</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Microsoft have updated their Windows Phone 7 Training kit for Developers - get it &lt;a href="http://bit.ly/9G8mlw"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=220" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7+Training/default.aspx">Windows Phone 7 Training</category></item><item><title>Windows Phone 7 Jump Start</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/07/13/windows-phone-7-jump-start.aspx</link><pubDate>Tue, 13 Jul 2010 07:05:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:219</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Our esteemed colleague Andy Wigley, along with Rob Miles will be doing FREE on-line training for Windows Phone 7 next week. You can register for the event &lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032455932&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;here&lt;/a&gt;&amp;nbsp;- it is sure to be popular, so book early!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=219" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Training/default.aspx">Training</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Andy+Wigley/default.aspx">Andy Wigley</category></item><item><title>Get Trained – Windows Phone 7 Jump Start</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/07/12/get-trained-windows-phone-7-jump-start.aspx</link><pubDate>Mon, 12 Jul 2010 19:48:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:218</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Windows Phone 7 JumpStart is a FREE virtual live class for developers interested in developing applications and games for Windows Phone 7.&amp;#160; The Microsoft Phone 7 team are providing this in partnership with the MS Learning team. The course is organized into four virtual instructor-led sessions that are of 3-hour duration.&amp;#160; &lt;/p&gt;  &lt;p&gt;This training will be presented by me, Andy Wigley and fellow MVP and MS Press author Rob Miles. It will provide developers a jump start for developing Windows Phone 7 applications.&amp;#160; The Labs will be completed offline with office hours access to the instructors.&lt;/p&gt;  &lt;p&gt;The dates for these course sessions are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;July 20&lt;/b&gt; – 8am: Session One: Getting Started with Microsoft Windows Phone and Silverlight &lt;/li&gt;    &lt;li&gt;&lt;b&gt;July 20&lt;/b&gt; – 1pm: Session Two: Programming Game Applications with XNA &lt;/li&gt;    &lt;li&gt;&lt;b&gt;July 22&lt;/b&gt; – 8am: Session Three:&amp;#160; Programming Applications with Silverlight &lt;/li&gt;    &lt;li&gt;&lt;b&gt;July 22&lt;/b&gt; – 1pm: Session Four:&amp;#160; Review and Wrap Up&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032455932&amp;amp;Culture=en-US"&gt;Go register for the course now&lt;/a&gt;!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=218" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/wp7dev/default.aspx">wp7dev</category></item><item><title>Migrating WP7 April CTP projects to WP7 Beta</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/07/12/migrating-wp7-april-ctp-projects-to-wp7-beta.aspx</link><pubDate>Mon, 12 Jul 2010 19:36:56 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:217</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;The Beta of the Windows Phone 7 developer tools has been released today! Get them from &lt;a href="http://developer.windowsphone.com"&gt;http://developer.windowsphone.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you have been building projects using the April CTP of the Windows Phone 7 developer tools, you’ll find a number of changes needed to get them to compile with the Beta version which was released on July 12th.&lt;/p&gt;  &lt;p&gt;You should also read &lt;a href="http://blogs.msdn.com/b/jaimer/archive/2010/06/28/migrating-apps-from-windows-phone-ctps-to-the-beta-build.aspx?wa=wsignin1.0"&gt;this posting&lt;/a&gt; from Jaime Rodriguez. In it he gives much more detail about the changes – read that for the complete story on the beta changes.&lt;/p&gt;  &lt;h3&gt;Namespace Declarations in XAML&lt;/h3&gt;  &lt;p&gt;In the CTP, there were multiple small dlls containing the various phone classes: Microsoft.Phone.dll, Microsoft.Phone.Controls.dll, Microsoft.Phone.Controls.Navigation.dll, Microsoft.Phone.Shell.dll. In the beta, these have all been combined into one: &lt;strong&gt;Microsoft.Phone.dll&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;The main impact of this is in the namespace declarations at the head of each xaml file. In the project item templates for the CTP, when you added a xaml page each had a namespace declaration mcp pointing at the Microsoft.Phone.Controls namespace – delete this. You will also find a phoneNavigation namespace declaration pointing at the Microsoft.Phone.Controls namespace, but in Microsoft.Phone.Controls.Navigation.dll.Change this to Microsoft.Phone.dll. I like to change the declared prefix from phoneNavigation to just ‘phone’ but that’s a personal preference:&lt;/p&gt;  &lt;p&gt;Change&lt;/p&gt;  &lt;pre class="code"&gt;    &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;mpc&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;phoneNavigation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Navigation&amp;quot;

&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:red;"&gt;    xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;phone&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone&amp;quot;
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;If you change the prefix, you’ll need to change uses of the old prefix as well, of course. For example, in each page:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;&lt;strong&gt;&lt;u&gt;phone&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PhoneApplicationPage 
    &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Class&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MyPhoneSample.MainPage&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;
    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone.Shell&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;    &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;phone&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone&amp;quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;…&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;span style="color:#a31515;"&gt;&lt;strong&gt;&lt;u&gt;phone&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PhoneApplicationPage&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt; &lt;/span&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;Removal of declaration of Phone Styles from App.Xaml&lt;/h3&gt;

&lt;p&gt;You should always use the built-in style names when styling controls, such as &lt;strong&gt;PhoneTextNormalStyle&lt;/strong&gt;. These styles ensure the output of a control is presented appropriately for Windows Phone and respects the users Theme selection.&lt;/p&gt;

&lt;p&gt;In the CTP, these styles were defined in each application in App.Xaml. In the Beta, you should remove these style declarations from App.Xaml as the definition of these styles is ‘baked into’ the runtime and you should only include style definitions in your xaml files for any custom styles you create that differ from the built-in ones.&lt;/p&gt;

&lt;p&gt;Delete everything from the &lt;span style="color:green;"&gt;&amp;lt;!--************ THEME RESOURCES ************—&amp;gt;&lt;/span&gt; comment to the end of the resources section: &lt;/p&gt;

&lt;pre class="code"&gt;    &lt;span style="color:green;"&gt;&amp;lt;!-- Resources for following the Windows Phone design guidelines --&amp;gt;
    &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Application.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

&lt;/span&gt;&lt;span style="color:blue;"&gt;            &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;!--************ THEME RESOURCES ************—&amp;gt;   &lt;font color="#000000"&gt;!DELETE FROM HERE DOWN&lt;/font&gt;
        &amp;lt;!-- Color Resources –&amp;gt;
       …
&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Application.Resources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;

&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;So now that these styles are no longer helpfully listed in your App.xaml, how do you look up the styles available? Well, read the documentation is one solution, or you can go to the &amp;lt;installDrive&amp;gt;:\\Program Files\Microsoft SDKs\Windows Phone\v7.0\Design folder and open up one of the theme files, for example DarkBlue.xaml – these contain the design time definitions of the phone styles. Open up System.Windows.xaml from the same folder and you can see the design time values of the styles for each of the standard controls.&lt;/p&gt;

&lt;p&gt;Since control styles are now implicit, you should remove Style property settings on your input controls from your xaml (unless you’ve created a custom style of course!). For example:&lt;/p&gt;

&lt;pre class="code"&gt;          &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBox &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;FirstName&lt;/span&gt;&lt;span style="color:blue;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;Mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=TwoWay}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Center&amp;quot;
            &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;tbFirstName&amp;quot; &lt;/span&gt;&lt;strike&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneTextBoxStyle&lt;/span&gt;&lt;/strike&gt;&lt;span style="color:blue;"&gt;&lt;strike&gt;}&amp;quot;&lt;/strike&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Grid.Column&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;1&amp;quot;
            &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;23,0,8,0&amp;quot;/&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;Title Blocks&lt;/h3&gt;

&lt;p&gt;These have changed a bit in the beta. The style names have changed, and you also need to define a margin on your title block to ensure it sits nicely under the phone status bar and indented from the left side of the screen:&lt;/p&gt;

&lt;p&gt;Change&lt;/p&gt;

&lt;pre class="code"&gt;        &lt;span style="color:green;"&gt;&amp;lt;!--TitleGrid is the name of the application and page title--&amp;gt;
        &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;TitleGrid&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Grid.Row&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;0&amp;quot;&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MY APPLICATION&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;textBlockPageTitle&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneTextPageTitle1Style&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;list&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;textBlockListTitle&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneTextPageTitle2Style&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;to&lt;/p&gt;

&lt;pre class="code"&gt;        &lt;span style="color:green;"&gt;&amp;lt;!--TitleGrid is the name of the application and page title--&amp;gt;
        &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;TitleGrid&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Grid.Row&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;0&amp;quot; &lt;u&gt;&lt;strong&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;24,24,0,12&amp;quot;&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/u&gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MY APPLICATION&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;textBlockPageTitle&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;u&gt;&lt;strong&gt;PhoneTextNormalStyle&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;list&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;textBlockListTitle&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;u&gt;&lt;strong&gt;PhoneTextTitle1Style&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Grid&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;List Items&lt;/h3&gt;

&lt;p&gt;In the CTP, there was a ListViewItem control that was a container for each item defined in a ListBox. Typically, the xaml looked like this:&lt;/p&gt;

&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ListBoxOne&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;Items&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;MouseLeftButtonUp&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ListBoxOne_MouseLeftButtonUp&amp;quot; &lt;br /&gt;                     &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneListBox&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DataTemplateStackPanel&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Orientation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DataTemplateBorder&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;44&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;44&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;BorderBrush&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;White&amp;quot; … &lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Path &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DataTemplatePath&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;16&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;11&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Fill&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;White&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Stretch&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Fill&amp;quot; … &lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Border&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;mpc&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListViewItem &lt;/span&gt;&lt;span style="color:red;"&gt;Layout&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;TextAndDetailsWithIcon&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;LineOne&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;br /&gt;                                         &lt;/span&gt;&lt;span style="color:red;"&gt;Details&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;LineTwo&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneListBoxItemLayout&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;As you can see, the &amp;lt;mpc:ListViewItem… line defines the content of each list item (the &lt;strong&gt;Text&lt;/strong&gt; and &lt;strong&gt;Details&lt;/strong&gt; properties are databound to the LineOne and LineTwo fields of the data source respectively), the &lt;strong&gt;Style&lt;/strong&gt; property is set to &lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneListBoxItemLayout&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;&lt;/span&gt; which is a style that you just deleted when we removed all those style definitions from App.Xaml and the &lt;strong&gt;Layout&lt;/strong&gt; property is set to the name of one of the layout options built into the ListViewItem control.&lt;/p&gt;

&lt;p&gt;Well, the predefined ListViewItem templates are no more, so instead we define the layout of our list item directly in the DataTemplate, as follows:&lt;/p&gt;

&lt;pre class="code"&gt;            &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MainListBox&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;ItemsSource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;Items&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;SelectionChanged&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MainListBox_SelectionChanged&amp;quot;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DataTemplateStackPanel&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Orientation&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Horizontal&amp;quot;&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Image &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ItemImage&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Source&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;/WindowsPhoneListApplication1;component/Images/ArrowImg.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;43&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;43&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Top&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;10,0,20,0&amp;quot;/&amp;gt;
                            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ItemText&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;LineOne&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;-2,-13,0,0&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneTextExtraLargeStyle&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
                                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;TextBlock &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;DetailsText&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Binding &lt;/span&gt;&lt;span style="color:red;"&gt;LineTwo&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Margin&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;0,-6,0,3&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Style&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;{&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StaticResource &lt;/span&gt;&lt;span style="color:red;"&gt;PhoneTextSubtleStyle&lt;/span&gt;&lt;span style="color:blue;"&gt;}&amp;quot;/&amp;gt;
                            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox.ItemTemplate&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ListBox&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This is easier to edit the layout on an app by app basis.&lt;/p&gt;

&lt;p&gt;Note the best way of getting this right is simply to create a new Windows Phone List project using the beta tools and copy the markup from there.&lt;/p&gt;

&lt;h3&gt;Application Bar Buttons&lt;/h3&gt;

&lt;p&gt;Application Bar Buttons must have a Text property defined, which defines a small string that shows underneath the button when the App Bar has focus.&lt;/p&gt;

&lt;pre class="code"&gt;    &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;phone&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PhoneApplicationPage.ApplicationBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBar &lt;/span&gt;&lt;span style="color:red;"&gt;IsVisible&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IsMenuEnabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;True&amp;quot;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarIconButton &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;appbar_button1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IconUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;/Images/appbar_button1.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;u&gt;&lt;strong&gt;Text&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;u&gt;&lt;strong&gt;=&amp;quot;Button 1&amp;quot;&lt;/strong&gt;&lt;/u&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarIconButton&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarIconButton &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;appbar_button2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;IconUri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;/Images/appbar_button2.png&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;&lt;u&gt;&lt;strong&gt;Text&lt;/strong&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;u&gt;&lt;strong&gt;=&amp;quot;Button 2&amp;quot;&lt;/strong&gt;&lt;/u&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarIconButton&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBar.MenuItems&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;menuItem1&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem 1&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarMenuItem &lt;/span&gt;&lt;span style="color:red;"&gt;x&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;menuItem2&amp;quot; &lt;/span&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;MenuItem 2&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBarMenuItem&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBar.MenuItems&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;shell&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ApplicationBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;phone&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;PhoneApplicationPage.ApplicationBar&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;So that’s a quick run through the major changes. Of course there are a number of other changes, but these are the ones that most people will encounter when updating CTP projects to the Beta. Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:825db0cf-c39f-418f-a3e4-b8a04ac4ff93" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/wp7dev" rel="tag"&gt;wp7dev&lt;/a&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=217" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/wp7dev/default.aspx">wp7dev</category></item><item><title>Review: .NET Compact Framework 3.5 Data Driven Applications</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/07/05/review-net-compact-framework-3-5-data-driven-applications.aspx</link><pubDate>Mon, 05 Jul 2010 06:01:12 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:215</guid><dc:creator>Peter Foot</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.packtpub.com/data-driven-applications-with-.net-compact-framework-3-5/book?utm_source=peterfoot.net&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_003598" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:8px 16px 8px 8px;display:inline;border-top:0px;border-right:0px;" title="0102_MockupCover_0" border="0" alt="0102_MockupCover_0" align="left" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peterfoot/0102_5F00_MockupCover_5F00_0_5F00_6E6AFC73.jpg" width="129" height="156" /&gt;&lt;/a&gt; Like &lt;a href="http://blogs.compactframework.de/Peter.Nowak" target="_blank"&gt;Peter Nowak&lt;/a&gt; I was asked to review this recent release. Unfortunately due to other commitments it has taken the best part of a month to finish it. To avoid repeating the same points I recommend you read &lt;a href="http://blogs.compactframework.de/Peter.Nowak/2010/06/25/New+Book+On+NET+CF+35+Development+Reviewed.aspx" target="_blank"&gt;Peter’s review&lt;/a&gt;. While the current focus at Microsoft is on the upcoming Windows Phone 7 platform, we should not forget that there is still a demand for line of business applications for custom Windows CE platforms and Windows Mobile (and its Windows Embedded Handheld offspring) for enterprise devices.&lt;/p&gt;  &lt;p&gt;I think the format of following a real-world application through the book provides a nice thread to tie together the various concepts described but often with this kind of approach you find features are shoe-horned in to show off a particular technology – a good example in this case is the IrDA/Bluetooth transfer of accounts between agents in a Sales application. Peter noted that the book does not describe the current situation with Visual Studio 2010 and why 2008 is needed for .NETCF 3.5 development but I think this is excusable based on the timescales involved in writing a book and how clearly this message was communicated by Microsoft. &lt;/p&gt;  &lt;p&gt;The application design focuses exclusively on Windows Mobile and doesn’t cover issues when targeting other Windows CE platforms (such as Windows Mobiles enforced single-instance versus Windows CE default support for multiple instances of an application or just difference between the shells and screen layout). It also doesn’t cover form rotation and design for different DPI screens or implemented a locked-down kiosk mode. A personal gripe is the use of a SerialPort to do a Bluetooth transfer which is not the nicest solution, but then I suppose &lt;a href="http://32feet.codeplex.com" target="_blank"&gt;I’m biased&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ultimately there is some good content in the book but it is unfortunately let down by being late to the party and the application scenarios try too hard to be all things to all people and ultimately not always 100% believable. It provides a starting point to work from and introduces a lot of functional areas from data synchronisation through to automatic update.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=215" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Books/default.aspx">Books</category></item><item><title>VS2008 - An operation was attempted on something that is not a socket.</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/06/30/vs2008-an-operation-was-attempted-on-something-that-is-not-a-socket.aspx</link><pubDate>Wed, 30 Jun 2010 21:12:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:213</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;We have recently been doing a&amp;nbsp;.Net CF&amp;nbsp;project, where the device doesn&amp;#39;t connect to the development PC using Activesync, but is connected via WiFi or even Infra Red. &lt;/p&gt;
&lt;p&gt;Peter had a problem trying to deploy the project, and kept getting the message &amp;#39;An operation was attempted on something that is not a socket.&amp;#39; This was despite the fact that nothing in the infrastructure had changed. &lt;/p&gt;
&lt;p&gt;We briefly chatted about it, and decided to come back to it. I made some mods to the code, attempted to deploy, and lo-and-behold I got the message &amp;#39;An operation was attempted on something that is not a socket.&amp;#39;. I did the usual things:-&lt;/p&gt;
&lt;p&gt;Reboot PC&lt;br /&gt;Reboot Device&lt;br /&gt;Connect to device&lt;br /&gt;FTP To device&lt;/p&gt;
&lt;p&gt;Connecting to the device succeeded, as did FTP, but as soon as I tried to deploy, I got the error message. At that point I could no longer connect to the device. After some diligent &amp;#39;Googling&amp;#39;, and starting to look at the&amp;nbsp;101000 results, &amp;nbsp;I came across a several people with the same problem, several suggestions, but no real answers. One solution was to re-install the&amp;nbsp;OS, and Visual&amp;nbsp;Studio - a bit drastic considering our deadlines. &lt;/p&gt;
&lt;p&gt;Then I hit pay dirt - try deleting the target folder on the device, and then deploy. Bingo - it worked. I emailed this suggestion to Peter, and it solved the problem. Hope this helps someone else in the future - and is easier to find.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=213" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/An+operation+was+attempted+on+something+that+is+not+a+socket/default.aspx">An operation was attempted on something that is not a socket</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/VS2008/default.aspx">VS2008</category></item><item><title>Microsoft Surface Bluetooth Connect Code Sample</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/06/22/microsoft-surface-bluetooth-connect-code-sample.aspx</link><pubDate>Mon, 21 Jun 2010 23:45:24 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:205</guid><dc:creator>Peter Foot</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;a href="http://appamundi.com" target="_blank"&gt;APPA Mundi&lt;/a&gt; recently worked with the Microsoft Surface team to put together a code sample showing the exchange of information from a Surface to a nearby Bluetooth enabled phone using standard protocols. This means that any phone which supports standard Object Exchange (OBEX) protocols can receive items from the Surface without installing any client software.&lt;/p&gt;  &lt;p&gt;The sample code is available in the MSDN Code Gallery:-&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/surfacebluetooth"&gt;http://code.msdn.microsoft.com/surfacebluetooth&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This code sample is designed for use with the Microsoft Surface 1.0 SP1 SDK and makes use of the .NET Bluetooth library binary file available from &lt;a href="http://32feet.codeplex.com"&gt;http://32feet.codeplex.com&lt;/a&gt;. The sample code is provided &amp;quot;as-is&amp;quot; and is not supported. Alongside the standard functionality in 32feet.NET the sample illustrates using the notifications supported in the desktop Windows API and shows how to consume these from within a WPF application (the API uses native Windows messages).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=205" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Code/default.aspx">Code</category></item><item><title>New Book on .NETCF 3.5 Development</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/06/17/new-book-on-netcf-3-5-development.aspx</link><pubDate>Thu, 17 Jun 2010 05:07:41 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:202</guid><dc:creator>Peter Foot</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;a href="http://www.packtpub.com/data-driven-applications-with-.net-compact-framework-3-5/book?utm_source=peterfoot.net&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_003598"&gt;&lt;img style="border-bottom:0px;border-left:0px;margin:0px 16px 0px 0px;display:inline;border-top:0px;border-right:0px;" title="0102_MockupCover_0" border="0" alt="0102_MockupCover_0" align="left" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/peterfoot/0102_5F00_MockupCover_5F00_0_5F00_7CCF3CD0.jpg" width="129" height="156" /&gt;&lt;/a&gt; Despite Windows Phone 7 Development being all-the-rage at the moment I was recently informed of a new book on .NET Compact Framework development. I’ll be reviewing it shortly, in the mean time you can check out the details (including a free chapter download):-&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.packtpub.com/data-driven-applications-with-.net-compact-framework-3-5/book?utm_source=peterfoot.net&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_003598" target="_blank"&gt;.NET Compact Framework Data Driven Applications&lt;/a&gt;&lt;a title="book-utm_source=peterfoot.net&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_003598" href="http://www.packtpub.com/data-driven-applications-with-.net-compact-framework-3-5/book?utm_source=peterfoot.net&amp;amp;utm_medium=bookrev&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_003598"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=202" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Books/default.aspx">Books</category></item><item><title>DDD-Day Sydney 17th July</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/06/16/ddd-day-sydney-17th-july.aspx</link><pubDate>Wed, 16 Jun 2010 05:00:30 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:200</guid><dc:creator>Peter Foot</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Following the format of the excellent Developer-Developer-Developer-Day events in the UK, Lewis Benge is organising an event on 17th July in Sydney. If you are in the Sydney area then I urge you to check out the website and register for this free event:-&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dddsydney.com"&gt;http://www.dddsydney.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As well as a range of .NET topics there will be a Windows Phone 7 session and labs.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=200" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Events/default.aspx">Events</category></item><item><title>Programming Silverlight for Windows Embedded from .NET – Part 2</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/15/programming-silverlight-for-windows-embedded-from-net-part-2.aspx</link><pubDate>Tue, 15 Jun 2010 17:28:47 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:196</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In this series of posts, I explain how you can use a Silverlight for Windows Embedded (SWE) UI but write all your application logic using C# or Visual Basic. In &lt;a href="http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/10/programming-silverlight-for-windows-embedded-from-net.aspx"&gt;the first post&lt;/a&gt;, you can find the example code and links to the slides and video recording of the session I delivered at Tech Ed North America 2010, In this post, I will walk through using the Windows Embedded Silverlight Tools to create a native executable, then in the next posts I will convert the native exe to a dll, export some functions from it and then control the UI from managed code.&lt;/p&gt;  &lt;h2&gt;Using the Windows Embedded Silverlight Tools (WEST)&lt;/h2&gt;  &lt;p&gt;The Windows Embedded Compact 7 CTP includes tools that integrate into Visual Studio 2008 which read the XAML files in a Expression Blend 3 project and generate a functional native exe which contains placeholder event handler code for any events declared in the XAML – all you have to do is edit the template code to complete your application functionality.&lt;/p&gt;  &lt;p&gt;In this sample, I’ve built a simple UI using Expression Blend that incorporates key elements that we would like to be able to program from managed code:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Some buttons – we want to write event handler code in C# or VB &lt;/li&gt;    &lt;li&gt;A TextBox – from managed code, we want to be able to set and get the Text in the control &lt;/li&gt;    &lt;li&gt;An animation – we would like to be able to start an animation storyboard from managed code &lt;/li&gt; &lt;/ul&gt; &lt;a href="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andywigley/SWEsample_5F00_5913ABD5.jpg"&gt;&lt;img style="border-right-width:0px;margin:5px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="SWEsample" border="0" alt="SWEsample" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andywigley/SWEsample_5F00_thumb_5F00_16C09392.jpg" width="244" height="176" /&gt;&lt;/a&gt;   &lt;p&gt;The XAML for this looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;UserControl      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/font&gt;&lt;/a&gt;     &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns:x=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/font&gt;&lt;/a&gt;     &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; xmlns:d=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/expression/blend/2008&amp;quot;"&gt;&lt;font face="Courier New"&gt;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt; xmlns:mc=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;"&gt;&lt;font face="Courier New"&gt;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;/font&gt;&lt;/a&gt;     &lt;br /&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; x:Class=&amp;quot;SLManagedSample.MainPage&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Width=&amp;quot;640&amp;quot; Height=&amp;quot;457&amp;quot; mc:Ignorable=&amp;quot;d&amp;quot; Margin=&amp;quot;0,1,0,-1&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;UserControl.Resources&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Storyboard x:Name=&amp;quot;MyStoryboard&amp;quot; AutoReverse=&amp;quot;True&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DoubleAnimationUsingKeyFrames BeginTime=&amp;quot;00:00:00&amp;quot; Storyboard.TargetName=&amp;quot;MyTextBox&amp;quot; Storyboard.TargetProperty=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame KeyTime=&amp;quot;00:00:02&amp;quot; Value=&amp;quot;360&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CubicEase EasingMode=&amp;quot;EaseInOut&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DoubleAnimationUsingKeyFrames BeginTime=&amp;quot;00:00:00&amp;quot; Storyboard.TargetName=&amp;quot;MyTextBox&amp;quot; Storyboard.TargetProperty=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame KeyTime=&amp;quot;00:00:02&amp;quot; Value=&amp;quot;138.448&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CubicEase EasingMode=&amp;quot;EaseInOut&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DoubleAnimationUsingKeyFrames BeginTime=&amp;quot;00:00:00&amp;quot; Storyboard.TargetName=&amp;quot;MyTextBox&amp;quot; Storyboard.TargetProperty=&amp;quot;(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame KeyTime=&amp;quot;00:00:02&amp;quot; Value=&amp;quot;-58.026&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;CubicEase EasingMode=&amp;quot;EaseInOut&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame.EasingFunction&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/EasingDoubleKeyFrame&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/DoubleAnimationUsingKeyFrames&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Storyboard&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/UserControl.Resources&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;UserControl.OpacityMask&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LinearGradientBrush EndPoint=&amp;quot;0.5,1&amp;quot; StartPoint=&amp;quot;0.5,0&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GradientStop Color=&amp;quot;#FF000000&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GradientStop Color=&amp;quot;#FFFFFFFF&amp;quot; Offset=&amp;quot;1&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LinearGradientBrush&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/UserControl.OpacityMask&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid.Background&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;LinearGradientBrush EndPoint=&amp;quot;0.5,1&amp;quot; StartPoint=&amp;quot;0.5,0&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GradientStop Color=&amp;quot;#FFE41A1A&amp;quot; Offset=&amp;quot;0&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;GradientStop Color=&amp;quot;#FFB1E018&amp;quot; Offset=&amp;quot;1&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/LinearGradientBrush&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid.Background&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button Height=&amp;quot;99&amp;quot; Margin=&amp;quot;176,44,216,0&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Click=&amp;quot;OnButtonClick&amp;quot;&amp;#160; Background=&amp;quot;#FF32A625&amp;quot; x:Name=&amp;quot;MyButton&amp;quot; Content=&amp;quot;Click Me!&amp;quot; FontSize=&amp;quot;24&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button Height=&amp;quot;31.558&amp;quot; Width=&amp;quot;86.53&amp;quot; Content=&amp;quot;Start&amp;quot; VerticalAlignment=&amp;quot;Bottom&amp;quot; Margin=&amp;quot;0,0,58,54&amp;quot; HorizontalAlignment=&amp;quot;Right&amp;quot; x:Name=&amp;quot;BtnStart&amp;quot; Click=&amp;quot;BtnStart_Click&amp;quot; FontSize=&amp;quot;16&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button.Effect&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;DropShadowEffect/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Button.Effect&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Button&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TextBox Height=&amp;quot;45&amp;quot; Margin=&amp;quot;176,168,237,0&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Text=&amp;quot;TextBox&amp;quot; TextWrapping=&amp;quot;Wrap&amp;quot; Background=&amp;quot;#FFDACB19&amp;quot; x:Name=&amp;quot;MyTextBox&amp;quot; RenderTransformOrigin=&amp;quot;0.5,0.5&amp;quot; FontSize=&amp;quot;18.667&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TextBox.RenderTransform&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TransformGroup&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ScaleTransform/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SkewTransform/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;RotateTransform/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TranslateTransform/&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/TransformGroup&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/TextBox.RenderTransform&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/TextBox&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid&amp;gt;       &lt;br /&gt;&amp;lt;/UserControl&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andywigley/SWEsample_5F00_1C9B372B.jpg"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So, nothing too complex, but it’s good for the purposes of this exercise which is to run a XAML UI, to handle click and other events and to set and get properties of controls, all from managed code.&lt;/p&gt;  &lt;h2&gt;Running the WEST tools&lt;/h2&gt;  &lt;p&gt;It turns out that the easiest way to build a managed SWE app is to first build a native app and then convert that to something we can call from managed.&lt;/p&gt;  &lt;p&gt;To generate a SWE native app using the tools:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Save your files in Expression Blend &lt;/li&gt;    &lt;li&gt;Open Visual Studio 2008 and create a new project. Select Visual C++ – Smart Device Application and then select the Silverlight for Windows Embedded Application project type. Give it a suitable name: I called mine SWENative. &lt;/li&gt;    &lt;li&gt;In the Silverlight for Windows Embedded Application Wizard, it      &lt;ul&gt;       &lt;li&gt;First asks you which SDK to target. Select an SDK (if you’re new to Platform Builder this will confuse you; In Platform Builder, you build the&lt;a href="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andywigley/SWEToolsWizard_5F00_61675B5F.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;margin-left:0px;border-left-width:0px;margin-right:0px;" title="SWEToolsWizard" border="0" alt="SWEToolsWizard" align="right" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/andywigley/SWEToolsWizard_5F00_thumb_5F00_6F76248F.png" width="244" height="210" /&gt;&lt;/a&gt; Windows Embedded Compact 7 OS for your target hardware and you can optionally generate an SDK for your OS design that contains all the header files and libraries for the OS components you have selected for your OS – read the MSDN documentation for more info on this). &lt;/li&gt;        &lt;li&gt;Then it asks you the path to your Expression Blend project &lt;/li&gt;        &lt;li&gt;It parses the XAML files in that project and checks the validity &lt;/li&gt;        &lt;li&gt;Then it generates the C++ project code for you &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The code it has generated is a functioning application, only the event handlers are empty. It’s really worth examining the code it has generated, as these are effectively the keys to our kingdom, albeit for this very simple example.&lt;/p&gt;  &lt;p&gt;The application entry point and control logic is in Winmain.cpp:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;stdafx.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;App.h&amp;quot;

&lt;/span&gt;&lt;span style="color:green;"&gt;// ============================================================================
//  WinMain
//
//  Description: Set the window creation parameters for this application.
//
//  Parameters:  hInstance - Handle to the current instance of the application.
//               hInstPrev - This parameter is always NULL.
//               lpCmdLine - Command line for the application, excluding the program name.
//               nCmdShow - Specifies how the window is to be shown.
// ============================================================================
&lt;/span&gt;INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE &lt;span style="color:green;"&gt;/*hInstPrev*/&lt;/span&gt;, LPWSTR &lt;span style="color:green;"&gt;/*lpCmdLine*/&lt;/span&gt;, &lt;span style="color:blue;"&gt;int &lt;/span&gt;&lt;span style="color:green;"&gt;/*nShowCmd*/&lt;/span&gt;)
{
    App AppInstance;

    HRESULT hr = AppInstance.Initialize(hInstance);
    &lt;span style="color:blue;"&gt;if&lt;/span&gt;(SUCCEEDED(hr))
    {
        hr = AppInstance.Run();
    }

    &lt;span style="color:blue;"&gt;return &lt;/span&gt;AppInstance.GetWinMainResultCode();
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;That’s it! You can see that it declares an instance of the &lt;strong&gt;App&lt;/strong&gt; class, calls the &lt;strong&gt;Initialize&lt;/strong&gt; method of that class, then calls the &lt;strong&gt;App::Run&lt;/strong&gt; method. &lt;strong&gt;Run&lt;/strong&gt; doesn’t return until the UI message pump exits – in other words not until your user clicks a Close button on your UI, assuming you’ve added one and written logic in the event handler to shut down the XAML UI). Those two methods, App::Initialize and App::Run contain all the logic we need to get our XAML UI running and in the next post I’ll show you how to convert this WinMain function into a function you can call from a managed app.&lt;/p&gt;

&lt;p&gt;If you dig a little deeper, you’ll find that the tools have generated a C++ class for each of the XAML files in your Expression Blend project. In this sample, there is only one XAML file, MainPage.xaml, so the tools have generated MainPage.cpp and MainPage.h. If you take a look inside it, you’ll see that in MainPage.h, the tools have generated a field member for each named control in the XAML:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;#pragma region &lt;/span&gt;GeneratedCode
    &lt;span style="color:green;"&gt;// ============================================================================
    //  WARNING: DO NOT EDIT THIS ALWAYS-GENERATED CODE
    // ============================================================================
    &lt;/span&gt;HRESULT OnLoaded(__in IXRDependencyObject* pRoot);
    HRESULT InitializeComponent();

    IXRGridPtr                 m_pLayoutRoot;                 &lt;span style="color:green;"&gt;// &amp;lt;Grid x:Name=&amp;quot;LayoutRoot&amp;quot;&amp;gt;
    &lt;/span&gt;IXRButtonPtr               m_pMyButton;                   &lt;span style="color:green;"&gt;// &amp;lt;Button x:Name=&amp;quot;MyButton&amp;quot;&amp;gt;
    &lt;/span&gt;IXRButtonPtr               m_pBtnStart;                   &lt;span style="color:green;"&gt;// &amp;lt;Button x:Name=&amp;quot;BtnStart&amp;quot;&amp;gt;
    &lt;/span&gt;IXRTextBoxPtr              m_pMyTextBox;                  &lt;span style="color:green;"&gt;// &amp;lt;TextBox x:Name=&amp;quot;MyTextBox&amp;quot;&amp;gt;
    // ============================================================================
    //  WARNING: DO NOT EDIT THIS ALWAYS-GENERATED CODE
    // ============================================================================
&lt;/span&gt;&lt;span style="color:blue;"&gt;#pragma endregion &lt;/span&gt;GeneratedCode&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;And inside MainPage.cpp, you can find a method called InitializeComponent which locates the objects in the XAML object tree simply by calling the FindName method which searches for a control of the right type with the correct name. There are also the placeholder event handlers for the &lt;strong&gt;Click&lt;/strong&gt; events on the buttons.Here’s the complete code for MainPage.cpp in my sample:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;stdafx.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;SWENativeGenerated.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;MainPage.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;App.h&amp;quot;
&lt;/span&gt;&lt;span style="color:blue;"&gt;#include &lt;/span&gt;&lt;span style="color:#a31515;"&gt;&amp;quot;resource.h&amp;quot;

&lt;/span&gt;&lt;span style="color:green;"&gt;// ============================================================================
//  OnLoaded
//
//  Description: Calls InitializeComponent to bind member variables to named
//               elements, and attach event handlers specified in XAML
//
//  Parameters:  pRoot - The root dependency object.
// ============================================================================
&lt;/span&gt;HRESULT MainPage::OnLoaded(__in IXRDependencyObject* pRoot)
{
    UNREFERENCED_PARAMETER(pRoot);

    HRESULT hr = InitializeComponent();

    &lt;span style="color:green;"&gt;// Add calls to FindName or Add___EventHandler() methods after this comment.
    &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(m_pMyButton)
    {
        m_pMyButton-&amp;gt;AddClickEventHandler(CreateDelegate(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &amp;amp;MainPage::OnButtonClick));
    }

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(m_pBtnStart)
    {
        m_pBtnStart-&amp;gt;AddClickEventHandler(CreateDelegate(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &amp;amp;MainPage::BtnStart_Click));
    }


    &lt;span style="color:blue;"&gt;return &lt;/span&gt;hr;
} &lt;span style="color:green;"&gt;// OnLoaded

// ============================================================================
//  OnButtonClick
// 
//  Description: Event handler implementation
//
//  Parameters:  pSender - The dependency object that raised the click event.
//               pArgs - Event specific arguments.
// ============================================================================
&lt;/span&gt;HRESULT MainPage::OnButtonClick (IXRDependencyObject* pSender, XRMouseButtonEventArgs* pArgs)
{
    HRESULT hr = E_NOTIMPL;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((NULL == pSender) || (NULL == pArgs))
    {
        hr = E_INVALIDARG;
    }

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(App::ClickCallback != NULL)
    {
        BSTR controlName;
        pSender-&amp;gt;GetName(&amp;amp;controlName);
        App::ClickCallback((LPWSTR)controlName);
        hr = S_OK;
    }
    &lt;span style="color:blue;"&gt;return &lt;/span&gt;hr;
}

&lt;span style="color:green;"&gt;// ============================================================================
//  BtnStart_Click
// 
//  Description: Event handler implementation
//
//  Parameters:  pSender - The dependency object that raised the click event.
//               pArgs - Event specific arguments.
// ============================================================================
&lt;/span&gt;HRESULT MainPage::BtnStart_Click (IXRDependencyObject* pSender, XRMouseButtonEventArgs* pArgs)
{
    HRESULT hr = E_NOTIMPL;

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;((NULL == pSender) || (NULL == pArgs))
    {
        hr = E_INVALIDARG;
    }

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(App::ClickCallback != NULL)
    {
        BSTR controlName;
        pSender-&amp;gt;GetName(&amp;amp;controlName);
        App::ClickCallback((LPWSTR)controlName);
        hr = S_OK;
    }
    &lt;span style="color:blue;"&gt;return &lt;/span&gt;hr;
}


&lt;span style="color:blue;"&gt;#pragma region &lt;/span&gt;GeneratedCode
&lt;span style="color:green;"&gt;// ============================================================================
//  WARNING: DO NOT EDIT THIS ALWAYS-GENERATED CODE
// ============================================================================
&lt;/span&gt;HRESULT MainPage::InitializeComponent()
{
    HRESULT hr = E_FAIL;

    FindName(L&lt;span style="color:#a31515;"&gt;&amp;quot;LayoutRoot&amp;quot;&lt;/span&gt;, &amp;amp;m_pLayoutRoot);
    FindName(L&lt;span style="color:#a31515;"&gt;&amp;quot;MyButton&amp;quot;&lt;/span&gt;, &amp;amp;m_pMyButton);
    FindName(L&lt;span style="color:#a31515;"&gt;&amp;quot;BtnStart&amp;quot;&lt;/span&gt;, &amp;amp;m_pBtnStart);
    FindName(L&lt;span style="color:#a31515;"&gt;&amp;quot;MyTextBox&amp;quot;&lt;/span&gt;, &amp;amp;m_pMyTextBox);

    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(m_pLayoutRoot &amp;amp;&amp;amp;
        m_pMyButton &amp;amp;&amp;amp;
        m_pBtnStart &amp;amp;&amp;amp;
        m_pMyTextBox
       )
    {
        hr = S_OK;
    }

    &lt;span style="color:blue;"&gt;return &lt;/span&gt;hr;
}
&lt;span style="color:green;"&gt;// ============================================================================
//  WARNING: DO NOT EDIT THIS ALWAYS-GENERATED CODE
// ============================================================================
&lt;/span&gt;&lt;span style="color:blue;"&gt;#pragma endregion &lt;/span&gt;GeneratedCode&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This simple technique of using &lt;strong&gt;FindName&lt;/strong&gt; is how you find controls so you can get or set their properties or call methods on them, and this will come in useful in the next post when we write some logic to allow a managed app to call exported functions in a native dll to interact with controls in the XAML visual tree. Also in the next post, I will add code into the event handlers to call back to event handler logic inside a C# application.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=196" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Embedded+Compact/default.aspx">Windows Embedded Compact</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/SWE/default.aspx">SWE</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight+for+Windows+Embedded/default.aspx">Silverlight for Windows Embedded</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+CE/default.aspx">Windows CE</category></item><item><title>Programming Silverlight for Windows Embedded from .NET</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/10/programming-silverlight-for-windows-embedded-from-net.aspx</link><pubDate>Thu, 10 Jun 2010 21:04:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:189</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Today at Tech Ed in New Orleans, I gave a presentation on how to use a Silverlight for Windows Embedded (SWE) UI from a .NET Compact Framework app. SWE is available for Windows CE 6.0 R3 and Windows Embedded Compact 7, but in both cases it ships with only a native API. In this presentation, I demonstrated how you can use some relatively simple p/invoke techniques to allow you to write all your application logic using C# but control and interact with a native dll that drives a SWE UI.&lt;/p&gt;
&lt;p&gt;You can download the app I built from the &amp;#39;Attachment&amp;#39; link shown at the bottom of this post. For now, I present this without further explanation so that those people who came to the talk can get the code. I will update this post sometime soon with an explanation of the techniques and instructions on how to get the sample running (hint: you have to download the Windows Embedded Compact 7 CTP, install onto a system with Visual Studio 2008 SP1, use Platform Builder to cook a CE7 OS and build an SDK and boot the new OS into a virtual machine!).&lt;/p&gt;
&lt;p&gt;Thank you to all those people who attended the talk!&lt;/p&gt;
&lt;p&gt;*UPDATE*&amp;nbsp;You can now view the&amp;nbsp;video recording of this session at &lt;a href="http://www.msteched.com/2010/NorthAmerica/WEM309"&gt;http://www.msteched.com/2010/NorthAmerica/WEM309&lt;/a&gt;, and download the slides or the WMV or MP4 recording.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=189" width="1" height="1"&gt;</description><enclosure url="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.01.89/SWEfromManagedCode.zip" length="38905" type="application/x-zip-compressed" /><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Embedded+Compact/default.aspx">Windows Embedded Compact</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/SWE/default.aspx">SWE</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight+for+Windows+Embedded/default.aspx">Silverlight for Windows Embedded</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+CE/default.aspx">Windows CE</category></item><item><title>Perst - a database for Windows Phone 7 Silverlight - Part 2</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/08/perst-a-database-for-windows-phone-7-silverlight-part-2.aspx</link><pubDate>Tue, 08 Jun 2010 16:05:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:187</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;In this post, I explain some of the key logic in the Perst sample showing how to create a database and create, delete, read and search records. You&amp;#39;ll need to look at the full sample code that you can download from the previous post on this topic: &lt;a href="http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/07/perst-a-database-for-windows-phone-7-silverlight.aspx" title="Perst - a database for Windows Phone 7 Silverlight"&gt;Perst - a database for Windows Phone 7 Silverlight&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Creating a Perst Database&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;When the app starts up, the ApplicationStartup event handler gets a reference to the IsolatedStorage for the application and looks to see if the database container file exists (the name of the container file is defined in the&amp;nbsp;StorageName property of the DataGenerator class as &amp;quot;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-family:Consolas;color:#a31515;"&gt;PerstDemoDB.dbs&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-family:Consolas;color:#a31515;"&gt;&lt;span style="font-family:Consolas;color:#a31515;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:Verdana;"&gt;&amp;quot;. If the file already exists, then the app has been run before so we just call the InitializePerstStorage method to setup the objects to access the existing database. If the file does not exist, then this is the first running of the app so no further logic executes during startup - the user has to open the menu on the main screen and tap the &lt;strong&gt;generate data&lt;/strong&gt; menu item to create the database.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; ApplicationStartup(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; sender, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;StartupEventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;using&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; stor = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;IsolatedStorageFile&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.GetUserStoreForApplication())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (stor.FileExists(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;DataGenerator&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.StorageName))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializePerstStorage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;The InitializePerstStorage method calls the &lt;strong&gt;CreateStorage&lt;/strong&gt; method of the &lt;strong&gt;StorageFactory&lt;/strong&gt; singleton to create the perst persistant storage. Then it sets a couple of properties that set the initial size of the container file (on first opening) and the amount it will be auto-extended by each time it needs to grow to accomodate more objects, after which it calls the &lt;strong&gt;Open&lt;/strong&gt; method to&amp;nbsp;create the Perst storage container. Finally it creates a &lt;strong&gt;Database&lt;/strong&gt; object that wraps the Perst storage and allows you to&amp;nbsp;program it in much the same way as you would a relational database, working with tables and rows. The Database wrapper&amp;nbsp;is optional, but if you program Perst&amp;nbsp;using its &amp;#39;vanilla&amp;#39; object database API, the code you write to interact with it is different from that used in this sample. If you are interested in using Perst as an object database, then read the documentation&amp;nbsp;here: &lt;a target="_blank" href="http://www.mcobject.com/index.cfm?fuseaction=download&amp;amp;pageid=642&amp;amp;sectionid=139" title="Tutorial and Getting Started for .NET"&gt;Tutorial and Getting Started for .NET&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;internal&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; InitializePerstStorage()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; storage = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;StorageFactory&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.Instance.CreateStorage(); &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Creating Instance of Perst Storage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;storage.SetProperty(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&amp;quot;perst.file.extension.quantum&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, 512 * 1024); &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Initial Size set 512KB&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;storage.SetProperty(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&amp;quot;perst.extension.quantum&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, 256 * 1024); &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Step of storage extension 256KB &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;storage.Open(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;DataGenerator&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.StorageName, 0); &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Open Storage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;//Create Database wrapper over Perst Storage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;Database = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Database&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;(storage, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextSearchHelper&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;(storage));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database.EnableAutoIndices = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;//Turn off auto-index creation (defined manually)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;Creating Tables&lt;/h3&gt;
&lt;p&gt;All the code that creates the database and the records of sample data&amp;nbsp;inside it are in the DataGenerator class. When using the Perst database wrapper, you don&amp;#39;t have to explicitly create tables - you can just create an instance of a &amp;#39;persistence-enabled&amp;#39; class and store it in the database; the table that contains it is created implicitly.&lt;/p&gt;
&lt;p&gt;How do you create a &amp;#39;persistence-enabled&amp;#39; class? One simple way is to have your viewmodel class inherit from the &lt;strong&gt;Perst.Persistent&lt;/strong&gt; class which is what is done here. If you look at the &lt;strong&gt;Contact&lt;/strong&gt; class in the ViewModels folder, you&amp;#39;ll see that it inherits from a class called &lt;strong&gt;Base&lt;/strong&gt;, which itself inherits from &lt;strong&gt;Persistent&lt;/strong&gt;. You&amp;#39;ll also notice that certain fields are marked with the &lt;strong&gt;[FullTextIndexable]&lt;/strong&gt; attribute which causes them to be included in the full text search index that perst maintains. Notice that the fields have to be public which is regrettable, but you&amp;#39;ll get runtime errors if you make them private as the Perst Database wrapper uses reflection to get at field values of data records which falls down if you make them private.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; : &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Base&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;INotifyPropertyChanged&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Fields must be public because Perst database class uses reflection to get field values&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextIndexable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextIndexable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; company;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; email;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextIndexable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; firstName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextIndexable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; lastName;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; Address&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;get&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; { &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; address; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;set &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;value&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InvokePropertyChanged(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;PropertyChangedEventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&amp;quot;Address&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#008000;"&gt;// Lots more not shown...&lt;/span&gt; &lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; InvokePropertyChanged(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;PropertyChangedEventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; handler = PropertyChanged;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (handler != &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;) handler(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Saving Records in&amp;nbsp;Tables&lt;/h3&gt;
&lt;p&gt;To save a record, you call the &lt;strong&gt;Store&lt;/strong&gt; method of the &lt;strong&gt;Persistent&lt;/strong&gt; base class. In this sample, the &lt;strong&gt;Base&lt;/strong&gt; class that &lt;strong&gt;Contact&lt;/strong&gt; (and the other data classes in this sample) inherit from has a method called &lt;strong&gt;Save&lt;/strong&gt; that not only stores the object in the database but also updates the Full Text Search index as follows:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; Save()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Store();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Manually updating index for all fields marked with&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt; [FullTextIndexable] attribute&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;Database.UpdateFullTextIndex(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Deleting Records from a table&lt;/h3&gt;
&lt;p&gt;To delete a record, you call the &lt;strong&gt;Database.DeleteRecord&lt;/strong&gt; method. This is found in the &lt;strong&gt;Deallocate&lt;/strong&gt; method of the &lt;strong&gt;Base&lt;/strong&gt; class:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; Deallocate()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database.DeleteRecord(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;}&lt;/p&gt;
&lt;h3&gt;Getting Records from a Table&lt;/h3&gt;
&lt;p&gt;If you look at the constructor of the ContactsViewModel class, you can see two examples of how to fetch all the Contacts records from the database. The uncommented version shows how you can use the &lt;strong&gt;Database.Select&amp;lt;T&amp;gt;&lt;/strong&gt; method to use T-SQL - like syntax to fetch a subset - or in this case &lt;em&gt;ordered&lt;/em&gt; - collection of records:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;public&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;ContactsViewModel()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contacts = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;ObservableCollection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Get all contacts from database&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (Database != &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;//Contacts = Database.GetRecords&amp;lt;Contact&amp;gt;().ToObservableCollection(); // Load all contacts&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;Contacts = Database.Select&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#a31515;font-size:x-small;"&gt;&amp;quot;order by LastName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;).ToObservableCollection(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Load them but sorted&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The commented out line is valid too, just not used here. It shows how to retrieve all the records of a certain type from the database using the &lt;strong&gt;Database.GetRecords&amp;lt;T&amp;gt;&lt;/strong&gt; method.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Using Full Text Search&lt;/h3&gt;
&lt;p&gt;One really interesting feature of this sample is the Full Text Index search. As you can see in the code samples earlier in this post, certain fields in the &lt;strong&gt;Contact&lt;/strong&gt; record are marked with the&lt;strong&gt; [FullTextIndexable]&lt;/strong&gt; attribute, and when a record is stored in the database, the &lt;strong&gt;Database.UpdateFullTextIndex(object)&lt;/strong&gt; record is called to keep the index up to date (you should also call this method after updating a data object).&lt;/p&gt;
&lt;p&gt;When the user taps the Search icon on the AppBar (and yes, I know: the search should be enabled by the physical search button on the phone, but in this version of the tools there is no event fired by the phone search button), the Search box shows on the screen. The control shown there is a custom control of type &lt;strong&gt;AutosuggestTextBox&lt;/strong&gt; which is a specialisation of the &lt;strong&gt;AutoCompleteBox&lt;/strong&gt; control from the Silverlight Toolkit. This sample app uses the Full Text Search in two interesting ways: firstly, as the user enters characters into the search box, the code in the &lt;strong&gt;AutosuggestTextBox.OnPopulating&lt;/strong&gt; method returns a list of words from the Full Text Search index that contain the characters entered. This list is then set to be the &lt;strong&gt;ItemsSource&lt;/strong&gt; of the AutosuggestTextBox which determines the list of words that display in the dropdown list component of the control. The user can select a word in the list to save them typing in the full word.&lt;/p&gt;
&lt;p&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstSearch.jpg" alt="Search" style="vertical-align:middle;" /&gt;Here&amp;#39;s the code from AutosuggestTextBox.cs that fetches the matching words from the index. The try catch is just a workaround for a bug in the WP7 tools CTP that was throwing an InvalidCastException at design time only which was stopping the designer working in Visual Studio:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;override&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; OnPopulating(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;PopulatingEventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (((&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;App&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Application&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.Current).Database == &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; kwrds = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;gt;();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="color:#000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;foreach&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Keyword&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; keyword &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; ((&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;App&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Application&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.Current).Database.GetKeywords(Text))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kwrds.Add(keyword.NormalForm);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemsSource = kwrds;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;InvalidCastException&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// workaround for CTP bug&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;In addition to that logic, the XAML for the &lt;strong&gt;AutosuggestTextBox&lt;/strong&gt; control in MainPage.xaml hooks the &lt;strong&gt;TextChanged&lt;/strong&gt; event&amp;nbsp;with event handler&amp;nbsp;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;tbSearch_SearchStringChanged&lt;/span&gt;&amp;nbsp;which is in the codebehind in MainPage.xaml.cs. That method calls the &lt;strong&gt;Search&lt;/strong&gt; method of &lt;strong&gt;MainPage&lt;/strong&gt; which contais the logic to select records based on a search string. In there, it first calls the &lt;strong&gt;Database.SearchPrefix&lt;/strong&gt; method which locates all objects in the database that contain words that start with the specified search string and returns a &lt;strong&gt;FullTextSearchResult&lt;/strong&gt; object. It creates a new &lt;strong&gt;List&amp;lt;FullTextSearchHit&amp;gt;&lt;/strong&gt; object&amp;nbsp;and calls its &lt;strong&gt;AddRange&lt;/strong&gt; method to &amp;#39;apply&amp;#39; the &lt;strong&gt;FullTextSearchResult&lt;/strong&gt; and the output of that is a filtered list of any documents (i.e. database objects)&amp;nbsp;that contain an indexed&amp;nbsp;field that starts with the search string. &lt;/p&gt;
&lt;p&gt;The database contains Contacts, Leads and Activity records, so the final part of the &lt;strong&gt;Search&lt;/strong&gt;&amp;nbsp;method determines whether the matched record is indeed a Contact, and if it is adds it to the ObservableCollection&amp;lt;Contact&amp;gt; collection which we then set to be the ItemsSource of the ContactsList. The result of all this&amp;nbsp;is the user sees only those Contacts that match the search string. Cool functionality for a phone app which effectively limits the typing the user has to do!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; tbSearch_SearchStringChanged(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;object&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; sender, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;EventArgs&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (!tbSearch.IsEmpty)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Search();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;RefreshContacts();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;private&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; Search()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (Database == &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;return&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;// Make full-text search in DB limited to 1000 items and 4 seconds&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#008000;font-size:x-small;"&gt; without results sorting&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; prefixes = Database.SearchPrefix(tbSearch.Text.ToLower(), 1000, 4000, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; contacts = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;ObservableCollection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; arrayRes = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;List&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;FullTextSearchHit&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (prefixes != &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;) arrayRes.AddRange(prefixes.Hits);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;foreach&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;var&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; hit &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;in&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; arrayRes)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (hit.Document &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;is&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt; (!contacts.Contains((&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)hit.Document))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contacts.Add((&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#2b91af;font-size:x-small;"&gt;Contact&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;)hit.Document);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;color:#0000ff;font-size:x-small;"&gt;this&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;&lt;span style="font-family:Consolas;font-size:x-small;"&gt;.ContactsListBox.ItemsSource = contacts;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=187" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Perst/default.aspx">Perst</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/wp7dev/default.aspx">wp7dev</category></item><item><title>Perst - a database for Windows Phone 7 Silverlight</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/07/perst-a-database-for-windows-phone-7-silverlight.aspx</link><pubDate>Mon, 07 Jun 2010 10:10:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:185</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>9</slash:comments><description>&lt;p&gt;&lt;a href="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.01.85/PerstDatabaseDemo.zip" title="PerstDemo.zip"&gt;Download Source Code&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; **UPDATED for Beta libraries 21st July 2010**&lt;/p&gt;
&lt;p&gt;There has been some comment about the lack of a client side database for Windows Phone 7 Silverlight. Windows Phone 7 does have SQL Server Compact Edition installed in the OS image, but in the initial release, it is there to support the built-in apps only and has no public API to allow Silverlight developers to use it for data persistence.&lt;/p&gt;
&lt;p&gt;However, there &lt;strong&gt;is&lt;/strong&gt; a database available that WP7 Silverlight developers can use: it&amp;#39;s called Perst .NET which is developed by McObject and the source code is pure C# and freely downloadable. As distributed, it works fine with the full .NET Framework, with the .NET Compact Framework and with desktop Silverlight, and they have a demo app of a CRM that runs in the desktop browser in Silverlight (read about it &lt;a target="_blank" href="http://www.mcobject.com/january25/2010" title="McObject Silverlight CRM demo"&gt;here&lt;/a&gt;).&amp;nbsp;Using Perst for .NET, developers using Silverlight can now include true database management system&amp;nbsp;features in their Silverlight applications, including adding persistence to this data by storing it in a container file in isolated storage.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I thought it would be fun to see if I could port the database and implement the CRM app on Windows Phone 7 and it wasn&amp;#39;t too hard!&lt;/p&gt;
&lt;p&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstContactsList.jpg" alt="Perst Contacts List" style="vertical-align:middle;" /&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstDetails.jpg" alt="Perst Contacts List" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;Here you can see the contacts list, and the details view when you select a contact from the list. &lt;/p&gt;
&lt;p&gt;You can download the full source code from the link at the top of this post (developed with the&amp;nbsp;Windows Phone 7 April Devtools refresh that you can download &lt;a target="_blank" href="http://developer.windowsphone.com" title="Windows Phone 7 Developer Portal"&gt;here&lt;/a&gt;)&amp;nbsp;. Inside it you will find three projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PerstWP7&lt;/strong&gt; - this is a Windows Phone 7 port of the database code. It doesn&amp;#39;t have the replication code in it that the full .NET framework version supports, and it doesn&amp;#39;t have a few methods in the database wrapper that require IQueryable, which is not supported on WP7.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PerstDemo&lt;/strong&gt; - This is the source code for the CRM app. This is a work in progress! At present, the app allows you to generate test data to fill the database, allows you to list, add, edit, delete and search Contacts. At present there is no UI to allow you to work with Leads and Activities, as the full Silverlight CRM demo app does, but I plan to add this over the coming months, perhaps using a panoramic view which would be nice!&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SilverlightToolkit.Controls.Input&lt;/strong&gt; - Although according to blog posts such as this you are supposed to be able to use the Silverlight Toolkit libraries directly - at least for some of the controls in there - I couldn&amp;#39;t get it to work with the current drop of the WP7 dev tools. I wanted an AutoSuggestTextbox to use in the search function, so I extracted the source for the toolkit version of this control and compiled it into this WP7 class library.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Using the App&lt;/h3&gt;
&lt;p&gt;When you start the app, you&amp;#39;ll just see an empty heading of Contacts. Click the ellipses on the menu bar to reveal the menu for generating test data. Use the slider to select the total number of Contact, Lead and Activity objects to generate: for example, 5000 will give you a long list of a few hundred contacts.&lt;/p&gt;
&lt;p&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstMenu.jpg" alt="Perst CRM Menu" style="vertical-align:middle;" /&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstGenerateSlider.jpg" alt="Generate Data Slider" style="vertical-align:middle;" /&gt;&lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstGenerateCommitting.jpg" alt="Generate Data Committing" style="vertical-align:middle;" /&gt;&lt;/p&gt;
&lt;p&gt;As you play with the app, you&amp;#39;ll see that you can view and edit details of Contacts in the list, you can delete contacts and you can add new contacts by tapping the &amp;#39;+&amp;#39; icon at the foot of the main screen.&lt;/p&gt;
&lt;h3&gt;Full Text Search&lt;/h3&gt;
&lt;p&gt;&amp;#39;Well, is this really a database?&amp;#39; you might be asking. Well - how about this: it&amp;#39;s got a Full Text Search facility! &lt;img height="390" width="200" src="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.04/PerstSearch.jpg" alt="Perst Full Text search" style="float:left;" /&gt; If you tap on the Search icon on the menu bar, you get a Search box appear, which is the AutoSuggestTextBox. As you enter characters into the search box, it displays a list of contacts that match as you type in a drop down list. You can select a contact from the dropdown, or just display a subset of contacts that include the search string in any of the Full Text Search index fields, which are LastName, FirstName and CompanyName.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;
&lt;h3&gt;Using Perst for Commercial Use.&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;One point to make about this: Perst is free to use for non-commercial use and is released under the GPL license. Perst is cross-platform as there is a Java version as well as the .NET one, and Perst is already used&amp;nbsp;in J2ME and on Android. If you want to use it in a commercial app, then a license fee applies which should only amount to a few pennies per copy.&amp;nbsp;&amp;nbsp;&amp;nbsp;If you are in the UK, you can talk to MPC Data who distribute Perst to that market. I don&amp;#39;t know about other markets so I suggest you contact McObject.&lt;/p&gt;
&lt;h3&gt;Next Steps&lt;/h3&gt;
&lt;p&gt;Over the next few days I will follow up with a few posts showing how you write code to work with a Perst database. In the meantime, please download the sample code and take a look at how it works.&lt;/p&gt;
&lt;p&gt;In this sample, we are using Perst&amp;#39;s database wrapper which gives relational database-like behaviour so you&amp;nbsp;create tables and keys and store and retrieve objects from tables in a manner that will be familiar to anyone who has worked with relational databases before. However, Perst is actually an object database, and if you don&amp;#39;t use the database wrapper, you simply work with .NET classes in exactly the same way an any other .NET object, but it just so happens that these objects have the ability to be persisted. That&amp;#39;s really interesting to me as I hate writing all that unnecessary object relational mapping (ORM) code to convert objects to and from their database format. However, that&amp;#39;s a topic for another day.&lt;/p&gt;
&lt;p&gt;Over time, I plan on extending this sample&amp;nbsp;to add the UI for working on Leads and Activities as well - it&amp;#39;s a learning exercise for me to really learn WP7 development in depth, and hopefully will be of interest to you too!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/08/perst-a-database-for-windows-phone-7-silverlight-part-2.aspx" title="Part 2"&gt;Perst - a database for Windows Phone 7 Silverlight - Part 2&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=185" width="1" height="1"&gt;</description><enclosure url="http://mobileworld.appamundi.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.00.01.85/PerstDatabaseDemo.zip" length="522350" type="application/x-zip-compressed" /><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Perst/default.aspx">Perst</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/wp7dev/default.aspx">wp7dev</category></item><item><title>Tech Ed North America</title><link>http://mobileworld.appamundi.com/blogs/andywigley/archive/2010/06/01/tech-ed-north-america.aspx</link><pubDate>Tue, 01 Jun 2010 13:01:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:184</guid><dc:creator>Andy Wigley</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I will be in New Orleans next week for Tech Ed North America (7th through 10th June).&lt;/p&gt;
&lt;p&gt;I am speaking on Thursday morning at 9:45am in Room 283. The presentation is called &lt;strong&gt;WEM309 - Programming Microsoft Silverlight for Windows Embedded Using Microsoft .NET&lt;/strong&gt; and explains how .NET Compact Framework developers can build managed apps that use a Silverlight UI.&lt;/p&gt;
&lt;p&gt;Big deal, you might think? However, Silverlight for Windows Embedded is the wierd, unruly child of the family because it only has a C++ API - no built in support for programming from C# or VB. In this session, I show how you can use the Windows Embedded Silverlight Tools that are a part of the Windows Embedded Compact 7 product set to generate a working Silverlight application from XAML files that you create using Expression Blend 3. Then we modify the Silverlight app project and instead of an exe, create a dll and define a few exported functions to allow a client to start up the Silverlight UI and to do things like set/get control properties and start or stop animation storyboards. In C#, we can then use p/invoke to drive the UI from the managed app. The other key ingredient is the use of &lt;em&gt;reverse&lt;/em&gt; p/invoke which we use to allow a click (or other event) handler on the native side to callback to the managed application.&lt;/p&gt;
&lt;p&gt;I have some pretty cool demos to show what is possible - I think it should be pretty entertaining!&lt;/p&gt;
&lt;p&gt;If you are in New Orleans, please come to my session&amp;nbsp;and/or find me at the Technical Learning Center (At the Windows Embedded or Windows Phone stands) to talk about all things mobile: .NET Compact Framework on Windows Embedded Compact, on Windows Mobile and Silverlight on Windows Phone 7.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=184" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Windows+Embedded+Compact/default.aspx">Windows Embedded Compact</category><category domain="http://mobileworld.appamundi.com/blogs/andywigley/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>070-580: Windows Mobile 6.5 Application Development</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/05/24/070-580-windows-mobile-6-5-application-development.aspx</link><pubDate>Mon, 24 May 2010 05:05:44 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:182</guid><dc:creator>Peter Foot</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;This may be a little late to the party but I thought I would share some information on this exam. Because you sign an NDA when you take the exam I cannot comment on specifics of the exam content, however I can offer some guidance on the study guide:-&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-580" href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-580"&gt;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-580&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This exam replaced the previous &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-540&amp;amp;locale=en-us" target="_blank"&gt;070-540 exam&lt;/a&gt; which covered application development using Windows Mobile 5.0, .NET Compact Framework 2.0 and Visual Studio 2005. Therefore a large percentage of the material is the same between the two. The new topics come in the form of Widgets, LINQ, ADO.NET Sync Services and Windows Mobile Tools such as FakeGPS. The full list of skills measured can be read on the exam link above. There are a couple of oddities:– &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The material is updated for .NETCF 3.5 by including LINQ but WCF is not listed. &lt;/li&gt;    &lt;li&gt;ADO.NET Sync Services has never really been a core part of the development tools. &lt;/li&gt;    &lt;li&gt;Finally one of the skills measured is creating a desktop installer for your application. There is not standard way of doing this but the guidance does exist (see list below) to put together a dll which acts as a custom install action within your desktop installer.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So once you’ve familiarised yourself with all the skills measured you’ll skip to the next tab on Preparation Materials and find there is nothing at all listed. Here is a list I think will help with your preparation:-&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.co.uk/gp/product/0735623589?ie=UTF8&amp;amp;tag=petfoo-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=0735623589" target="_blank"&gt;Microsoft Mobile Development Handbook&lt;/a&gt; – Microsoft Press. While the main book covers .NETCF 2.0 and Visual Studio 2005, the last chapter gives a run down on new features in Visual Studio 2008 and .NETCF 3.5 including LINQ. It ticks almost all of the Skills measured, there are a few articles which cover the new topics:-&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd721906.aspx" target="_blank"&gt;Developing Widgets for Windows Mobile 6.5&lt;/a&gt; – MSDN. The Windows Mobile 6.5.3 SDK added some support for Widget development to Visual Studio 2008 but I find it just hangs Visual Studio. This article shows the “old” approach from creating the HTML, JavaScript and building the ZIP file and renaming.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd938879.aspx" target="_blank"&gt;Programming Microsoft Synchronization Services for ADO.NET (Devices)&lt;/a&gt; – MSDN. Andy’s article describes Synchronization services from setting up and running synchronization through to optimisations for mobile use.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb158722.aspx" target="_blank"&gt;Using the FakeGPS Utility – MSDN&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The 70-580 exam is quite new and it is quite clear that if and when there is an exam created for Windows Phone 7 development it will by necessity be completely different. However for now 70-580 is the most up-to-date Microsoft exam for Mobility and is one of the requirements for the Mobility competency within the Microsoft Partner Program. Currently it doesn’t appear that there are any exams at all for Silverlight, but there are some coming in the next few months for .&lt;a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-511&amp;amp;Locale=en-us" target="_blank"&gt;NET 4.0 and WPF&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=182" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/peterfoot/archive/tags/Windows+Mobile/default.aspx">Windows Mobile</category></item><item><title>Resco announces support for Windows Phone 7</title><link>http://mobileworld.appamundi.com/blogs/petevickers/archive/2010/05/19/resco-announces-support-for-windows-phone-7.aspx</link><pubDate>Wed, 19 May 2010 05:35:00 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:180</guid><dc:creator>Pete Vickers</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I am a big fan of Resco tools for developers, and have&lt;a href="http://mobileworld.appamundi.com/blogs/petevickers/archive/2009/07/01/windows-mobile-ui.aspx"&gt; blogged about them&lt;/a&gt; in the past. Resco have become the first of the Windows Mobile tools developers to announce they will be releasing their tools for Windows Phone 7. Read more about it &lt;a href="http://www.resco.net/developer/company/news.aspx?file=2010-05-18-2"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is great news for developers of new Windows Phone 7 applications.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=180" width="1" height="1"&gt;</description><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Resco/default.aspx">Resco</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/Windows+Phone+7/default.aspx">Windows Phone 7</category><category domain="http://mobileworld.appamundi.com/blogs/petevickers/archive/tags/UI/default.aspx">UI</category></item><item><title>Microsoft English 1.0</title><link>http://mobileworld.appamundi.com/blogs/peterfoot/archive/2010/05/14/microsoft-english-1-0.aspx</link><pubDate>Fri, 14 May 2010 06:06:04 GMT</pubDate><guid isPermaLink="false">989b12f5-6f26-47d9-9f0d-67fe982b88db:177</guid><dc:creator>Peter Foot</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;More proof (if really needed) that Microsoft is abandoning English and making up its own language:-&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;We have noted your concern and we have given your feedback to our upstream.&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;From Microsoft Subscriptions Support (TechNet/MSDN)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://mobileworld.appamundi.com/aggbug.aspx?PostID=177" width="1" height="1"&gt;</description></item></channel></rss>