<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://devlicio.us/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/"><channel><title>Derik Whittaker : WindowsPhone</title><link>http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx</link><description>Tags: WindowsPhone</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Help my Secondary Tile will not navigate correctly in my Win Phone Application</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2012/08/25/help-my-secondary-tile-will-not-navigate-correctly-in-my-win-phone-application.aspx</link><pubDate>Sun, 26 Aug 2012 01:15:21 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:70294</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=70294</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=70294</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2012/08/25/help-my-secondary-tile-will-not-navigate-correctly-in-my-win-phone-application.aspx#comments</comments><description>&lt;p&gt;When you are adding the ability to have a Secondary tile to your Windows phone application you may from time to time find the need to debug or mimic the launching of the application via the Secondary tile w/ the correct query string values. Sadly, debugging this via the debugger is not something that I have found out how to do, if it is possible please let me know.&amp;nbsp; However, I have found another way to get the same result and here is how.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Get the exact tile uri used for the secondary tile.&lt;br /&gt;Example: “/views/events/Landing.xaml?Id=1”&lt;br /&gt;&lt;/li&gt; &lt;li&gt;Open up the WMAppManifest.xml page under resources&lt;/li&gt; &lt;li&gt;Find the line that looks like this:&lt;br /&gt;&amp;lt;DefaultTask Name=&amp;quot;_default&amp;quot; NavigationPage=&amp;quot;MainPage.xaml&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;Replace it w/ the URI of your secondary tile like this:&lt;br /&gt;&amp;lt;DefaultTask Name=&amp;quot;_default&amp;quot; NavigationPage=&amp;quot;/views/events/Landing.xaml?Id=1&amp;quot; /&amp;gt;&lt;br /&gt;&lt;/li&gt; &lt;li&gt;Launch the application&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If you are wired everything correctly your page should load, but if you are trying to debug this it is likely you did not have everything correct.&amp;nbsp; If you did not do things correctly you should get some sort of runtime error.&lt;/p&gt; &lt;p&gt;Hope this helps&lt;/p&gt; &lt;p&gt;Till next time,&lt;/p&gt;&lt;pre&gt;
&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=70294" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7+Mango/default.aspx">WP7 Mango</category></item><item><title>Data Binding to the Panorama control in WP7</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2012/08/22/data-binding-to-the-panorama-control-in-wp7.aspx</link><pubDate>Wed, 22 Aug 2012 18:56:59 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:70290</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=70290</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=70290</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2012/08/22/data-binding-to-the-panorama-control-in-wp7.aspx#comments</comments><description>&lt;p&gt;When you build a Windows Phone 7 (soon to be 8) application, one of the screen layouts you can use is the Panorama.&amp;#160; In most cases the number of pages in the panorama is hard defined in code but there is the occasion when you will add pages dynamically&amp;#160; based on binding.&amp;#160; In this post we are going to take a look at how we can do this.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1 – Setup the ItemSource binding&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As with all other binding to list items you can setup your ItemSource binding&amp;#160; as below:&lt;/p&gt;  &lt;pre class="c#" name="code"&gt;ItemsSource=&amp;quot;{Binding SportDrills}&amp;quot; &lt;/pre&gt;

&lt;p&gt;The SportDrills is simply a property off of my main VM and it contains the needed data for both the header and item template&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2 – Setup the Header DataTemplate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When setting up the Panorama it is important to have a header, binding to this header is not too hard and only requires a few lines of xaml&lt;/p&gt;

&lt;pre class="c#" name="code"&gt;&amp;lt;controls:Panorama.HeaderTemplate&amp;gt;
    &amp;lt;DataTemplate&amp;gt;
        &amp;lt;Grid&amp;gt;
            &amp;lt;Grid.RowDefinitions&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;*&amp;quot; /&amp;gt;
                &amp;lt;RowDefinition Height=&amp;quot;auto&amp;quot; /&amp;gt;
            &amp;lt;/Grid.RowDefinitions&amp;gt;
            &amp;lt;TextBlock Text=&amp;quot;{Binding SportName}&amp;quot; /&amp;gt;
            &amp;lt;TextBlock Grid.Row=&amp;quot;1&amp;quot; Text=&amp;quot;{Binding DrillCount}&amp;quot; 
                        Margin=&amp;quot;15,3&amp;quot;
                        Style=&amp;quot;{StaticResource PanaramaHeaderAccentTextBlockStyle}&amp;quot; /&amp;gt;
        &amp;lt;/Grid&amp;gt;
    v/DataTemplate&amp;gt;
&amp;lt;/controls:Panorama.HeaderTemplate&amp;gt;&lt;/pre&gt;

&lt;p&gt;In the xaml above the important part to pay attention to is the Panorama.HeaderTemplate, this is where you can define you header for the given panel.&amp;#160; In my example I am creating a bit more complex header as i am adding a second level of data.&amp;#160; If you only want a single line of text of course you can skip the grid and just have a TextBlock statement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 – Setup the ItemTemplate DataTemplate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that we have our header setup it is time to setup the body of the panel.&amp;#160; To do this you will want to do something like below.&lt;/p&gt;

&lt;pre class="c#" name="code"&gt;&amp;lt;controls:Panorama.ItemTemplate&amp;gt;:               
    &amp;lt;DataTemplate&amp;gt;:
        &amp;lt;Grid&amp;gt;:
            &amp;lt;ListBox Margin=&amp;quot;0,0,-12,0&amp;quot; ItemsSource=&amp;quot;{Binding Drills}&amp;quot;                          
						telerik:InteractionEffectManager.IsInteractionEnabled=&amp;quot;True&amp;quot; 
						ItemContainerStyle=&amp;quot;{StaticResource StretchableListBoxItemStyle}&amp;quot;&amp;gt;:

                &amp;lt;ListBox.ItemTemplate&amp;gt;:
                    &amp;lt;DataTemplate&amp;gt;:
                        &amp;lt;Grid&amp;gt;:
                            &amp;lt;Border 
							VerticalAlignment=&amp;quot;Center&amp;quot;
							HorizontalAlignment=&amp;quot;Center&amp;quot;
							Width=&amp;quot;36&amp;quot; Height=&amp;quot;36&amp;quot;&amp;gt;:

                            &amp;lt;/Border&amp;gt;:
                            &amp;lt;TextBlock Grid.Column=&amp;quot;1&amp;quot; Grid.Row=&amp;quot;0&amp;quot; Text=&amp;quot;{Binding Name}&amp;quot; TextWrapping=&amp;quot;Wrap&amp;quot; Style=&amp;quot;{StaticResource ListBoxHeaderStyle}&amp;quot;/&amp;gt;:

                        &amp;lt;/Grid&amp;gt;:
                    &amp;lt;/DataTemplate&amp;gt;:
                &amp;lt;/ListBox.ItemTemplate&amp;gt;:
            &amp;lt;/ListBox&amp;gt;:
        &amp;lt;/Grid&amp;gt;:
    &amp;lt;/DataTemplate&amp;gt;:
&amp;lt;/controls:Panorama.ItemTemplate&amp;gt;:&lt;/pre&gt;

&lt;p&gt;In the XAML above the important part to pay attention to is the Panorama.ItemTemplate, this is where you can defined your content for the panel.&amp;#160; In my example I am simply listing data, but you can of course do anything you want.&lt;/p&gt;

&lt;p&gt;As you can see binding to the ItemSource and creating panels on the fly via binding is very simple, yet very powerful&lt;/p&gt;

&lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=70290" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/XAML/default.aspx">XAML</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7+Mango/default.aspx">WP7 Mango</category></item><item><title>Using the  Isolated Storage Explorer tool on WP7 Mango to export your .sdf file</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/07/19/using-the-isolated-storage-explorer-tool-on-wp7-mango-to-export-your-sdf-file.aspx</link><pubDate>Tue, 19 Jul 2011 11:13:54 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:68004</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=68004</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=68004</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/07/19/using-the-isolated-storage-explorer-tool-on-wp7-mango-to-export-your-sdf-file.aspx#comments</comments><description>&lt;p&gt;One of the biggest complaints (from myself and others) about V1 of WP7 was the total and complete lack of a built in database (although v1 of WP7 did have SQL CE on the device but developers did not have access to use it).&amp;#160; When I say there was no built in database don’t misread that to say there is no data storage support cause there is but it is in the form of blob storage inside of the Isolated storage area.&amp;#160; This type of storage worked and some great libraries were built on top of this storage to give your app SQL like&amp;#160; abilities, but non of them gave you a true SQL experience.&lt;/p&gt;  &lt;p&gt;With the upcoming release (this post is based of the Beta build of Mango) of WP7 Mango developers now have full access to SQL CE inside your application.&amp;#160; This means that you can do many cool things.&amp;#160; One of the really cool things that can be done w/ this SQL access is the ability to import/export your .sdf (SQL CE database file) file in order to view the data inside of SQL Management studio or Visual Studio.&lt;/p&gt;  &lt;p&gt;In this post I will walk you though what is needed in order to use the &lt;a href="http://msdn.microsoft.com/en-us/library/hh286408%28v=VS.92%29.aspx"&gt;Isolated Storage Explorer&lt;/a&gt; tool and how to use this tool to export your .sdf file to your hard drive.&amp;#160; I will than walk you through how to connect to that .sdf file via Visual Studio in order to run queries against the data.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1: Running the Isolated Storage tool&lt;/strong&gt;    &lt;br /&gt;This tool is NOT a GUI based tool but rather a command line tool, but it is not hard to use or to learn.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open up a command prompt and navigate to c:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.1\Tools\IsolatedStorageExplorerTool &lt;/li&gt;    &lt;li&gt;In order to extract your data file you will want to run the following command:&amp;#160; &lt;br /&gt;&lt;em&gt;ISETool.exe ts xd GUIDGOESHERE PATHTOEXPORTGOESHERE&lt;/em&gt;       &lt;br /&gt;Let me break down this command in a little more details       &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;ISETool.exe&lt;/strong&gt; is the commandline too to work with Isolated Storage &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;ts&lt;/strong&gt; is the command to instruct the take a snapshot of the Isolated Storage data &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;xd&lt;/strong&gt; is the command to instruct the app to look at a running emulator (use de if you want to hit a real device) &lt;/li&gt;        &lt;li&gt;&lt;strong&gt;GUIDGOESHERE&lt;/strong&gt; is the Application GUID for your WP7 application which can be found in your WMAppManifest.xml file           &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_64CE2ABF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_124F4A83.png" width="417" height="43" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;PATHTOEXPORTGOESHERE&lt;/strong&gt; is the full path to a folder on your hard drive to store the exported .sdf file           &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_1D0CA1D8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_1CA06EE3.png" width="644" height="189" /&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Step 2: Attach the .sdf file to a running instance of Visual Studio&lt;/strong&gt;    &lt;br /&gt;You will want to open up Visual Studio and open the Server Explorer window/pane.&amp;#160; Once you have this window open you will need to connect to your .sdf file as such:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click the Connect to Database button in the Server Explorer     &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_5B91EF7E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_292E1BFF.png" width="244" height="81" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;When you click the connect button you will need to add a connection.&amp;#160; When the dialog below opens the default should be SQL Client.&amp;#160; Make sure you click the change button and select SQL CE 3.5.&amp;#160; Selecting SQL CE will change the dialog and you should populate it as you see below.&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_1A83701A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_20CA46A8.png" width="182" height="244" /&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Step 3: Open the database and take a look at the schema&lt;/strong&gt;    &lt;br /&gt;One you have attached your .sdf file you should now see the database attached to the Server Explorer.&amp;#160; You should be able to see all the table schema information as below    &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_27111D36.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_5FBBC743.png" width="244" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 4: Query the data&lt;/strong&gt;    &lt;br /&gt;Now that you have attached the database and you can see the schema the next logical thing to do is query the data.&amp;#160; You can do this one of two ways.&amp;#160; You can either right click on the table and choose ‘Show Table Data’ or you can create a new query and write custom sql.&amp;#160; Below is the output of choosing to show table data.    &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_583057D6.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_25CC8457.png" width="348" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see using when using SQL CE on WP7 Mango it is very easy to export your .sdf file and view the contents of the file inside of Visual Studio.&amp;#160; Having this ability is very powerful because it can give the developers the ability to run analysis on their data or inspect their data at any time to ensure they are heading down the right path.&lt;/p&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=68004" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7+Mango/default.aspx">WP7 Mango</category></item><item><title>Using Ninject (with CommonServiceLocator) with Caliburn.Micro on WP7</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/07/08/using-ninject-with-commonservicelocator-with-caliburn-micro-on-wp7.aspx</link><pubDate>Fri, 08 Jul 2011 09:35:54 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:67954</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=67954</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=67954</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/07/08/using-ninject-with-commonservicelocator-with-caliburn-micro-on-wp7.aspx#comments</comments><description>&lt;p&gt;As I am in the process of rebuilding my Dimecasts.net WP7 application from the ground up to work with WP7 Mango one of the things I wanted to do was fully use the &lt;a href="http://caliburnmicro.codeplex.com/"&gt;Caliburn.Micro&lt;/a&gt; framework.&amp;nbsp; Caliburn.Micro has its own built in &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_control"&gt;IoC&lt;/a&gt; container called the &lt;a href="http://caliburnmicro.codeplex.com/SourceControl/changeset/view/47de308d08ed#src%2fCaliburn.Micro.WP7.Extensions%2fPhoneContainer.cs"&gt;PhoneContainer&lt;/a&gt; which provides basic &lt;a href="http://en.wikipedia.org/wiki/Dependency_Injection"&gt;Dependency Injection&lt;/a&gt; and this container works great but I have a bit of history using Ninject with my Wp7 applications so I wanted to replace the usage of the PhoneContainer with my &lt;a href="http://ninject.org/"&gt;Ninject&lt;/a&gt;, or more precisely the &lt;a href="http://commonservicelocator.codeplex.com/"&gt;CommonServiceLocator&lt;/a&gt; implementation of Ninject.&amp;nbsp; I knew this had to be doable because there are examples of using &lt;a href="http://mef.codeplex.com/"&gt;MEF&lt;/a&gt; with Caliburn.Micro&lt;/p&gt; &lt;p&gt;Turns out I was right using Ninject w/ the CommonServiceLocator inside of Caliburn.Micro is doable and is very easy to boot.&amp;nbsp; Of course before I set out to build my own implementation of this I decided to google for it and this &lt;a href="http://caliburnmicro.codeplex.com/discussions/230861"&gt;post&lt;/a&gt; was about the closest I could find to working code, but this code was NOT complete, at least for the current CM implementation.&amp;nbsp; Even though the post I found was not complete working code it was a great headstart in what needed to be done.&lt;/p&gt; &lt;p&gt;Here is how I got Caliburn.Micro to use Ninject as its IoC container.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Step 1: Register the setup bootstrapper that you want to use&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;You will need to open up your App.xaml file and put in the code below.&lt;/p&gt;&lt;pre class="c-sharp" name="code"&gt;    &amp;lt;!--Application Resources--&amp;gt;
    &amp;lt;Application.Resources&amp;gt;
    	&amp;lt;local:NinjectBootstrapper x:Key=&amp;quot;bootstrapper&amp;quot; /&amp;gt;
    &amp;lt;/Application.Resources&amp;gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 2: Create the a NinjectBootstrapper which inherits off of &lt;/strong&gt;&lt;a href="http://caliburnmicro.codeplex.com/SourceControl/changeset/view/47de308d08ed#src%2fCaliburn.Micro.WP7%2fPhoneBootstrapper.cs"&gt;&lt;strong&gt;PhoneBootstrapper&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Caliburn.Micor uses its bootstrapper to do some basic setup and configuration work.&amp;nbsp; It is here that we want to extend this and add support for Ninject and the CommonServiceLocator.&amp;nbsp; Go ahead and create a class as you see below.&lt;/p&gt;&lt;pre class="c-sharp" name="code"&gt;public class NinjectBootstrapper : PhoneBootstrapper
{
    private NinjectContainer _ninjectContainer;

    protected override void Configure()
    {
        _ninjectContainer = new NinjectContainer(RootFrame);

        _ninjectContainer.RegisterDefaultBindings( typeof ( DashboardViewModel ), typeof ( IEventAggregator ) );
        _ninjectContainer.RegisterPhoneServices();

        var ninjectServiceLocator = new NinjectServiceLocator(_ninjectContainer.Kernel);

        ServiceLocator.SetLocatorProvider(() =&amp;gt; ninjectServiceLocator);     
    }

    protected override object GetInstance(Type service, string key)
    {
        if (service != null)
        {
            return ServiceLocator.Current.GetInstance( service, key );
        }

        throw new ArgumentNullException(&amp;quot;service&amp;quot;);
    }

    protected override IEnumerable&amp;lt;object&amp;gt; GetAllInstances(Type service)
    {
        return ServiceLocator.Current.GetAllInstances( service );
    }

    protected override void BuildUp(object instance)
    {
        _ninjectContainer.Kernel.Inject(instance);
    }
}
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 3: Implement the Ninject Setup logic&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you can see from step 2 I have created a class which actually performs all the direct Ninject setup and I called it the NinjectContainer.&amp;nbsp; Below is the code for this container.&amp;nbsp; You should also note 2 more things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;This container implements &lt;a href="http://Caliburn%20Micro:%20WPF,%20Silverlight%20and%20WP7%20made%20easy."&gt;IPhoneContainer&lt;/a&gt; from Caliburn.Micro 
&lt;li&gt;In the RegisterPhoneServices method this is a very manual rebinding of Caliburn.Micro and it is likely that I missed something.&amp;nbsp; This code was a direct port from the default implementation of the Caliburn IoC container setup. &lt;/li&gt;&lt;/ol&gt;&lt;pre class="c-sharp" name="code"&gt;public class NinjectContainer : IPhoneContainer
{
    private readonly IKernel _kernel;
    private readonly Frame _rootFrame;

    public NinjectContainer( Frame rootFrame )
    {
        _kernel = new StandardKernel();
        _rootFrame = rootFrame;
    }

    public event Action&amp;lt;object&amp;gt; Activated;

    public IKernel Kernel
    {
        get { return _kernel; }
    }

    public void RegisterWithPhoneService( Type service, string phoneStateKey, Type implementation )
    {}

    public void RegisterWithAppSettings( Type service, string appSettingsKey, Type implementation )
    {}

    public void RegisterPhoneServices(bool treatViewAsLoaded = false)
    {
        var phoneService = new PhoneApplicationServiceAdapter(_rootFrame);
        var navigationService = new FrameAdapter(_rootFrame, treatViewAsLoaded);
            
        Kernel.Rebind&amp;lt;IPhoneContainer&amp;gt;().ToMethod(x =&amp;gt; this);
        Kernel.Rebind&amp;lt;INavigationService&amp;gt;().ToMethod(x =&amp;gt; navigationService);
        Kernel.Rebind&amp;lt;IPhoneService&amp;gt;().ToMethod(x =&amp;gt; phoneService);
        Kernel.Rebind&amp;lt;IEventAggregatorv().To&amp;lt;EventAggregator&amp;gt;().InSingletonScope();
        Kernel.Rebind&amp;lt;IWindowManager&amp;gt;().To&amp;lt;WindowManager&amp;gt;().InSingletonScope();
        Kernel.Rebind&amp;lt;IVibrateController&amp;gt;().To&amp;lt;SystemVibrateController&amp;gt;().InSingletonScope();
        Kernel.Rebind&amp;lt;ISoundEffectPlayer&amp;gt;().To&amp;lt;XnaSoundEffectPlayer&amp;gt;().InSingletonScope();
        Kernel.Rebind&amp;lt;StorageCoordinator&amp;gt;().To&amp;lt;StorageCoordinator&amp;gt;().InSingletonScope();
        Kernel.Rebind&amp;lt;TaskController&amp;gt;().To&amp;lt;TaskController&amp;gt;().InSingletonScope();
            

        var coordinator = Kernel.Get&amp;lt;StorageCoordinator&amp;gt;();
        coordinator.Start();

        var taskController = Kernel.Get&amp;lt;TaskController&amp;gt;();
        taskController.Start();
    }

    public void RegisterDefaultBindings( params Type[] typesToScanAssembliesFor )
    {
        // scan services
        Kernel.Scan(x =&amp;gt;
        {
            foreach ( var type in typesToScanAssembliesFor )
            {
                x.FromAssemblyContaining( type );
            }
                
            x.Where(type =&amp;gt; type.Name.EndsWith(&amp;quot;Service&amp;quot;));

            x.BindWithDefaultConventions();

            x.InSingletonScope();
        });

        // scan the rest
        Kernel.Scan(x =&amp;gt;
        {
            foreach (var type in typesToScanAssembliesFor)
            {
                x.FromAssemblyContaining(type);
            }

            x.Where(type =&amp;gt; !type.Name.EndsWith(&amp;quot;Service&amp;quot;));

            x.BindWithDefaultConventions();
        });
    }
}
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Step 4: Hit F5 and see the fruits of your effort&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now if we did everything right your application should not be able to be run and Caliburn.Micro and Ninject (and CSL) as its IoC container.&lt;/p&gt;
&lt;p&gt;As you can see you can swap out the built in IoC container w/ Ninject inside of Caliburn.Micro with almost no effort.&amp;nbsp; I hope this helps and others enjoy.&lt;/p&gt;
&lt;p&gt;Till next time,&lt;/p&gt;&lt;/object&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=67954" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/Caliburn+Micro/default.aspx">Caliburn Micro</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7+Mango/default.aspx">WP7 Mango</category></item><item><title>Missing Method Exception w/ Caliburn.Micro when using INavigationService</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/05/09/missing-method-exception-w-caliburn-micro-when-using-inavigationservice.aspx</link><pubDate>Mon, 09 May 2011 12:40:07 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:67263</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=67263</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=67263</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/05/09/missing-method-exception-w-caliburn-micro-when-using-inavigationservice.aspx#comments</comments><description>&lt;p&gt;As I continue to build out a WP7 application using Caliburn Micro I ran into a odd error.&amp;#160; When trying to inject the INavigationService I would get a ‘Missing Method’ exception as shown below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_6BE9F76C.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_09E80561.png" width="644" height="230" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When I first started to look at the error it did not make any sense.&amp;#160; Everything appeared to be in order, but of course there had to be something wrong.&amp;#160; lets take a look at what was wrong and how to resolve it.&lt;/p&gt;  &lt;p&gt;When building out a WP7 app using Caliburn.Micro when you let the Visual Studio template the template will create a ‘framework’ folder for you.&amp;#160; This framework folder has some killer code in it, but be careful because much of what is generated here also lives in the Caliburn.Micro namespace (in fact all this code may be duplicated, but I am too new to the framework to know for 100%).&lt;/p&gt;  &lt;p&gt;The first thing I did when setting up my application is to add the following method to my PhoneContainer.cs class (this is based on a few example projects I have seen)&lt;/p&gt;  &lt;pre class="c-sharp" name="code"&gt;public void RegisterPhoneServices( bool treatViewAsLoaded = false )
{
    RegisterInstance( typeof( Caliburn.Micro.INavigationService ), null, new FrameAdapter( _bootstrapper.RootFrame, treatViewAsLoaded ) );
    RegisterInstance( typeof( Caliburn.Micro.IPhoneService ), null, new PhoneApplicationServiceAdapter( _bootstrapper.PhoneService ) );
    RegisterSingleton( typeof( IWindowManager ), null, typeof( WindowManager ) );
    RegisterSingleton( typeof( IEventAggregator ), null, typeof( EventAggregator ) );
}&lt;/pre&gt;

&lt;p&gt;The intent of the code above is to setup the IoC container with many of the default services I want to use from the framework.&amp;#160; You will notice that in the first two I have prefixed the interfaces with Caliburn.Micro (which we my undoing as I will learn).&amp;#160; The reason for this is that my project spans multiple dll’s and this was how I could get it to compile.&lt;/p&gt;

&lt;p&gt;When I would try to run this code:&lt;/p&gt;

&lt;pre class="c-sharp" name="code"&gt;var instance1 = container.GetInstance( typeof( DashboardViewModel ), &amp;quot;DashboardViewModel&amp;quot; );&lt;/pre&gt;

&lt;p&gt;This when I would get the missing method exception from above.&amp;#160; After about 10 minutes of looking at this code and trying a few different things I knew for a FACT that the error was due to the usage of the INavigationService interface, now just to understand what the root cause was.&lt;/p&gt;

&lt;p&gt;As I went back to the location where I register the interface it downed on me.&amp;#160; What is the namespace of the ‘FrameAdapter’ object?&amp;#160; Of course it was NOT Caliburn.Micro…hum could this be the cause.&amp;#160; Turns out it was.&amp;#160; When I prefixed FrameAdapter to look like below&lt;/p&gt;

&lt;pre class="c-sharp" name="code"&gt;RegisterInstance( typeof( Caliburn.Micro.INavigationService ), null, new Caliburn.Micro.FrameAdapter( _bootstrapper.RootFrame, treatViewAsLoaded ) );&lt;/pre&gt;

&lt;p&gt;Everything now worked as expected.&amp;#160; The moral of the story is this.&amp;#160; If you are going to use this awesomeness which is Caliburn.Micro either use the libraries from the Caliburn.Micro.dll or DON’T.&amp;#160; Do NOT mix apples and oranges.&lt;/p&gt;

&lt;p&gt;Till next time,&lt;/p&gt;

&lt;p&gt;P.S. I am sure I am really doing something wrong in general w/ Caliburn.Micro but hey that is how you learn right &lt;img style="border-bottom-style:none;border-right-style:none;border-top-style:none;border-left-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/wlEmoticon_2D00_smile_5F00_7AF0B079.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=67263" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>Update Error 800705B4 for WP7</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/04/19/update-error-800705b4-for-wp7.aspx</link><pubDate>Tue, 19 Apr 2011 20:20:15 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66968</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66968</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66968</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/04/19/update-error-800705b4-for-wp7.aspx#comments</comments><description>&lt;p&gt;So today was the first day I was able to get the NoDo update for my Samsung Focus so of course I wanted to update my phone ASAP, but…..&lt;/p&gt;  &lt;p&gt;When I ran the update I received the following error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_30AEB9FD.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_35B0F7AC.png" width="496" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When I googled for this error (along w/ bitch about it on twitter) I found the following link &lt;a title="http://support.microsoft.com/kb/2484484#800705B4" href="http://support.microsoft.com/kb/2484484#800705B4"&gt;http://support.microsoft.com/kb/2484484#800705B4&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;I tried step 1 which is remove all the history but that did not work&lt;/p&gt;  &lt;p&gt;I tried step 2 which was to remove some apps, I removed like 20 apps, but that did not work&lt;/p&gt;  &lt;p&gt;I then tried step 2 again but this time I removed ALL developer built apps off the phone (this phone is developer unlocked)…this &lt;font color="#ff0000" size="4"&gt;WORKED&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;If you find our self having issues and are getting this error AND your phone is developer unlocked try removing ALL developer builds from the phone.&amp;#160; This solved my problem.&lt;/p&gt;  &lt;p&gt;Now back to work.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66968" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>Using Binding to create Panels/Pivots in your WP7 Application</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/04/19/using-binding-to-create-panels-pivots-in-your-wp7-application.aspx</link><pubDate>Tue, 19 Apr 2011 10:19:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66962</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66962</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66962</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/04/19/using-binding-to-create-panels-pivots-in-your-wp7-application.aspx#comments</comments><description>&lt;p&gt;If you are building a Windows Phone 7 application it is very likely that you are going to incorporate either the Panoramic or Pivot layouts in your app.&amp;nbsp; In most cases when you are building these your panels/pivots are fairly static.&amp;nbsp; However, what do you do when the number of panels/pivots needs to changed based on environmental setting (ie data or user preferences)?&lt;/p&gt;
&lt;p&gt;One solution is to use the code behind and manually create your panels/pivots.&amp;nbsp; However, I personally feel this method is clunky and fugly.&amp;nbsp; I would rather stay as close to the MvvM pattern as possible as well as harness the power of Binding to build my UI on the fly based on values inside my view model.&amp;nbsp; In this post we are going to take a look at how simple it is to bind your View Model to your UI and have your panels/pivots built for you.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Create the View Model&amp;rsquo;s to Bind to the UI&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Main View Model &amp;ndash; This is the one bound directly to the UI&lt;/i&gt;&lt;/p&gt;
&lt;pre class="c-sharp" name="code"&gt;    public class DashboardViewModel : ViewModelBase
    {
        // This is an internal class and does not change the implementation...
        private readonly IDashboardService _dashboardService;

        public DashboardViewModel( IDashboardService dashboardService )
        {
            _dashboardService = dashboardService;
        }


        public string Title 
        {
            get { return _dashboardService.DashboardTitle; } 
            set 
            { 
                _dashboardService.DashboardTitle = value;
                RaisePropertyChangedEventImmediately( &amp;quot;Title&amp;quot; );
            }
        }

        public ObservableCollection PanelCollection
        {
            get { return _dashboardService.PanelItems; }
            set
            {
                _dashboardService.PanelItems = value;
                RaisePropertyChangedEventImmediately( &amp;quot;PanelCollection&amp;quot; );
            }
        }
    }&lt;/pre&gt;
&lt;p&gt;In the class above there are 2 properties we need to know about.&amp;nbsp; &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Title &amp;ndash; This is the property in the VM which will create the actual title for the entire Panorama control &lt;/li&gt;
&lt;li&gt;PanelCollection &amp;ndash; This is the property in the VM which contains the list of items which will be used to generate each panel/pivot in the UI &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;i&gt;Panel View Model &amp;ndash; These are the ones which will build each panel/pivot&lt;/i&gt;&lt;/p&gt;
&lt;pre class="c-sharp" name="code"&gt;    public interface IDashboardPanelItemViewModel
    {
        DashboardPanelType DashboardPanelType { get; set; }

        string DashboardTitle { get; set; }

        ObservableCollection&amp;lt;IDashboardPanelListItemViewModel&amp;gt;: PanelListItems { get; set; }
    }&lt;/pre&gt;
&lt;p&gt;In the class (actually it is an interface) above there are 3 properties we need to worry about&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DashboardPanelType &amp;ndash; This really does not change how the panels are bound to the UI but rather is used to determine how the actual panel data is displayed (future post on this) &lt;/li&gt;
&lt;li&gt;DashboardTitle &amp;ndash; This is the property which will create the text title for the panel/pivot &lt;/li&gt;
&lt;li&gt;PanelListItems &amp;ndash; This is the property which will contain the individual data points which will be displayed on the created panel/pivot&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Create the xaml to hookup the binding&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;When binding the Main View Model (the first class above) to the UI we need to do 2 things&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Need to bind our main View Model to the Panorama (or PIvot)
    &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_3890E917.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_2C8EF8E3.png" border="0" height="26" width="644" /&gt;&lt;/a&gt;
    &lt;/li&gt;
&lt;li&gt;Need to bind the individual list item from the element in PanelCollection to the panel
    &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_7E357335.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_04E87CB9.png" border="0" height="64" width="644" /&gt;&lt;/a&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When looking at the 2 snippets above you want to pay attention to the ItemsSource Property in both.&lt;/p&gt;
&lt;p&gt;The End Result (bit fugly, but this is for demo only)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_1D781A09.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_3607B759.png" border="0" height="459" width="254" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can using Binding to create your panels/pivots based on the data in your view model is super simple and requires NO code behind code to accomplish.&amp;nbsp; Please be aware though that you should NOT generate too many panels/pivots as that is a massive UI design smell.&lt;/p&gt;
&lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66962" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/XAML/default.aspx">XAML</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Adding Runtime Intelligence to your Windows Phone 7 Application</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/31/adding-runtime-intelligence-to-your-windows-phone-7-application.aspx</link><pubDate>Thu, 31 Mar 2011 11:07:51 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66761</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66761</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66761</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/31/adding-runtime-intelligence-to-your-windows-phone-7-application.aspx#comments</comments><description>&lt;p&gt;When building any type of application which is going to be deployed to the masses it is always important to know and understand how your application is being used in order to make more informed decisions on how to maintain or extend your application.&amp;#160; When it comes to adding in runtime intelligence into your application the team over at PreEmptive (the same folks that make Dotfuscator) have a killer product that is dead easy to use and gives you great results.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lets get started and take a look at how to add Runtime Intelligence into your application&lt;/p&gt;  &lt;p&gt;Step 0 - Getting up and running: &lt;/p&gt;  &lt;p&gt;In order to add this runtime intelligence into your application you will need to download the &lt;a href="http://preemptive.com/know-more/windows-phone-7"&gt;WP7 Edition&lt;/a&gt; of Dotfuscator and have it installed.&amp;#160; Once you have it installed you will want to create a new project.&amp;#160; After the new project is created the area in the app we are going to focus on is found on the Instrumentation Tab.&amp;#160; The screenshot below shows this tab in action.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_7DF64ECF.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_5D02DC28.png" width="644" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1: Adding the ApplicationAttribute&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;In order to identify your application to the RuntimeIntelligence portal you must provide your application an ApplicationAttribute.&amp;#160; This should be placed on your main runtime exe/dll (your UI project for WP7). Here is how we can do this.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right click the main dll in the Instrumentation Screen as such:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_15AD8636.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_6A68EF2E.png" width="244" height="71" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose Add Attribute and then select the PreEmptive.Attributes.ApplicationAttribute and click ok      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_2E3D2386.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_1BF45CC4.png" width="244" height="160" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Provide the details of your application:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_22A76647.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_4830E3A8.png" width="244" height="129" /&gt;&lt;/a&gt;       &lt;ol&gt;       &lt;li&gt;For Application Type you can put anything you want there, I just like putting the platform &lt;/li&gt;        &lt;li&gt;For Guid click the ellipse and it will grab the GUID off your selected dll to use &lt;/li&gt;        &lt;li&gt;For Name provide anything you want to identify your application &lt;/li&gt;        &lt;li&gt;For Version this can be anything, I started with 1.0.0.0 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Step 2: Adding the BusinessAttribute&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the step above we provided an attribute which identifies your application in the portal, this time we need to provide an attribute which identifies the app again, but this time from the perspective of your company and your license with PreEmptive.&amp;#160; Here is how we do this.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right click the main dll in the Instrumentation Screen as such:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_07FACA2E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_47C4B0B3.png" width="244" height="71" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose Add Attribute and then select the PreEmptive.Attributes.BusinessAttribute and click ok      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_006F5AC1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_40394146.png" width="244" height="160" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Provide the details of your business:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_18FEF811.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_1FB20194.png" width="244" height="132" /&gt;&lt;/a&gt;       &lt;ol&gt;       &lt;li&gt;For CompanyKey provide the GUID which is provided to you from the &lt;a title="http://wp7.runtimeintelligence.com/" href="http://wp7.runtimeintelligence.com/"&gt;http://wp7.runtimeintelligence.com/&lt;/a&gt; portal (not that in this screenshot I did not provide the real key).&amp;#160; If you do not provide a valid key you will get the following runtime/compile error - Attribute validation error: The BusinessAttribute on assembly [Assembly name goes here] must have a valid company key. &lt;/li&gt;        &lt;li&gt;For CompanyName provide the name of the company          &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Step 3: Adding the SetupAttribute&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once we have the Application and Business Attributes setup in order to ID your product we now must create a setup attribute.&amp;#160; This SetupAttribute is an instrumentation time attribute for methods. This attribute can be used to guide Application Analytics instrumentation.&amp;#160; This is REQUIRED and you will get an error if you do not have this setup.&amp;#160; Here is how we do this.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Find the entry point in your application.&amp;#160; For a WP7 application that will be in the App.xaml.cs file and you want to attach to the Application_Launching method.&amp;#160; Once you have found this method right click and and add an attribute as such:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_5F7BE819.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_71587BE6.png" width="244" height="69" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose Add Attribute and then select PreEmptive.Attributes.SetupAttribute and click ok:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_780B8569.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_65C2BEA7.png" width="244" height="160" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Provide the details:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_109B22BA.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_7E525BF7.png" width="364" height="260" /&gt;&lt;/a&gt;       &lt;ol&gt;       &lt;li&gt;For CustomEndpoint click the ellipse and choose the WP7 endpoint &lt;/li&gt;        &lt;li&gt;For ExtendedKeySourceOwner click the ellipse and find the entry point into your WP7 app. &lt;/li&gt;        &lt;li&gt;For InstanceIdSourceOwner click the ellipse and find the entry point into your WP7 app. &lt;/li&gt;        &lt;li&gt;Make sure the UseSSL is set to true &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 4: Adding the TeardownAttribute&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the same manor we needed to create a Setup Attribute we need to setup the TeardownAttribute.&amp;#160; The TeardownAttribute is an instrumentation time attribute for methods. This attribute can be used to guide Application Analytics instrumentation.&amp;#160; This will be used to tell the portal that your application has been closed.&amp;#160; This is REQUIRED and you will get an errorif you do not have this setup.&amp;#160; Here is how we do this.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Find the exit point in your application.&amp;#160; For a WP7 application this can be in the App.xaml.cs file and you want to attached to the Application_Closing method.&amp;#160; Once you have found this method right click and add an attribute as such:&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_7013E307.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_44CF4C00.png" width="244" height="55" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose Add Attribute and then select PreEmptive.Attributes.TeardownAttribute and click ok:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_1D9502CB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_765AB995.png" width="244" height="160" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Provide the details (well in this on you can leave all the defaults if you want)      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_4F207060.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_23DBD959.png" width="364" height="106" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;Step 5: Adding a Feature Tracking Attribute&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ok, so we have done all the upfront busy work to enable us to get to this point.&amp;#160; The main point of adding intelligence is to do things like track feature usage or to enable performance tracking.&amp;#160; We will focus here on how to create feature tracking.&amp;#160; &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Find an point/feature in your application which you want to track.&amp;#160; In our case we are going to track each time that a video is played so we are going to find the ‘HandlePlayEpisode’ method and right click this to add a new attribute as such:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_4EB43D6B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_0E7E23F1.png" width="244" height="50" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Choose Add Attribute and then select PreEmptive.Attributes.FeatureAttribute and click ok:      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_7C355D2E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_54FB13F9.png" width="244" height="160" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Provide the details      &lt;br /&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_74A9EDC1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_4D6FA48C.png" width="364" height="108" /&gt;&lt;/a&gt;       &lt;br /&gt;In this example we do not care about extended key values (these are custom data points which can be sent with your messages to give more context)       &lt;ol&gt;       &lt;li&gt;Set the FeatureEventType to Tick (which is the default) &lt;/li&gt;        &lt;li&gt;Provide a Name, this is required and should be unique.&amp;#160; I have a convention I follow in order to allow the names to be searchable and consistent.          &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Step 6: Rebuild your .Xap with the analytics&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Once you are done building your .xap you can then decompile the application via Reflector or what ever and take a look at the code which is injected via the PreEmptive process.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 7: Log into the WP7.Runtimeintelligence.com portal and see your information&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There you have, the 7 steps needed to go from 0 to runtime intelligence.&amp;#160; Adding this information is not difficult and can yield great information on how your application is being used in the field by REAL users.&amp;#160; &lt;/p&gt;  &lt;p&gt;Till next time,    &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66761" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>How to Capture User Signatures on WP7</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/25/how-to-capture-user-signatures-on-wp7.aspx</link><pubDate>Fri, 25 Mar 2011 10:41:26 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66734</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66734</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66734</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/25/how-to-capture-user-signatures-on-wp7.aspx#comments</comments><description>&lt;p&gt;Since the iPhone came out a few years ago the idea of using a stylus on a cell phone to perform any type of input action as become ‘old school’.&amp;#160; Steve Jobs once said that if your phone uses a stylus you are doing it wrong (which by the way if I remember he was taking direct aim at Windows Phone 6.5… and rightfully so).&amp;#160; &lt;/p&gt;  &lt;p&gt;As much as I agree that you should be able to interact with a phone with simply your fingers a stylus has one advantage in ONE area, signature input capture (or simply drawing).&amp;#160; Of course you can use your finger to draw/create a signature but a stylus simply makes it easier as we are more accustom to using a pen not our fingers for these things.&amp;#160; In this post I will walk though how we can capture user drawing/signature input on the WP7 platform and turn this input into a signature.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1 – How to capture the signature&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a Canvas Control and place it on your form &lt;/li&gt;    &lt;li&gt;Hookup the following 3 events on the canvas      &lt;ol&gt;       &lt;li&gt;ManipulationStarted &lt;/li&gt;        &lt;li&gt;ManipulationCompleted &lt;/li&gt;        &lt;li&gt;ManipulationDelta &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Create the logic to handle the 3 events we just registered      &lt;ol&gt;       &lt;li&gt;Pre-Event Setup Code          &lt;br /&gt;          &lt;pre class="c-sharp" name="code"&gt;	private Polyline _lineBeingDrawn;
	private IList&amp;lt;ilist&amp;lt;point&amp;gt;&amp;gt; _points = new List&amp;lt;ilist&amp;lt;point&amp;gt;&amp;gt;();
	&lt;/pre&gt;
      &lt;/li&gt;

      &lt;li&gt;ManipulationStarted 
        &lt;br /&gt;

        &lt;pre class="c-sharp" name="code"&gt;// Here we want to start our new line for drawing and we want to 
// add the polyline as a child item to the SignatureCanvas.
_lineBeingDrawn = new Polyline
	{
	        Stroke = new SolidColorBrush(Colors.Orange),
        	StrokeThickness = SignatureStrokeThickness,
        	Points = new PointCollection { new Point(e.ManipulationOrigin.X, e.ManipulationOrigin.Y) }
	};


SignatureCanvas.Children.Add(_lineBeingDrawn);&lt;/pre&gt;
      &lt;/li&gt;

      &lt;li&gt;ManipulationCompleted 
        &lt;br /&gt;

        &lt;pre class="c-sharp" name="code"&gt;// Here we want to simply add the points information to the list of points we
// are capturing in order to redraw this later if needed.
_points.Add(_lineBeingDrawn.Points);&lt;/pre&gt;
      &lt;/li&gt;

      &lt;li&gt;ManipulationDelta 
        &lt;br /&gt;

        &lt;pre class="c-sharp" name="code"&gt;// Here we are adding new points to the PolyLine we created and added as a child 
// in the Started event above
_lineBeingDrawn.Points.Add(new Point(e.ManipulationOrigin.X, e.ManipulationOrigin.Y));&lt;/pre&gt;
      &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;
  &lt;br /&gt;&lt;strong&gt;Step 2 – How to redraw the signature on the screen&lt;/strong&gt; 

  &lt;br /&gt;After we hooked up the events above we should be able to not only draw on the canvas but we should also be storing the points for each movement into our _points collection.&amp;#160; Given this fact we can redraw the image on a clean canvas with very little effort. The code below will show how to redraw the signature.&lt;/p&gt;

&lt;pre class="c-sharp" name="code"&gt;// We want to loop through the list of points we have been creating.  With each outer element in the list
// we create a new Polyline and then loop though each segment of that point.
// When we are done with the segments we simply add the PolyLine to the canvas
foreach (var segment in _points)
{
    _lineBeingDrawn = new Polyline
    {
        Stroke = new SolidColorBrush(Colors.Brown),
        StrokeThickness = 3.00,
    };


    foreach (var point in segment)
    {
        _lineBeingDrawn.Points.Add(new Point(point.X, point.Y));
    }

    SignatureCanvas.Children.Add(_lineBeingDrawn);
}&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3 – How to create an image from the signature 
    &lt;br /&gt;&lt;/strong&gt;Now that we have been able to capture the signature and redraw it how do we save the information to a bitmap?&amp;#160; Well this is a bit more work (and this code is courtesy of one of my awesome XAML developers on my mobile team so I take NO credit, just blame for this) but is not all the hard.&lt;/p&gt;

&lt;pre class="c-sharp" name="code"&gt;var group = new GeometryGroup();
Path path = new Path()
                {
                    Stroke = new SolidColorBrush(Colors.Black),
                    StrokeThickness = SignatureStrokeThickness,
                    Data = group
                };

foreach (var segment in _points)
{
    Point? startPoint = new Point?();
    for (int pIndex = 0; pIndex &amp;lt; segment.Count; pIndex++)
    {
        var point = segment[pIndex];
        if (pIndex == 0)
        {
            startPoint = point;
        }
        else if (startPoint != null)
        {
            var geometry = new LineGeometry
                                {
                                    StartPoint = startPoint.Value,
                                    EndPoint = point
                                };
            group.Children.Add(geometry);
            startPoint = point;
        }
    }
}

path.Measure(SignatureCanvas.DesiredSize);
path.Arrange(new Rect(new Point(), path.DesiredSize));

//fill white background
{
    Path backgroundPath = new Path()
                                {
                                    Fill = new SolidColorBrush(Colors.White),
                                    Data = new RectangleGeometry()
                                                {
                                                    Rect =
                                                        new Rect(0, 0, bitmap.PixelWidth,
                                                                bitmap.PixelHeight)
                                                }
                                };
    bitmap.Render(backgroundPath, null);
}

bitmap.Render(path, null);
bitmap.Invalidate();

//convert to binnary array
MemoryStream imgStream = new MemoryStream();
bitmap.SaveJpeg(imgStream, bitmap.PixelWidth, bitmap.PixelHeight, 0, 100);
byte[] bitmapData = imgStream.ToArray();&lt;/pre&gt;

&lt;p&gt;As you can see creating the ability to not only capture signatures (or simply user input) and then converting the data into a bitmap is NOT hard but it does take a bit of effort. Hope this helps someone.&lt;/p&gt;

&lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66734" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/XAML/default.aspx">XAML</category></item><item><title>Observations of Microsoft Testing WP7 Applications</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/17/observations-of-microsoft-testing-wp7-applications.aspx</link><pubDate>Thu, 17 Mar 2011 12:31:34 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66714</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66714</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66714</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/17/observations-of-microsoft-testing-wp7-applications.aspx#comments</comments><description>&lt;p&gt;Everyone should know that when you submit an application to Microsoft for ingestion into their marketplace the application is test by a real person on a real device.&amp;#160; However, one thing I did not expect is that they would test the application on multiple devices.&lt;/p&gt;  &lt;p&gt;As I am waiting for the next release of our enterprise application to be accepted into the marketplace I was looking at our data usage logs on our servers and noticed the fact that they are testing with various devices (trust me I know it is MS testing rather than one of my internal users).&lt;/p&gt;  &lt;p&gt;Below are a list of the devices that they appear to be using for testing&lt;/p&gt;  &lt;p&gt;T8788 – This is the Samsung Omnia 7&lt;/p&gt;  &lt;p&gt;LG-C900 – This is the LG C900&lt;/p&gt;  &lt;p&gt;SGH-i917 – This is the Samsung Focus (which was the only device there were testing on a few weeks ago)&lt;/p&gt;  &lt;p&gt;MWP6985 – This appears to be the HTC Pro&lt;/p&gt;  &lt;p&gt;I know this post is really not that useful other than to point out that Microsoft is attempting to do good, multi-device testing on applications prior to certifications.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;  &lt;p&gt;P.S. As a side note, not only are they testing on multiple devices they are also going into and out of the application MANY times.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66714" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>Dimecasts.net WP7 Application has been released</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/01/dimecasts-net-wp7-application-has-been-released.aspx</link><pubDate>Tue, 01 Mar 2011 13:43:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66674</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66674</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66674</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/03/01/dimecasts-net-wp7-application-has-been-released.aspx#comments</comments><description>&lt;blockquote&gt;
&lt;p&gt;I am super pumped to announce that today I received word from Microsoft that the &lt;a href="http://www.dimecasts.net"&gt;Dimecasts.net&lt;/a&gt; Windows Phone 7 application has been released.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you have a WP7 and you are a fan of Dimecasts.net then please download and &lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=c63c0765-e814-e011-9264-00237de2db9e"&gt;install the app&lt;/a&gt;.&amp;nbsp; This is the first release and more than anything is &amp;lsquo;get it out there&amp;rsquo; release in order to start to get feedback.&amp;nbsp; Please let me know what you think about the app, feedback is encouraged.&lt;/p&gt;
&lt;p&gt;Till next time,&lt;/p&gt;
&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66674" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/DimeCasts.Net/default.aspx">DimeCasts.Net</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>How to Obfuscate your WP7 application via nant and build scripts</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/22/how-to-obfuscate-your-wp7-application-via-nant-and-build-scripts.aspx</link><pubDate>Tue, 22 Feb 2011 19:27:39 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66626</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66626</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66626</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/22/how-to-obfuscate-your-wp7-application-via-nant-and-build-scripts.aspx#comments</comments><description>&lt;p&gt;If you are building a WP7 application you really, really need to look into obfuscating your .xap prior to submission.&amp;#160; For the time being &lt;a href="http://www.preemptive.com/know-more/windows-phone-7"&gt;PreEmptive&lt;/a&gt; is giving away a license of their Dotfuscator for WP7 usage.&amp;#160; Running the tool via the UI is simple and easy, I want to obfuscate our .xap EVERY NIGHT via our build process.&lt;/p&gt;  &lt;p&gt;The real good news for us is that PreEmptive has made this process very easy, check out the &lt;a href="http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/Command_Line_Option_Summary.html"&gt;online docs for how&lt;/a&gt;.&amp;#160; What I have done is wrapped this in a very simple Nant script to help everyone along.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Step 1 – Install Dotfuscator for WP7&lt;/p&gt;  &lt;p&gt;Step 2 – Setup your Nant Script&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_15E667CD.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_157A34D8.png" width="966" height="378" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Things to pay attention to in the script above (sorry it is an image, XML does not work too well in my blog)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The path to dotfuscator may be different for you&lt;/li&gt;    &lt;li&gt;The name of your configuration file may be different.&amp;#160; (note that I ran the UI to build the .config first)&lt;/li&gt;    &lt;li&gt;You may want to switch out the command line switches&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Step 3 – Run the Nant script from the command line&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;c:\Path to Nant\Nant\nant.exe -buildfile:build.xml obfuscate.Mobile.xap&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;As you can see running Dotfuscator from the command line is cake and with this you can now obfuscate your .xap’s on your build server.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66626" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>Index was outside the bounds of the array when Obfuscating a LARGE WP7 application</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/22/index-was-outside-the-bounds-of-the-array-when-obfuscating-a-large-wp7-application.aspx</link><pubDate>Tue, 22 Feb 2011 18:14:00 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:66624</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=66624</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=66624</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/22/index-was-outside-the-bounds-of-the-array-when-obfuscating-a-large-wp7-application.aspx#comments</comments><description>&lt;p&gt;This is a follow up to my &lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2010/12/31/obfuscating-your-wp7-applications.aspx"&gt;prior post&lt;/a&gt; on how to obfuscate a WP7 application, which is really just a call out to &lt;a href="http://weblogs.asp.net/bsimser/archive/2010/12/31/dotfuscator-deep-dive-with-wp7.aspx"&gt;Bil&amp;rsquo;s post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While trying to get a large (when I say large it takes 2+ hours just to obfuscate) WP7 application ready for publication I ran into an error while trying to obfuscate our entire .xap.&amp;nbsp; The error was&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Writing XAML: Phone.Controls.g.resources\themes/generic.xaml     &lt;br /&gt;Index was outside the bounds of the array.      &lt;br /&gt;Build Error.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No of course this error did NOT lead me to a solution so I tried a whole sort of changes to see if I could resolve it.&amp;nbsp; What I did find is that I could obfuscate each assembly on its own, but not the entire .xap.&amp;nbsp; Because I was getting desperate, and twitter was no help, I decided to email support at &lt;a href="http://www.preemptive.com/know-more/windows-phone-7"&gt;PreEmptive&lt;/a&gt;.&amp;nbsp; In my email I provided them with my full build log.&lt;/p&gt;
&lt;p&gt;Well, less than 24 hours later I received an email from their support with a few suggestions.&amp;nbsp; I tried the suggestions below as suggested:&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; From the input tab: make sure that all third party assemblies within the XAP package have been marked as &amp;ldquo;Artifact&amp;rdquo;.&amp;nbsp; (Right click on the third party dll and select &amp;ldquo;Exclude Assembly from Package&amp;rdquo;).&amp;nbsp; This will instruct Dotfuscator to obfuscate/instrument only non-third party libraries.&lt;/p&gt;
&lt;p&gt; 2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; From the settings tab: to start, enable &amp;ldquo;Control Flow&amp;rdquo; and &amp;ldquo;String Encryption&amp;rdquo;, and disable &amp;ldquo;Renaming&amp;rdquo; (i.e. set Disable Renaming to &amp;ldquo;Yes&amp;rdquo;).&lt;/p&gt;
&lt;p&gt; 3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If the XAP file is signed, you can provide a Certificate file by selecting the XAP file from the input tab, and selecting the properties &lt;/p&gt;
&lt;p&gt;After doing this I was able to get my app obfuscated and loaded onto my emulator. I even went and ran it again but this time turning String Encryption back on and it still worked.&amp;nbsp; Looks like the trick was to remove the 3rd party assemblies from the list of assemblies to scan, which makes sense.&lt;/p&gt;
&lt;p&gt;Anyway, the moral of the story is that when obfuscating your WP7 application make sure you omit any 3rd party assemblies and you should be right as rain.&lt;/p&gt;
&lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=66624" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/Help_210021002100_/default.aspx">Help!!!</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/XAML/default.aspx">XAML</category></item><item><title>Installing the January WP7 Developer tools</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/09/installing-the-january-wp7-developer-tools.aspx</link><pubDate>Wed, 09 Feb 2011 13:20:15 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:65403</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=65403</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=65403</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2011/02/09/installing-the-january-wp7-developer-tools.aspx#comments</comments><description>&lt;p&gt;If you are in the process of trying to upgrade to the January WP7 &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=49B9D0C5-6597-4313-912A-F0CCA9C7D277"&gt;tools&lt;/a&gt; and you are running the WindowsPhoneDeveloperResources_en-US_Patch1.msp package make sure you have closed down your emulator.&amp;#160; &lt;/p&gt;  &lt;p&gt;I have found that when I had my emulator up and running the installer would launch, run for a second then close w/ no message.&amp;#160; When I closed down the emulator and re-ran the package it ran and completed correctly.&lt;/p&gt;  &lt;p&gt;It is possible this is just my experiences during this install, but I thought I would share this in case someone else out there was wondering why the installer is starting and stopping without any messages.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=65403" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/Help_210021002100_/default.aspx">Help!!!</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/HowTo/default.aspx">HowTo</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item><item><title>Early (aka Alpha Version) of the Dimecasts.net WP7 Application</title><link>http://devlicio.us/blogs/derik_whittaker/archive/2010/12/31/early-aka-alpha-version-of-the-dimecasts-net-wp7-application.aspx</link><pubDate>Fri, 31 Dec 2010 19:13:12 GMT</pubDate><guid isPermaLink="false">40756a8b-6212-4073-9d98-6c26781577de:64298</guid><dc:creator>Derik Whittaker</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/rsscomments.aspx?PostID=64298</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://devlicio.us/blogs/derik_whittaker/commentapi.aspx?PostID=64298</wfw:comment><comments>http://devlicio.us/blogs/derik_whittaker/archive/2010/12/31/early-aka-alpha-version-of-the-dimecasts-net-wp7-application.aspx#comments</comments><description>&lt;p&gt;I have been working on and off on my WP7 application for &lt;a href="http://www.dimecasts.net"&gt;dimecasts.net&lt;/a&gt;, in fact I have started and scrapped at least 3 versions of this application.&amp;#160; However with a extended vacation this past week I finally was able to give it some real love.&lt;/p&gt;  &lt;p&gt;I have decided to post a very early (aka VERY ALPHA version) of the application for everyone to download.&amp;#160; If you would like to grap this you can get it &lt;a href="http://dimecasts.shared.s3.amazonaws.com/DimecastsWP7.Alpha/Dimecasts.WP7.Mobile.xap"&gt;here&lt;/a&gt;.&amp;#160; Right now this application does not hit any web services to get updates on data (still in the works), is lacking a few small features (aka bugs) and is not the final UX styling I am going to use.&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is a few screenshots of the application as it sits right now.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_31202A05.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_30844750.png" width="136" height="244" /&gt;&lt;/a&gt; &lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_14931258.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_10C547BB.png" width="136" height="244" /&gt;&lt;/a&gt; &lt;a href="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_364EC51C.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://devlicio.us/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/derik_5F00_whittaker/image_5F00_thumb_5F00_44C9C141.png" width="136" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Please download the application and let me know your thoughts.&lt;/p&gt;  &lt;p&gt;Till next time,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://devlicio.us/aggbug.aspx?PostID=64298" width="1" height="1"&gt;</description><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/DimeCasts.Net/default.aspx">DimeCasts.Net</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WP7/default.aspx">WP7</category><category domain="http://devlicio.us/blogs/derik_whittaker/archive/tags/WindowsPhone/default.aspx">WindowsPhone</category></item></channel></rss>