<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9093594807108890290</id><updated>2012-02-16T02:26:07.505-08:00</updated><category term='argumentnullexception'/><category term='control'/><category term='Research'/><category term='Software Engineering'/><category term='profiler'/><category term='xing for windows phone'/><category term='nunit'/><category term='submission'/><category term='Windows Phone'/><category term='test'/><category term='submit'/><category term='popup'/><category term='wp7'/><category term='unit test'/><category term='mango'/><category term='wp7 login'/><category term='tiles'/><category term='Write programs on the Windows Phone 7'/><category term='EventToCommand'/><category term='email'/><category term='keybord'/><category term='silverlight unit test framework'/><category term='MVVM Light Toolkit'/><category term='menu'/><category term='lessons learned'/><category term='update'/><category term='TouchStudio'/><category term='hub'/><category term='scripting'/><category term='screen'/><category term='Write programs on WP7'/><category term='Visual Studio Tools'/><category term='navigation'/><category term='live tile'/><category term='login'/><category term='transition'/><category term='schedule'/><category term='TouchDevelop'/><category term='continuous testing'/><category term='UX'/><category term='integration test'/><category term='unit test metric'/><category term='force'/><category term='Memory Leak'/><category term='page'/><category term='xing'/><category term='Windows Phone 7'/><category term='Programming the WP7'/><category term='rollout'/><category term='emulator'/><category term='dogear'/><category term='mvvm'/><category term='Marketplace'/><category term='hub control'/><category term='xing app'/><category term='shake'/><category term='Test Kit'/><category term='NCrunch'/><category term='release'/><category term='architecture'/><category term='zühlke'/><title type='text'>eat code sleep</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-4897145428843280483</id><published>2012-02-01T06:04:00.000-08:00</published><updated>2012-02-01T07:17:11.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NCrunch'/><category scheme='http://www.blogger.com/atom/ns#' term='unit test metric'/><category scheme='http://www.blogger.com/atom/ns#' term='continuous testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='unit test'/><title type='text'>Tool tip of the day: NCrunch</title><content type='html'>&lt;span class="yj-message"&gt;This could be one of the things that you can't live without.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The usual steps you go with TDD and Visual Studio at the moment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Write test&lt;/li&gt;&lt;li&gt;Stop and run tests&lt;/li&gt;&lt;li&gt;Write code&lt;/li&gt;&lt;li&gt;Stop and run tests&lt;/li&gt;&lt;li&gt;Refactor code&lt;/li&gt;&lt;li&gt;Stop and run tests&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You can go with &lt;a href="http://www.ncrunch.net/"&gt;NCrunch &lt;/a&gt;and it look like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Write test&lt;/li&gt;&lt;li&gt;Write code&lt;/li&gt;&lt;li&gt;Refactor code&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.ncrunch.net/"&gt;NCrunch &lt;/a&gt;is an automated parallel continuous testing tool for Visual Studio .NET.&lt;br /&gt;It intelligently takes responsibility for running automated tests so  that you      don't have to, and it gives you a huge amount of useful information  about your tests (such as code coverage and performance metrics) inline  in your IDE &lt;b&gt;while you work&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;I will &lt;a href="http://www.ncrunch.net/download.htm"&gt;give it a try&lt;/a&gt; with my current project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-4897145428843280483?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/4897145428843280483/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2012/02/tool-tip-of-day-ncrunch.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/4897145428843280483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/4897145428843280483'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2012/02/tool-tip-of-day-ncrunch.html' title='Tool tip of the day: NCrunch'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-8791570367949967414</id><published>2012-01-27T06:37:00.000-08:00</published><updated>2012-01-30T01:59:53.604-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiles'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='mango'/><category scheme='http://www.blogger.com/atom/ns#' term='hub control'/><category scheme='http://www.blogger.com/atom/ns#' term='xing app'/><category scheme='http://www.blogger.com/atom/ns#' term='menu'/><category scheme='http://www.blogger.com/atom/ns#' term='dogear'/><category scheme='http://www.blogger.com/atom/ns#' term='control'/><category scheme='http://www.blogger.com/atom/ns#' term='shake'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='UX'/><category scheme='http://www.blogger.com/atom/ns#' term='hub'/><category scheme='http://www.blogger.com/atom/ns#' term='live tile'/><title type='text'>Windows Phone Hub Control</title><content type='html'>In this article i will write about our experience with the Xing App main menu development. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;What do we talk about? &lt;/span&gt;&lt;br /&gt;When you think about a Windows Phone, the first association that comes up is this metro style and the live tiles.&lt;br /&gt;The big new thing with the WP7 is this HUB control. It is the central place on the WP7. &lt;br /&gt;Some apps make use to have such a HUB in the app. But be careful! We had some problems in the submission with it. Microsoft is not so happy about it when your menu is too similar to the WP7 hub. Microsoft will not confuse the user to much. &lt;br /&gt;&lt;br /&gt;The idea was to include all nessesary informations in the menu in the familiar WP7 Metro style.&lt;br /&gt;It shows your xing network activities in one screen.&lt;br /&gt;In the beginning of 2011 we had care about our main menu and our concept.&lt;br /&gt;During  the development of the Xing app. We talked often about what we  do if  we have new functionality. Do we increase the tiles of our menu.  Or  what should we do?&lt;br /&gt;&lt;br /&gt;Increase the tiles change the design.but each user has his workflow  with  the app. A change to the app will cause a rethink of the workflow.  The  user still knows where he can find the functionality.We decide to do not more then six tiles in the main menu.&lt;br /&gt;But in v1.3 comes the 7th tile and they did not matched in the current concept at all. &lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-V82ARQSfO1U/Tu87XvYB9dI/AAAAAAAAAGE/o6_bkS0apYE/s1600/XING+for+Windows+Phone+by+Z%25C3%25BChlke_LoRes_screen_0b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-V82ARQSfO1U/Tu87XvYB9dI/AAAAAAAAAGE/o6_bkS0apYE/s400/XING+for+Windows+Phone+by+Z%25C3%25BChlke_LoRes_screen_0b.png" width="240" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;WP7 Xing Hub Control in v1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size: large;"&gt;And then came Mango&lt;/span&gt;&lt;br /&gt;In the early summer time with the first announcement of "Mango" - the codename of Windows Phone 7.5 - we had the idea to use also the backside of each tile.&lt;br /&gt;&lt;br /&gt;We had a critical point of view of it. First, the new tiles turn automatically around. You have no option to do it by yourself. Second, you got no information about the tile from the other side.&amp;nbsp; &lt;br /&gt;We struggled around with these problems. We had a lot of concepts but also a lot of respect to submit these changes. We did not know if the users will like these changes and is it usable?&lt;br /&gt;Also we had still some open questions:&amp;nbsp; How to turn a tile? &lt;br /&gt;&lt;ul&gt;&lt;li&gt;only turn one tile&lt;/li&gt;&lt;li&gt;turn all tiles&lt;/li&gt;&lt;li&gt;only turn tiles wich offer this functionality&lt;/li&gt;&lt;/ul&gt;The decision after our intern tests was to ends in turn all tiles. In this way there is always the same behavior behind this functionality.&amp;nbsp; &lt;br /&gt;Another problem was the usability for this functionality.&lt;br /&gt;We made first tests with a custom slider/button with arrows to turn the tiles. But this did not feel right. Furthermore - how shall the tiles be animated?&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-k5pAToZYSSE/TyK0JH0fTuI/AAAAAAAAAGw/ckUoohyHflg/s1600/HiRes_Pano_Tiles_Front.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="301" src="http://2.bp.blogspot.com/-k5pAToZYSSE/TyK0JH0fTuI/AAAAAAAAAGw/ckUoohyHflg/s320/HiRes_Pano_Tiles_Front.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;First draft how to turn a tile&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&amp;nbsp;We tried some solutions and we are really happy about this vertically flickr gesture to turn around our tiles. You are also able to shake your handy to do this.&lt;br /&gt;The animation is similar to dominos and will in a round robin style physical correct animated.&lt;br /&gt;&lt;br /&gt;When you navigate to the main page the tiles will shake a little bit to give a hint they are turnable. But what is with the information from the backside e.g. contact count, message count...&lt;br /&gt;After a lot of brainstorming we came to a really cool idea. How to show information from the backside? How about to show a folder edge from the backside?&lt;br /&gt;We called the feature "dog-ear" since it reminds the folded edge in a book. The user sees that there is something behind (same color like the reverse). On this edge the information from the backside tile is also visible.&lt;br /&gt;This feature also increased the users advertent and many users touched on it.&lt;br /&gt;So it is also possible to trigger the tiles turn around with it.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VTDlfSi2WeQ/Tu9f9Z_IvQI/AAAAAAAAAGc/l2Oy2AlVsMo/s1600/En_DarkTheme_Panorama.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-VTDlfSi2WeQ/Tu9f9Z_IvQI/AAAAAAAAAGc/l2Oy2AlVsMo/s640/En_DarkTheme_Panorama.png" width="384" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Xing app Hub Control in v2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-d3c1ac9d575912da" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v10.nonxt3.googlevideo.com/videoplayback?id%3Dd3c1ac9d575912da%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332171250%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D4535229AD5FC7F9DB54CBAE17C41006327A27F7F.1D4C7467AB951DD39ABA773350A440054A38A984%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dd3c1ac9d575912da%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dv4WAkC8zxHPbhRnq9CKHNc7dQPk&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v10.nonxt3.googlevideo.com/videoplayback?id%3Dd3c1ac9d575912da%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1332171250%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D4535229AD5FC7F9DB54CBAE17C41006327A27F7F.1D4C7467AB951DD39ABA773350A440054A38A984%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dd3c1ac9d575912da%26offsetms%3D5000%26itag%3Dw160%26sigh%3Dv4WAkC8zxHPbhRnq9CKHNc7dQPk&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It was our intention every user will see this feature by playing around with the app by own.&lt;br /&gt;It is very interesting for us how is your experience with it?&lt;br /&gt;Do you just understand how to use it?&lt;br /&gt;&lt;br /&gt;We are really happy about all your feedback!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;span id="goog_416966238"&gt;&lt;/span&gt;&lt;span id="goog_416966239"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-8791570367949967414?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/8791570367949967414/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2012/01/windows-phone-hub-control.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8791570367949967414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8791570367949967414'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2012/01/windows-phone-hub-control.html' title='Windows Phone Hub Control'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-V82ARQSfO1U/Tu87XvYB9dI/AAAAAAAAAGE/o6_bkS0apYE/s72-c/XING+for+Windows+Phone+by+Z%25C3%25BChlke_LoRes_screen_0b.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-9223079770148385580</id><published>2011-11-18T06:07:00.000-08:00</published><updated>2011-11-18T06:08:35.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='screen'/><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='transition'/><category scheme='http://www.blogger.com/atom/ns#' term='lessons learned'/><category scheme='http://www.blogger.com/atom/ns#' term='popup'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7 login'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='xing'/><category scheme='http://www.blogger.com/atom/ns#' term='page'/><category scheme='http://www.blogger.com/atom/ns#' term='navigation'/><title type='text'>Windows Phone Login</title><content type='html'>In this article i will write about our&amp;nbsp;lessons learned - WP7 login page development. &lt;br /&gt;&lt;br /&gt;Windows Phone apps are composed of pages that exist on a backstack and&lt;br /&gt;can be reversed by user with the hardware back key.&lt;br /&gt;&lt;br /&gt;There are some screens you do not want to come back. Like the login screen.&lt;br /&gt;After successfully logged in, the login screen should removed from the backstack.&lt;br /&gt;But explicit navigating away and from the login screen will cause to infinitly growing up your backstack. There are some solutions of keeping screens out of the backstack.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;Xing-App &lt;/b&gt;main page is a panorama control. The first approach for a login was kind of interesting.&lt;br /&gt;We implement the login screen as a panorama item. This item is visible when you are not logged in. After successfully logged in, the item is hidden. The other items have the inverse behavior.&amp;nbsp; &lt;br /&gt;In this solution we prevent the backstack problem.&lt;br /&gt;&lt;br /&gt;While thinking about a different solution, we discussed the difference between transition and navigation. Navigation is a transition between different places. A Page is a place with a state.&lt;br /&gt;But what is with this stateless pages? Here we have this splash screen or our login screen.&lt;br /&gt;A common way to implement a login screen is as the first page of your app.&lt;br /&gt;&lt;br /&gt;But is it really what you want?&lt;br /&gt;While thinking about this, we came to that point the login screen can come up from everywhere in our app. The login screen has no place and it is stateless. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-21-metablogapi/8666.places_5F00_thumb_5F00_2574ED4C.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="217" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-30-21-metablogapi/8666.places_5F00_thumb_5F00_2574ED4C.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;source:&lt;/b&gt; http://blogs.msdn.com/b/ptorr/archive/2010/08/28/introducing-the-concept-of-places.aspx&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;It is useful for example when you loose your access key and you have to login again.&lt;br /&gt;The login page will popup at this place and you can continue after success. &lt;br /&gt;&lt;span style="font-family: Calibri; font-size: 11pt;"&gt;The Silverlight Popup control is a great solution for showing content that (partially) covers the screen without doing a full navigation&lt;/span&gt;.You can also override the back key pressed event to handle the hardware back key to have more control over the popup.&lt;br /&gt;&lt;br /&gt;This login behavior can also be useful for other platforms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-9223079770148385580?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/9223079770148385580/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/11/windows-phone-login.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/9223079770148385580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/9223079770148385580'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/11/windows-phone-login.html' title='Windows Phone Login'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-9204507216634300401</id><published>2011-10-14T07:11:00.000-07:00</published><updated>2011-10-14T07:11:28.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='submit'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='submission'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='mango'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='Marketplace'/><category scheme='http://www.blogger.com/atom/ns#' term='Test Kit'/><title type='text'>Windows Phone Marketplace Test Kit</title><content type='html'>There is a new Toolkit for WP7 available.&lt;br /&gt;The Windows Phone Marketplace Test Kit help to prepare your application to be accepted in the Marketplace.&lt;br /&gt;The Test Kit enables you to identify and fix issues prior submission.&lt;br /&gt;You can use the test kit to evaluate applications that target Windows Phone OS 7.1 or later and it is part of the Windows Phone SDK.&lt;br /&gt;Here are some of the tests from the &lt;a href="http://msdn.microsoft.com/en-us/library/hh394032%28v=vs.92%29.aspx"&gt;msdn page&lt;/a&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Whether the specified images and screenshots meet certification requirements.&lt;/li&gt;&lt;li&gt;Whether the application icon and background image used in the application meet the certification requirements.&lt;/li&gt;&lt;li&gt;What capabilities the application uses.&lt;/li&gt;&lt;li&gt;Whether the XAP meets size requirements and whether the application manifest is valid&lt;/li&gt;&lt;li&gt;Whether the application handles errors properly.&lt;/li&gt;&lt;li&gt;Whether the application starts quickly enough to meet certification requirements.&lt;/li&gt;&lt;li&gt;Whether the application exceeds memory usage requirements.&lt;/li&gt;&lt;li&gt;Whether the Back button in the application is being used properly.&lt;/li&gt;&lt;li&gt;Whether the application uses APIs that are not allowed on the phone.&lt;/li&gt;&lt;li&gt;Whether the application uses APIs that are not allowed with background agents.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Using The Test Kit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0FTpTCxHTdc/Tpg-iXa5-3I/AAAAAAAAAEA/Vc1FlrSBrz8/s1600/IC539604.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="235" src="http://2.bp.blogspot.com/-0FTpTCxHTdc/Tpg-iXa5-3I/AAAAAAAAAEA/Vc1FlrSBrz8/s400/IC539604.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Application Details&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FFLLhH-0W3c/Tpg_ZaXp1bI/AAAAAAAAAEI/A85oRiJSFj8/s1600/IC531042.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="181" src="http://3.bp.blogspot.com/-FFLLhH-0W3c/Tpg_ZaXp1bI/AAAAAAAAAEI/A85oRiJSFj8/s400/IC531042.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Automated Tests&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-txQ37Aswfw8/Tpg_p4ipfrI/AAAAAAAAAEQ/j4_bf25FiB0/s1600/IC531043.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="172" src="http://4.bp.blogspot.com/-txQ37Aswfw8/Tpg_p4ipfrI/AAAAAAAAAEQ/j4_bf25FiB0/s400/IC531043.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Monitored Tests&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sMsjaqJj8lc/Tpg_3GJ9jpI/AAAAAAAAAEY/3VzuDPfqgSQ/s1600/IC539605.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://1.bp.blogspot.com/-sMsjaqJj8lc/Tpg_3GJ9jpI/AAAAAAAAAEY/3VzuDPfqgSQ/s400/IC539605.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Manual Tests&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-9204507216634300401?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/9204507216634300401/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/10/windows-phone-marketplace-test-kit.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/9204507216634300401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/9204507216634300401'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/10/windows-phone-marketplace-test-kit.html' title='Windows Phone Marketplace Test Kit'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0FTpTCxHTdc/Tpg-iXa5-3I/AAAAAAAAAEA/Vc1FlrSBrz8/s72-c/IC539604.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-3050696070707527874</id><published>2011-09-28T01:27:00.000-07:00</published><updated>2011-09-28T01:27:41.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='mango'/><category scheme='http://www.blogger.com/atom/ns#' term='rollout'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='force'/><category scheme='http://www.blogger.com/atom/ns#' term='schedule'/><title type='text'>How to force Windows Phone Mango update early</title><content type='html'>Windows Phone Mango has started rolling out but not all customers are actually scheduled to receive the update on day one.&lt;br /&gt;The entire process may take one month.&lt;br /&gt;Those of us they won't wait &lt;a href="http://www.wpcentral.com/force-mango-update-early-through-zune-software"&gt;here&lt;/a&gt; is a way to force the update immediately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-3050696070707527874?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/3050696070707527874/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/09/how-to-force-windows-phone-mango-update.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/3050696070707527874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/3050696070707527874'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/09/how-to-force-windows-phone-mango-update.html' title='How to force Windows Phone Mango update early'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-4851618614312831663</id><published>2011-09-07T02:57:00.000-07:00</published><updated>2011-09-07T02:57:32.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Write programs on WP7'/><category scheme='http://www.blogger.com/atom/ns#' term='Write programs on the Windows Phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='TouchStudio'/><category scheme='http://www.blogger.com/atom/ns#' term='TouchDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='Research'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming the WP7'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>Program your phone directly on your phone</title><content type='html'>With TouchDevelop you do not need a separate PC.         Scripts can perform various tasks similar to regular apps.         Any TouchDevelop user can install, run, edit, and publish scripts.         You can share your scripts with other people by publishing them.&amp;nbsp;     &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://www.touchdevelop.com/images/5_TouchDevelop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://www.touchdevelop.com/images/5_TouchDevelop.png" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Let us see in the oracle and the impact on Software Engineering.&lt;br /&gt;Will this spawn something like the VBA cottage industry? &lt;br /&gt;In the future you might be able to create powershell script or similar for an enterprise.&lt;br /&gt;Also you will now have not only a consumer device and can create useful software, after all if you can create your first game, then you can do just about anything. Other platforms will come with the same idea and end user can actually build useful products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-4851618614312831663?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/4851618614312831663/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/09/program-your-phone-directly-on-your.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/4851618614312831663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/4851618614312831663'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/09/program-your-phone-directly-on-your.html' title='Program your phone directly on your phone'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-8483883157898451701</id><published>2011-08-03T02:15:00.000-07:00</published><updated>2011-08-03T02:15:02.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integration test'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='xing'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight unit test framework'/><category scheme='http://www.blogger.com/atom/ns#' term='unit test'/><category scheme='http://www.blogger.com/atom/ns#' term='nunit'/><title type='text'>Unit Testing for Windows Phone</title><content type='html'>&lt;style type="text/css"&gt;/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */.csharp .de1, .csharp .de2 {color: #000060; font-weight: normal;}.csharp  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;}.csharp a:link {color: #006;}.csharp a:hover {background-color: #d6d6e6;}.csharp .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}.csharp .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}.csharp .imp {font-weight: bold; color: red;}.csharp li, .csharp .li1 {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;}.csharp .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}.csharp .li2 {font-weight: bold; color: #000090; line-height: 90%}.csharp .kw1 {color: #0600FF; font-weight: bold;}.csharp .kw2 {color: #FF8000; font-weight: bold;}.csharp .kw3 {color: #008000;}.csharp .kw4 {color: #6666cc; font-weight: bold;}.csharp .kw5 {color: #000000;}.csharp .co1 {color: #008080; font-style: italic;font-style: normal;}.csharp .co2 {color: #008080;}.csharp .co3 {color: #008080;}.csharp .coMULTI {color: #008080; font-style: italic;font-style: normal;}.csharp .es0 {color: #008080; font-weight: bold;font-weight: normal;}.csharp .es_h {color: #008080; font-weight: bold;}.csharp .br0 {color: #008000;}.csharp .sy0 {color: #008000;}.csharp .st0 {color: #666666;}.csharp .st_h {color: #666666;}.csharp .nu0 {color: #FF0000;}.csharp .me1 {color: #0000FF;}.csharp .me2 {color: #0000FF;}.csharp .me {1}.csharp span.xtra { display:block; } &lt;/style&gt;&lt;br /&gt;In this article I am going to talk about unit testing for Windows Phone 7.&lt;br /&gt;First, there is no option for a windows phone test project within the IDE.&lt;br /&gt;&lt;br /&gt;In our XING-App we use &lt;a href="http://www.jeff.wilcox.name/2010/05/sl3-utf-bits/"&gt;Silverlight Unit Test Framework&lt;/a&gt; and NUnit as the provider for test metadata.&lt;br /&gt;We have an additional test project to run unit tests called &lt;b&gt;TestRunner&lt;/b&gt;.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Reference these&lt;b&gt; &lt;/b&gt;&lt;i&gt;Microsoft.Silverlight.Testing.dll&amp;nbsp;&lt;/i&gt;and&lt;i&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;i&gt;Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll &lt;/i&gt;assemblies from the Silverlight Unit Test Framework to these project. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; You will get a warning about adding silverlight 3 assembly, it is fine and you can click &lt;b&gt;yes &lt;/b&gt;to continue. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Set up the testpage&lt;/span&gt;&lt;br /&gt;Hide the system tray to have more space if you like.&lt;br /&gt;&lt;br /&gt;Register NUnit as the provider for test metadata (attributes etc).&amp;nbsp; That tells the silverlight testing framework to use the NUnit test attributes instead of the default MSTest attributes.&lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;tell the silverlight testing framework to use the NUnit test attributes&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UnitTestSystem&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;RegisterUnitTestProvider&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; NUnitProvider&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;We use an additional project for the unit tests.&amp;nbsp; &lt;br /&gt;So we need to add assemblies, that contains the tests.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;Add unit tests&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;settings&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;TestAssemblies&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Add&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;a href="http://www.google.com/search?q=typeof+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;typeof&lt;/span&gt;&lt;/a&gt;&lt;span class="br0"&gt;(&lt;/span&gt;Hook&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Assembly&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;Now any NUnit test fixture you add to the project should work.&lt;br /&gt;Note that  you can only have NUnit tests or MSTest tests in a project, not a mixed  combination.&lt;br /&gt;&lt;br /&gt;Create the testpage and let the unit testing framework take over. &lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;Set the testpage&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp;var testPage &lt;span class="sy0"&gt;=&lt;/span&gt; UnitTestSystem&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;CreateTestPage&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;settings&lt;span class="br0"&gt;)&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span class="kw1"&gt;as&lt;/span&gt; MobileTestPage&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp;BackKeyPress &lt;span class="sy0"&gt;+=&lt;/span&gt; &lt;span class="br0"&gt;(&lt;/span&gt;x, xe&lt;span class="br0"&gt;)&lt;/span&gt; &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt; xe&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Cancel&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; testPage&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;NavigateBack&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp;&lt;span class="br0"&gt;(&lt;/span&gt;Application&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Current&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;RootVisual&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span class="kw1"&gt;as&lt;/span&gt; PhoneApplicationFrame&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Content&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; testPage&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Using NUnit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Download the binaries from the nunit-silverlight project and add &lt;/span&gt;&lt;/span&gt;&lt;i&gt;NUnit.Silverlight.Compatibility.dll&lt;/i&gt;&lt;b&gt; &lt;/b&gt;and&amp;nbsp; &lt;i&gt;NUnit.Silverlight.Metadata.dll &lt;/i&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;as reference to the test project.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Tag your unit tests to run specific subsets of tests. When you start your TestRunner-App you can choose to only run tests with a certain tag, a certain set of tags, or not run tests with specific tags&lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;Tagging a testmethod&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;[&lt;/span&gt;Test&lt;span class="br0"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;[&lt;/span&gt;Tag&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"UnitTestTag"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="kw1"&gt;public&lt;/span&gt; &lt;span class="kw4"&gt;void&lt;/span&gt; AlwaysPass&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; Assert&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;IsTrue&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="kw1"&gt;true&lt;/span&gt;, &lt;span class="st0"&gt;"method intended to always pass"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;span class="br0"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Integration Tests&lt;/span&gt;&lt;br /&gt;Now combine unit tests (modules) and test it!&lt;br /&gt;For the integration tests we follow our created test plan to chose aggregates.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:OfficeDocumentSettings&gt;   &lt;o:AllowPNG/&gt;  &lt;/o:OfficeDocumentSettings&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:HyphenationZone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;DE-CH&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:EnableOpenTypeKerning/&gt;    &lt;w:DontFlipMirrorIndents/&gt;    &lt;w:OverrideTableStyleHps/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"AA Zuehlke"; mso-ansi-language:DE-CH; mso-fareast-language:DE-CH;}table.MsoTableLightShading {mso-style-name:"Light Shading"; mso-tstyle-rowband-size:1; mso-tstyle-colband-size:1; mso-style-priority:60; mso-style-unhide:no; border-top:solid black 1.0pt; mso-border-top-themecolor:text1; border-left:none; border-bottom:solid black 1.0pt; mso-border-bottom-themecolor:text1; border-right:none; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"AA Zuehlke"; color:black; mso-themecolor:text1; mso-themeshade:191; mso-ansi-language:DE-CH; mso-fareast-language:DE-CH;}table.MsoTableLightShadingFirstRow {mso-style-name:"Light Shading"; mso-table-condition:first-row; mso-style-priority:60; mso-style-unhide:no; mso-tstyle-border-top:1.0pt solid black; mso-tstyle-border-top-themecolor:text1; mso-tstyle-border-left:cell-none; mso-tstyle-border-bottom:1.0pt solid black; mso-tstyle-border-bottom-themecolor:text1; mso-tstyle-border-right:cell-none; mso-tstyle-border-insideh:cell-none; mso-tstyle-border-insidev:cell-none; mso-para-margin-top:0cm; mso-para-margin-bottom:0cm; mso-para-margin-bottom:.0001pt; line-height:normal; mso-ansi-font-weight:bold; mso-bidi-font-weight:bold;}table.MsoTableLightShadingLastRow {mso-style-name:"Light Shading"; mso-table-condition:last-row; mso-style-priority:60; mso-style-unhide:no; mso-tstyle-border-top:1.0pt solid black; mso-tstyle-border-top-themecolor:text1; mso-tstyle-border-left:cell-none; mso-tstyle-border-bottom:1.0pt solid black; mso-tstyle-border-bottom-themecolor:text1; mso-tstyle-border-right:cell-none; mso-tstyle-border-insideh:cell-none; mso-tstyle-border-insidev:cell-none; mso-para-margin-top:0cm; mso-para-margin-bottom:0cm; mso-para-margin-bottom:.0001pt; line-height:normal; mso-ansi-font-weight:bold; mso-bidi-font-weight:bold;}table.MsoTableLightShadingFirstCol {mso-style-name:"Light Shading"; mso-table-condition:first-column; mso-style-priority:60; mso-style-unhide:no; mso-ansi-font-weight:bold; mso-bidi-font-weight:bold;}table.MsoTableLightShadingLastCol {mso-style-name:"Light Shading"; mso-table-condition:last-column; mso-style-priority:60; mso-style-unhide:no; mso-ansi-font-weight:bold; mso-bidi-font-weight:bold;}table.MsoTableLightShadingOddColumn {mso-style-name:"Light Shading"; mso-table-condition:odd-column; mso-style-priority:60; mso-style-unhide:no; mso-tstyle-shading:silver; mso-tstyle-shading-themecolor:text1; mso-tstyle-shading-themetint:63; mso-tstyle-border-left:cell-none; mso-tstyle-border-right:cell-none; mso-tstyle-border-insideh:cell-none; mso-tstyle-border-insidev:cell-none;}table.MsoTableLightShadingOddRow {mso-style-name:"Light Shading"; mso-table-condition:odd-row; mso-style-priority:60; mso-style-unhide:no; mso-tstyle-shading:silver; mso-tstyle-shading-themecolor:text1; mso-tstyle-shading-themetint:63; mso-tstyle-border-left:cell-none; mso-tstyle-border-right:cell-none; mso-tstyle-border-insideh:cell-none; mso-tstyle-border-insidev:cell-none;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableLightShading" style="border-collapse: collapse; border: none; mso-border-bottom-alt: solid black 1.0pt; mso-border-bottom-themecolor: text1; mso-border-top-alt: solid black 1.0pt; mso-border-top-themecolor: text1; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: -1;"&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: none; border-top: solid black 1.0pt; mso-border-bottom-themecolor: text1; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 5;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Id&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: none; border-top: solid black 1.0pt; mso-border-bottom-themecolor: text1; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 202.1pt;" valign="top" width="269"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 1;"&gt;&lt;span lang="EN-US" style="color: black; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;XXXX&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: none; border-top: solid black 1.0pt; mso-border-bottom-themecolor: text1; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 78.0pt;" valign="top" width="104"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 1;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="border-bottom: solid black 1.0pt; border-left: none; border-right: none; border-top: solid black 1.0pt; mso-border-bottom-themecolor: text1; mso-border-top-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 65.35pt;" valign="top" width="87"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 1;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0;"&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 68;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Test Type&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 202.1pt;" valign="top" width="269"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;Explorative / Serversimulation&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 78.0pt;" valign="top" width="104"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-themecolor: text1; mso-themeshade: 191;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 65.35pt;" valign="top" width="87"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 4;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Title&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;Logon is necessary after logout.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 68;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Test Goal&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;Ensure that the   user has to log on again after he performs a log off.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 4;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Precondition&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;Same as XXXX&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 68;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Steps&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="background: silver; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;Automated Test:   IntegrationTests.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 4;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Expected Result&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="border: none; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal"&gt;&lt;span lang="EN-US" style="color: black; mso-themecolor: text1; mso-themeshade: 191;"&gt;The network news page is shown.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: silver; border-bottom: solid black 1.0pt; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; mso-border-bottom-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 115.15pt;" valign="top" width="154"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 68;"&gt;&lt;span lang="EN-US" style="color: black; font-family: &amp;quot;AA Zuehlke Medium&amp;quot;; mso-bidi-font-weight: bold; mso-themecolor: text1; mso-themeshade: 191;"&gt;Note&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td colspan="3" style="background: silver; border-bottom: solid black 1.0pt; border: none; mso-background-themecolor: text1; mso-background-themetint: 63; mso-border-bottom-themecolor: text1; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.45pt;" valign="top" width="461"&gt;   &lt;div class="MsoNormal" style="mso-yfti-cnfc: 64;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Our WP7-App has a lot of asynchronous method calls like web service calls.&lt;br /&gt;To test asynchronous methods you will first have to make sure your &lt;i&gt;TestClass &lt;/i&gt;inherits from &lt;i&gt;SilverlightTest&lt;/i&gt;. &lt;br /&gt;Next, you will need to mark the test method as asynchronous. Finally, you will have to call &lt;i&gt;EnqueueTestCompleted()&lt;/i&gt; to tell the test when it has completed.&lt;br /&gt;If you do not call this then the test will never complete.&lt;br /&gt;&lt;br /&gt;The XING-App make use of a &lt;i&gt;TestBase&lt;/i&gt; class. This class inherits from &lt;i&gt;SilverlightTest &lt;/i&gt;and overrides &lt;i&gt;EnqueueConditional&lt;/i&gt;.&lt;br /&gt;To make sure all tests end, &lt;i&gt;EnqueueConditional &lt;/i&gt;becomes a timeout mechanism. The test will fails and EnqueueTestCompleted is called and the test is really completed.&lt;i&gt;&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;Asynchronous testmethod timeout&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var timer &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; DispatcherTimer&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timer&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Interval&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; TimeSpan&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;span class="nu0"&gt;0&lt;/span&gt;, &lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ConditionalTimeout&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timer&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Tick&lt;/span&gt; &lt;span class="sy0"&gt;+=&lt;/span&gt; &lt;span class="kw4"&gt;delegate&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// remember &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="co1"&gt;// to stop timer or it'll tick again&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; timer&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Stop&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;throw&lt;/span&gt; &lt;a href="http://www.google.com/search?q=new+msdn.microsoft.com"&gt;&lt;span class="kw3"&gt;new&lt;/span&gt;&lt;/a&gt; TimeoutException&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EnqueueCallback&lt;span class="br0"&gt;(&lt;/span&gt;timer&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Start&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;base&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;EnqueueConditional&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;conditionalDelegate&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; EnqueueCallback&lt;span class="br0"&gt;(&lt;/span&gt;timer&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Stop&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Fake test server &lt;/span&gt;&lt;br /&gt;We are in the test process and we do not want to run the tests against the live XING-Server, so we need such as a fake XING server. This fake server also helped us in the development process.&lt;br /&gt;During the development we got no test XING-Accounts. The only way to test was with our live accounts.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Our fake server is a normal web service and is similar to the XING API. We also have functions like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; make many users&lt;/li&gt;&lt;li&gt;make visit&lt;/li&gt;&lt;li&gt;make many messages&lt;/li&gt;&lt;li&gt;make number of contacts&lt;/li&gt;&lt;/ul&gt;These helper functions are very useful to use this test server and to write easily these integration tests.&lt;br /&gt;It was also very useful to test functionality against this test server. For example, if you need some contact requests.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WvV-VFfOgc4/TjkQZd3inJI/AAAAAAAAAC8/hD7CtWVJOOk/s1600/unit-test.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tlyMKf5kLXE/TjkP40H1KvI/AAAAAAAAAC4/JzPABzvPIdE/s1600/unit-test.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tlyMKf5kLXE/TjkP40H1KvI/AAAAAAAAAC4/JzPABzvPIdE/s1600/unit-test.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-tlyMKf5kLXE/TjkP40H1KvI/AAAAAAAAAC4/JzPABzvPIdE/s400/unit-test.PNG" width="217" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-8483883157898451701?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/8483883157898451701/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/08/unit-testing-for-windows-phone.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8483883157898451701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8483883157898451701'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/08/unit-testing-for-windows-phone.html' title='Unit Testing for Windows Phone'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-tlyMKf5kLXE/TjkP40H1KvI/AAAAAAAAAC4/JzPABzvPIdE/s72-c/unit-test.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-6763094769602172539</id><published>2011-07-14T01:06:00.000-07:00</published><updated>2011-07-21T04:24:08.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='emulator'/><title type='text'>wp7 emulator tip of the day: Adding an E-Mail account</title><content type='html'>&lt;a href="http://www.j2i.net/blogEngine/post/2011/06/22/Adding-an-E-Mail-Account-to-the-WP-Emulator.aspx"&gt;Here&lt;/a&gt; you can find a useful hack to add an E-Mail account to your Windows Phone emulator.&lt;br /&gt;These steps only works with the new Windows Phone SDK 7.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-6763094769602172539?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/6763094769602172539/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/wp7-emulator-tip-of-day-adding-e-mail.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/6763094769602172539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/6763094769602172539'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/wp7-emulator-tip-of-day-adding-e-mail.html' title='wp7 emulator tip of the day: Adding an E-Mail account'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-2764563297395918579</id><published>2011-07-13T07:47:00.000-07:00</published><updated>2011-07-21T04:26:41.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='emulator'/><category scheme='http://www.blogger.com/atom/ns#' term='keybord'/><title type='text'>wp7 emulator tip of the day: Use your keyboard</title><content type='html'>I am frustrated not be able to use my keyboard to input text in the windows phone emulator.&lt;br /&gt;So login into our XING-App was a funny task every day.&lt;br /&gt;&lt;br /&gt;But there is a shortcut to activate the hardware keyboard in the emulator.&lt;br /&gt;You can use &lt;b&gt;Page-Up&lt;/b&gt; to activate the hardware keyboard and &lt;b&gt;Page-Down&lt;/b&gt; activates the normal software keyboard. You are now able to use your keyboard on your development machine by&amp;nbsp; pressing Page-Up.&amp;nbsp; You also can tab between fields. &lt;br /&gt;&lt;br /&gt;More shortcuts are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;F1 - hardware back button&lt;/li&gt;&lt;li&gt;F2 - Hardware home button&lt;/li&gt;&lt;li&gt;F3 - Hardware search button&lt;/li&gt;&lt;/ul&gt;Hope this tip will help you as much as it helps me. No more frustration!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-2764563297395918579?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/2764563297395918579/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/wp7-emulator-tip-of-day-use-your.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/2764563297395918579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/2764563297395918579'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/wp7-emulator-tip-of-day-use-your.html' title='wp7 emulator tip of the day: Use your keyboard'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-7360229898706199858</id><published>2011-07-05T14:01:00.000-07:00</published><updated>2012-01-11T00:01:55.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mvvm'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='xing'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>XING-App for Windows Phone 7 Architecture</title><content type='html'>&lt;style type="text/css"&gt;/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */.csharp .de1, .csharp .de2 {color: #000060; font-weight: normal;}.csharp  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #0000bb;}.csharp a:link {color: #006;}.csharp a:hover {background-color: #d6d6e6;}.csharp .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}.csharp .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}.csharp .imp {font-weight: bold; color: red;}.csharp li, .csharp .li1 {font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #e0e0e0; padding-bottom: 2px;}.csharp .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}.csharp .li2 {font-weight: bold; color: #000090; line-height: 90%}.csharp .kw1 {color: #0600FF; font-weight: bold;}.csharp .kw2 {color: #FF8000; font-weight: bold;}.csharp .kw3 {color: #008000;}.csharp .kw4 {color: #6666cc; font-weight: bold;}.csharp .kw5 {color: #000000;}.csharp .co1 {color: #008080; font-style: italic;font-style: normal;}.csharp .co2 {color: #008080;}.csharp .co3 {color: #008080;}.csharp .coMULTI {color: #008080; font-style: italic;font-style: normal;}.csharp .es0 {color: #008080; font-weight: bold;font-weight: normal;}.csharp .es_h {color: #008080; font-weight: bold;}.csharp .br0 {color: #008000;}.csharp .sy0 {color: #008000;}.csharp .st0 {color: #666666;}.csharp .st_h {color: #666666;}.csharp .nu0 {color: #FF0000;}.csharp .me1 {color: #0000FF;}.csharp .me2 {color: #0000FF;}.csharp .me {1}.csharp span.xtra { display:block; } &lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;In this article I will write about our architecture for the XING-App for WP7 developed by Zühlke. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Most existing apps need connectivity to run properly. You start your app and the first you see is a "loading"-icon and in many cases working without any connection is impossible. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The default state of the XING-App is offline. First we load the local cache and display the content. The user decides when to synchronize with the server. Especially for XING it is quite useful to be able to have a quick look in your XING-Network at all times, even if you're offline. &lt;/span&gt;&lt;span lang="EN-US"&gt;Also you will have no roaming problems. When you run the app for the first time or have no data locally cached then the app initially synchronizes with the server and saves the data in the local cache.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The application is developed using the MVVM-Pattern shown in the picture below.&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-if4-ngkge4Q/TgxeWMlYzOI/AAAAAAAAACw/WLopUzPOhgU/s1600/Architecture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://3.bp.blogspot.com/-if4-ngkge4Q/TgxeWMlYzOI/AAAAAAAAACw/WLopUzPOhgU/s320/Architecture.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-if4-ngkge4Q/TgxeWMlYzOI/AAAAAAAAACw/WLopUzPOhgU/s1600/Architecture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Services contain web service calls. All method calls contain a success callback and an error callback. Service methods are only called from background threads. The web service responses are parsed and translated into objects.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;sample service call&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; IsSyncing &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; contactService&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;GetContacts&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userScope&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;UserId&lt;/span&gt;, updatedContacts &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="kw1"&gt;this&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;userScope&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Contacts&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Data&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; updatedContacts&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; userScope&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Contacts&lt;/span&gt;&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;LastUpdated&lt;/span&gt; &lt;span class="sy0"&gt;=&lt;/span&gt; DateTime&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;UtcNow&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsSyncing &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;false&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HandleSuccessHandlers&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Status &lt;span class="sy0"&gt;=&lt;/span&gt; StoreStatus&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Online&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;,&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dispatch&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;Action&lt;/span&gt;&lt;span class="sy0"&gt;&amp;lt;&lt;/span&gt;Exception&lt;span class="sy0"&gt;&amp;gt;&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;ex &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RemoveSuccessHandle&lt;span class="br0"&gt;(&lt;/span&gt;callback&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsSyncing &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;false&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HandleError&lt;span class="br0"&gt;(&lt;/span&gt;ex&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;span lang="EN-US"&gt;Stores observe the access to a web service and manage the cache. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The store decides if the data will come from the cache or from the web service. After the application starts the data is loaded from isolated storage. When the application is shut down,&amp;nbsp; data is saved into isolated storage. Each store has a LocalStorage class for loading and saving. These classes load the content from their own file and save the data using a BinarySerializer. The store contains the information when the data was last synchronized. And each store has its own validation time for the cache.&lt;/span&gt;&lt;/div&gt;&lt;span lang="EN-US" style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;A store has an Offline-, Online or Broken-State. &lt;/span&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SXV42NsggMg/Tgxejm6WgXI/AAAAAAAAAC0/_ftXSmS_LXA/s1600/StoreStates.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/-SXV42NsggMg/Tgxejm6WgXI/AAAAAAAAAC0/_ftXSmS_LXA/s320/StoreStates.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;  &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The store has no UI code like INotifyPropertyChanged or ICollectionChanged. Views receive the requested data from the success callback. Each store method is called with a success callback, most likely from the ViewModel, PropertyChanged event is called to inform the UI. If an error occurs the StatusChanged event from the Store is called. In our XING-App each ViewModel implements the StatusProvider interface to handle the status changed in the UI. Therefore each page has a statusbar to display the current status. For example if there is currently no connectivity the offline status is displayed along with the time when the data was last synchronized. The color of the status depends on its state. &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="csharp"&gt;&lt;div class="head"&gt;sample store call&lt;/div&gt;&lt;ol&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; IsSyncing &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;true&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; visitStore&lt;span class="sy0"&gt;.&lt;/span&gt;&lt;span class="me1"&gt;GetMoreVisits&lt;/span&gt;&lt;span class="br0"&gt;(&lt;/span&gt;loadedVisits &lt;span class="sy0"&gt;=&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AppendVisits&lt;span class="br0"&gt;(&lt;/span&gt;loadedVisits&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li2"&gt;&lt;div class="de2"&gt;&lt;div class="de1"&gt;&lt;div class="de2"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RaisePropertyChanged&lt;span class="br0"&gt;(&lt;/span&gt;&lt;span class="st0"&gt;"HasMoreData"&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IsSyncing &lt;span class="sy0"&gt;=&lt;/span&gt; &lt;span class="kw1"&gt;false&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="li1"&gt;&lt;div class="de1"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="br0"&gt;}&lt;/span&gt;&lt;span class="br0"&gt;)&lt;/span&gt;&lt;span class="sy0"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Store methods and events are only called from the UI-Thread. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The stores do not know one another. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;If several methods are called in a row then the success callbacks are queued. The first web request is called and no further success callback are called during the synchronization. After the web response the upcoming success callbacks are called. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;In order to ensure a better response and a better feedback of our data for the UI, the success callback is first called with the data from the local cache. The success callback is called again after the web request has sent its response. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;The ViewModel prepares the data for the UI. If a store method is called to receive data, we will actually send a web request. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;All methods in the ViewModel are called from the UI-Thread. ViewModels do not know one another. You can use a message infrastructure to inform other ViewModels and your business logic is done. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-7360229898706199858?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/7360229898706199858/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/xing-app-for-windows-phone-7.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/7360229898706199858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/7360229898706199858'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/xing-app-for-windows-phone-7.html' title='XING-App for Windows Phone 7 Architecture'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-if4-ngkge4Q/TgxeWMlYzOI/AAAAAAAAACw/WLopUzPOhgU/s72-c/Architecture.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-2198872163065337645</id><published>2011-07-05T12:06:00.000-07:00</published><updated>2011-09-30T04:41:26.510-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='xing app'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='zühlke'/><category scheme='http://www.blogger.com/atom/ns#' term='xing for windows phone'/><title type='text'>XING-App for Windows Phone 7 - developed by Zühlke</title><content type='html'>Our "baby" say hello world.&lt;br /&gt;It is done, our first Windows Phone 7 app is released!&lt;br /&gt;&lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=47d0b293-e59c-e011-986b-78e7d1fa76f8"&gt;Download&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.zuehlke.com/uploads/pics/xing-app-printscreen.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.zuehlke.com/uploads/pics/xing-app-printscreen.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://blog.xing.com/wp-content/uploads/2011/06/WP7_contacts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Follow the next articles to find out more about the XING App development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-2198872163065337645?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/2198872163065337645/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/xing-app-for-windows-phone-7-developed.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/2198872163065337645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/2198872163065337645'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/07/xing-app-for-windows-phone-7-developed.html' title='XING-App for Windows Phone 7 - developed by Zühlke'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-8202561666048524133</id><published>2011-06-09T07:38:00.000-07:00</published><updated>2011-07-21T04:54:18.759-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='Memory Leak'/><category scheme='http://www.blogger.com/atom/ns#' term='EventToCommand'/><category scheme='http://www.blogger.com/atom/ns#' term='MVVM Light Toolkit'/><title type='text'>MVVM Light for Windows Phone EventToCommand Memory Leak</title><content type='html'>When you use EventToCommand like this, be careful! &lt;br /&gt;&lt;br /&gt;&amp;lt;Button&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;i:EventTrigger  EventName="Click"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mvvmLight:EventToCommand Command="{Binding MyCommand "/&amp;gt;&lt;br /&gt;&lt;div class="Description" id="DescriptionPanel"&gt;&amp;nbsp; &amp;lt;/i:EventTrigger&amp;gt;&lt;/div&gt;&lt;div class="Description" id="DescriptionPanel"&gt;&amp;lt;/Button&amp;gt;&lt;/div&gt;&lt;div class="Description" id="DescriptionPanel"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="Description" id="DescriptionPanel"&gt;The memory usage will be growing up.&lt;/div&gt;&lt;div class="Description" id="DescriptionPanel"&gt;The Attach of the DependencyObject is working fine, but the detach will never called. That causes severe memory issues. &lt;/div&gt;&lt;div class="Description" id="DescriptionPanel"&gt;It's a known issue on codeplex:&lt;/div&gt;&lt;a href="http://mvvmlight.codeplex.com/workitem/7293"&gt;http://mvvmlight.codeplex.com/workitem/7293&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mvvmlight.codeplex.com/workitem/7512"&gt;http://mvvmlight.codeplex.com/workitem/7512&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We tried to find good ways to detach our event handler. But to remove the EventToCommand stuff was much easier than any workaround we found.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-8202561666048524133?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/8202561666048524133/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/06/mvvm-light-for-windows-phone.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8202561666048524133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/8202561666048524133'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/06/mvvm-light-for-windows-phone.html' title='MVVM Light for Windows Phone EventToCommand Memory Leak'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9093594807108890290.post-1808333572596919323</id><published>2011-06-09T07:16:00.000-07:00</published><updated>2011-07-21T04:56:57.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='argumentnullexception'/><category scheme='http://www.blogger.com/atom/ns#' term='wp7'/><category scheme='http://www.blogger.com/atom/ns#' term='mango'/><category scheme='http://www.blogger.com/atom/ns#' term='profiler'/><title type='text'>Windows Phone 7.1 "Mango" new application profiler beta 1 throws ArgumentNullException parameter s:</title><content type='html'>&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td height="0" width="0"&gt;&lt;form action="ssrv.cgi" lang="en_US" method="post"&gt;&lt;/form&gt;&lt;/td&gt;&lt;td height="0" width="0"&gt;&lt;table border="0" cellpadding="5" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;   &lt;td class="midtext"&gt;The cool new Windows Phone 7.1 update called "Mango" is released and I wanted to try the new cool profiler for my  current App. &lt;br /&gt;The first big thing was to get it running for the new release. &lt;br /&gt;You have to update all your used libraries to the new 7.1 version.&lt;br /&gt;&lt;br /&gt;I started to profil my app wich caused a crash.&lt;br /&gt;It took me several hours to figure out the problem.&lt;br /&gt;&lt;br /&gt;The issue is that the PropertyChanged event throws a ArgumentNullException with parameter s:&lt;br /&gt;I have still no solution for it and I am just waiting at Microsoft to get a hotfix for it.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;form action="ssrv.cgi" lang="en_US" method="post" target="bot"&gt;&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9093594807108890290-1808333572596919323?l=stephangerbling.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stephangerbling.blogspot.com/feeds/1808333572596919323/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://stephangerbling.blogspot.com/2011/06/windows-phone-71-mango-new-application.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/1808333572596919323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9093594807108890290/posts/default/1808333572596919323'/><link rel='alternate' type='text/html' href='http://stephangerbling.blogspot.com/2011/06/windows-phone-71-mango-new-application.html' title='Windows Phone 7.1 &quot;Mango&quot; new application profiler beta 1 throws ArgumentNullException parameter s:'/><author><name>Stephan Gerbling</name><uri>http://www.blogger.com/profile/14150143772798436260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/-DQeoLq-xqUE/TnIlnO-v8yI/AAAAAAAAADk/wW-QQDt_Uw8/s220/20542_106844555993648_100000043114211_182321_2863923_n.jpg'/></author><thr:total>1</thr:total></entry></feed>
