SlideShare ist ein Scribd-Unternehmen logo
1 von 73
blending delicious user experiences for windows phone 7
the verysoftware team
menu entrée designing for windows phone 7: our experience main apptracker:the ultimate app for developers  dessert building tech.days app: tips & tricks
designing for windows phone 7: our experience our experience
10ios apps  on the app store
from iphone to windows phone 7
will it blend? :-) source: willitblend.com
oh yes!
your personal translator free trial http://bit.ly/dJYItw
developed in  10hours
polyglot 30+ languages pronunciation history of translations great user experience share by email & sms
gifts  organiser free version http://bit.ly/i2cHRH
gifts organise gifts list check prices track budget sort by recipient share by email & sms
apptracker:  the ultimate app for developers  apptracker
the ultimate tool to keep track of your windows phone 7 appson the marketplace free for a limited time http://bit.ly/hRlfik
apptracker ,[object Object]
follow your favourite
worldwide overview of reviews
detailed review list by region
translate reviews into 30+ languages
share reviews by email or sms
see the rating distributionby region or worldwide
see when new reviews are available,[object Object]
apptracker: 300+ reviews thank you  for your support! “ “ “ “ “ “ “ “ “ truly brilliant app coolest app for developers! perfect for developers! an essential app! simply awesome extremely useful  app for developers excellent design a must have for every WP7 developer ” love it! ” ” ” ” ” ” ” ”
apptracker: our favourite comment “ superb app. why only four stars? because it should be $5. you're letting the rest of us devs down by giving away such great free stuff! ”
apptracker: wp7comp award
building tech.days app: tips & tricks tips & tricks
tips & tricks: tech.days app design
tips & tricks:  tech.days app demo
tips & tricks:  make it blend
tips & tricks:  make it blend gotchas ,[object Object]
exceptions in constructors
database queriesguidelines for creating designer friendly views, msdn http://bit.ly/lRU00l
tips & tricks:  make it blend blend design-time data + dummy data in code
tips & tricks:  make it blend design-time data
tips & tricks:  make it blend dummy data in code
tips & tricks:  make it blend isindesigntool
tips & tricks:  make it blend isindesigntool
tips & tricks:  context menu using  mvvm
tips & tricks:  context menu using mvvm demo
tips & tricks:  context menu using mvvm listbox
tips & tricks:  context menu using mvvm datatemplate
tips & tricks:  context menu using mvvm datatemplate =usercontrol
tips & tricks:  context menu using mvvm usercontrol = view
tips & tricks:  context menu the problem
tips & tricks:  context menu using mvvm parent viewmodel child viewmodel child viewmodel child viewmodel notify selected child
tips & tricks:  context menu using mvvm parent parent viewmodel child viewmodel child viewmodel child viewmodel child
tips & tricks:  context menu using mvvm parent viewmodel child viewmodel child viewmodel child viewmodel proxy service calls children view state
tips & tricks: graphics, try xara designer
tips & tricks: graphics, avoid clip art a la ’97
tips & tricks:  different levels  of details optimise for mobile
tips & tricks:  different levels  of details optimise for mobile
tips & tricks: transitions “ the experience is in the transition between states, not the states themselves. bill buxton, principal researcher microsoft research, mix’09 video ”
tips & tricks: transitions, page navigation
tips & tricks: transitions, page navigation don’t forget to change the rootframe in app.xaml.cs:
tips & tricks: transitions, landscape orientation
tips & tricks:  transitions, animating screen rotation original code by michel salib http://bit.ly/bxQR5V
tips & tricks: transitions,  using fluid move behaviour
tips & tricks:  transitions tech.days app demo
tips & tricks: trial mode
tips & tricks: trial mode, helper code
tips & tricks: trial mode, using it
tips & tricks: getting ratings
tips & tricks: getting ratings, the code
tips & tricks: getting ratings, the dll notificationbox by tomer shamam http://bit.ly/d2IY61
tips & tricks: error reporting
tips & tricks: error reporting, what you get
tips & tricks: error reporting, the code
tips & tricks: user settings, the problem ,[object Object]
users lose and replace their phones
“occasionally” a bug requires an app to be uninstalled/reinstalled
users have to start using the app from scratch:all settings/data lost,[object Object]

Weitere ähnliche Inhalte

Ähnlich wie Blending Delicious User Experiences For Windows Phone 7 (by VerySoftware)

Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Comunidade NetPonto
 
The Future of Web Apps
The Future of Web AppsThe Future of Web Apps
The Future of Web AppsiCiDIGITAL
 
Achieving quality contraints
Achieving quality contraintsAchieving quality contraints
Achieving quality contraintsK Senthil Kumar
 
Snapchat - Google Docs.pdf
Snapchat - Google Docs.pdfSnapchat - Google Docs.pdf
Snapchat - Google Docs.pdfharikacheluru
 
Progressive Web Apps - Goto Chicago 2017
Progressive Web Apps - Goto Chicago 2017Progressive Web Apps - Goto Chicago 2017
Progressive Web Apps - Goto Chicago 2017Christian Heilmann
 
Dev windows phone_apps_getting_started_guide
Dev windows phone_apps_getting_started_guideDev windows phone_apps_getting_started_guide
Dev windows phone_apps_getting_started_guideTrioBlack Trioblack
 
Mobile App Basics for Beginners
Mobile App Basics for BeginnersMobile App Basics for Beginners
Mobile App Basics for BeginnersSignUp4
 
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...jcitnmkt
 
How We Make Apps And Services
How We Make Apps And ServicesHow We Make Apps And Services
How We Make Apps And Servicesculturengine
 
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.com
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.comPhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.com
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.comPhoenixGMN WebAndAppsDevelopment
 
CEE the Mobile Activation Platform
CEE the Mobile Activation PlatformCEE the Mobile Activation Platform
CEE the Mobile Activation Platform#EndeavourMedia
 
10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile AppsWhalla Labs
 
5 Easy Steps To Create An App for Your Business.pdf
5 Easy Steps To Create An App for Your Business.pdf5 Easy Steps To Create An App for Your Business.pdf
5 Easy Steps To Create An App for Your Business.pdfCloudester Software LLP
 
Marketing your app on a shoestring - tips on PR, marketing, ASO and self-pub...
Marketing your app on a shoestring  - tips on PR, marketing, ASO and self-pub...Marketing your app on a shoestring  - tips on PR, marketing, ASO and self-pub...
Marketing your app on a shoestring - tips on PR, marketing, ASO and self-pub...Big Ideas Machine
 
Mobile App Development V_S Software Development_ 7 Key Differences.pdf
Mobile App Development V_S Software Development_ 7 Key Differences.pdfMobile App Development V_S Software Development_ 7 Key Differences.pdf
Mobile App Development V_S Software Development_ 7 Key Differences.pdfPolyxer Systems
 

Ähnlich wie Blending Delicious User Experiences For Windows Phone 7 (by VerySoftware) (20)

Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7Construir Aplicações Silverlight para Windows Phone 7
Construir Aplicações Silverlight para Windows Phone 7
 
Mobile_Portfolio_new
Mobile_Portfolio_newMobile_Portfolio_new
Mobile_Portfolio_new
 
The Future of Web Apps
The Future of Web AppsThe Future of Web Apps
The Future of Web Apps
 
Achieving quality contraints
Achieving quality contraintsAchieving quality contraints
Achieving quality contraints
 
App Economy
App EconomyApp Economy
App Economy
 
Snapchat - Google Docs.pdf
Snapchat - Google Docs.pdfSnapchat - Google Docs.pdf
Snapchat - Google Docs.pdf
 
Progressive Web Apps - Goto Chicago 2017
Progressive Web Apps - Goto Chicago 2017Progressive Web Apps - Goto Chicago 2017
Progressive Web Apps - Goto Chicago 2017
 
Dev windows phone_apps_getting_started_guide
Dev windows phone_apps_getting_started_guideDev windows phone_apps_getting_started_guide
Dev windows phone_apps_getting_started_guide
 
Mobile App Basics for Beginners
Mobile App Basics for BeginnersMobile App Basics for Beginners
Mobile App Basics for Beginners
 
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
iPhone & iPad App Cash - The *COMPLETE GUIDE* to create iPhone app and how to...
 
How We Make Apps And Services
How We Make Apps And ServicesHow We Make Apps And Services
How We Make Apps And Services
 
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.com
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.comPhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.com
PhoenixGMN - How To Go About An App Idea - Guide by SuperHitApps.com
 
Android app development guide for freshers by ace web academy
Android app development guide for freshers  by ace web academyAndroid app development guide for freshers  by ace web academy
Android app development guide for freshers by ace web academy
 
Event App 101
Event App 101Event App 101
Event App 101
 
CEE the Mobile Activation Platform
CEE the Mobile Activation PlatformCEE the Mobile Activation Platform
CEE the Mobile Activation Platform
 
Google App Inventor
Google App InventorGoogle App Inventor
Google App Inventor
 
10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps10 Growth Hacks for Mobile Apps
10 Growth Hacks for Mobile Apps
 
5 Easy Steps To Create An App for Your Business.pdf
5 Easy Steps To Create An App for Your Business.pdf5 Easy Steps To Create An App for Your Business.pdf
5 Easy Steps To Create An App for Your Business.pdf
 
Marketing your app on a shoestring - tips on PR, marketing, ASO and self-pub...
Marketing your app on a shoestring  - tips on PR, marketing, ASO and self-pub...Marketing your app on a shoestring  - tips on PR, marketing, ASO and self-pub...
Marketing your app on a shoestring - tips on PR, marketing, ASO and self-pub...
 
Mobile App Development V_S Software Development_ 7 Key Differences.pdf
Mobile App Development V_S Software Development_ 7 Key Differences.pdfMobile App Development V_S Software Development_ 7 Key Differences.pdf
Mobile App Development V_S Software Development_ 7 Key Differences.pdf
 

Kürzlich hochgeladen

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

Blending Delicious User Experiences For Windows Phone 7 (by VerySoftware)

Hinweis der Redaktion

  1. Code:private static bool? cachedIsTrialMode = null;public static bool IsTrialMode(){ return IsTrialMode(false);} public static bool IsTrialMode(bool forceFromCache) { // If this code is being run buy VS/Blend design tool, we don't want to MessageBox if (DesignerProperties.IsInDesignTool) return false; if ((forceFromCache) || (cachedIsTrialMode == null)) {#if DEBUGMessageBoxResult result = MessageBox.Show("Click ok to simulate paid version", "Simulate paid version?", MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) {cachedIsTrialMode = false; } else {cachedIsTrialMode = true; }#elseLicenseInformationlicenseInfo = new LicenseInformation();cachedIsTrialMode = licenseInfo.IsTrial();#endif } return cachedIsTrialMode.Value; }
  2. Code:using Microsoft.Phone.Tasks;using Tomers.Phone.Controls;private static bool PerformedRatingPromptCheck = false;private void PhoneApplicationPage_Loaded(object sender, System.Windows.RoutedEventArgs e){ if (!PerformedRatingPromptCheck) {PerformedRatingPromptCheck = true;intnumAppLaunches = 0;IsolatedStorageSettings.ApplicationSettings.TryGetValue<int>("Rating_numAppLaunches", out numAppLaunches);intnumNextRatingPrompt = 0; if (!IsolatedStorageSettings.ApplicationSettings.TryGetValue<int>("Rating_numNextRatingPrompt", out numNextRatingPrompt)) {numNextRatingPrompt = 5; } if (numAppLaunches >= numNextRatingPrompt) {IsolatedStorageSettings.ApplicationSettings["Rating_numNextRatingPrompt"] = numNextRatingPrompt * 2;NotificationBox.ShowAgain("Enjoying the app?", "Would you like to rate this app now?", "Ask me later", false,Surpressed => { }, "Rating_MsgPrompt", new NotificationBoxCommand("Yes", () => { new MarketplaceReviewTask().Show(); }), new NotificationBoxCommand("No", () => { })); }IsolatedStorageSettings.ApplicationSettings["Rating_numAppLaunches"] = numAppLaunches + 1; }}
  3. Code:NotificationBox.ShowAgain("Enjoying the app?", "Would you like to rate this app now?", "Ask me later", false,Surpressed => { }, "Rating_MsgPrompt", new NotificationBoxCommand("Yes", () => { new MarketplaceReviewTask().Show(); }), new NotificationBoxCommand("No", () => { }));
  4. Code:// Code to execute on Unhandled Exceptionsprivate void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e){ if (System.Diagnostics.Debugger.IsAttached) { // An unhandled exception has occurred; break into the debuggerSystem.Diagnostics.Debugger.Break(); } else {var result = MessageBox.Show("Would you like to email the details of this error to the Developer?\\n\\n(No personal information, other than your email address, will be sent to the Developer)", "An error has occurred!",MessageBoxButton.OKCancel); if (result == MessageBoxResult.OK) {var task = new EmailComposeTask();task.To = "contact@DeveloperEmailAddress.com";task.Subject = "Error Report: TechDays 2011 App";task.Body = String.Format("An unhandled exception occurred in TechDays 2011 App:\\n\\n{0}", e.ExceptionObject.ToString());task.Show(); } }}
  5. Code:void BackgroundLoadFavouriteSessions(object sender, DoWorkEventArgs e){varfavIDs = LoadFavouriteSessionsFromFile(); if (favIDs == null) { // We failed when loading from file so check the cloud storeCloudUserDataServiceClient client = new CloudUserDataServiceClient();client.GetStoredTechDaysUserDataCompleted += client_GetStoredTechDaysUserDataCompleted;client.GetStoredTechDaysUserDataAsync(HelperFuncs.UserID); } else { // Loaded from file successfully so use this dataSetFavourites(GetSessionListFromIDs(favIDs)); }}void client_GetStoredTechDaysUserDataCompleted(object sender, GetStoredTechDaysUserDataCompletedEventArgs e){ if ((e.Error == null) && (e.Result != null) && (!String.IsNullOrEmpty(e.Result.FavouriteIDs))) { if (MessageBox.Show("Would you like to restore your settings for this app?", "No settings found", MessageBoxButton.OKCancel) == MessageBoxResult.OK) {varfavouriteSessionList = GetSessionListFromIDString(e.Result.FavouriteIDs);SetFavourites(favouriteSessionList); } }}
  6. Code:private static string cachedUserID = null;public static string UserID{ get { if (cachedUserID == null) { string anid = UserExtendedProperties.GetValue("ANID") as string; if (anid != null) {cachedUserID = anid.Substring(2, 32); } else {cachedUserID = "EMULATOR_USER"; } } return cachedUserID; }}private void SaveFavouritesToCloud(string favIDString){TechDaysUserDatasaveData = new TechDaysUserData() {UserID = HelperFuncs.UserID,FavouriteIDs = favIDString };CloudUserDataServiceClient client = new CloudUserDataServiceClient();client.StoreTechDaysUserDataAsync(saveData);}
  7. Code:public class TechDaysDataEntryContext : TableServiceContext{ public static string TableName = "TechDaysDataEntrys"; public TechDaysDataEntryContext(CloudStorageAccount account) : base(account.TableEndpoint.ToString(), account.Credentials) { } public IQueryable<TechDaysDataEntry> TechDaysDataEntrys { get { return this.CreateQuery<TechDaysDataEntry>(TableName); } } public void AddTechDaysDataEntry(TechDaysDataEntrynewEntry) {this.AddObject(TableName, newEntry);this.SaveChanges(); }}public class TechDaysDataEntry : TableServiceEntity{ public string UserID { get { return PartitionKey; } set { RowKey = value; PartitionKey = value; } } public string FavouriteIDs { get; set; } public TechDaysDataEntry() { } public TechDaysDataEntry(string UserID, string inFavouriteIDs) {PartitionKey = UserID;RowKey = UserID;FavouriteIDs = inFavouriteIDs; }}
  8. Code:public TechDaysUserDataGetStoredTechDaysUserData(string userID){varstorageAccount = GetStorageAccount();vartddeContext = new TechDaysDataEntryContext(storageAccount);tddeContext.IgnoreResourceNotFoundException = true;var result = (from entry in tddeContext.TechDaysDataEntrys where entry.PartitionKey == userID && entry.RowKey == userID select entry).ToList(); if (result.Count == 1) {var entry = result.First();varuserData = new TechDaysUserData() {UserID = entry.UserID,FavouriteIDs = entry.FavouriteIDs }; return userData; } return null;}public void StoreTechDaysUserData(TechDaysUserDatauserData){varstorageAccount = GetStorageAccount();vartddeContext = new TechDaysDataEntryContext(storageAccount);tddeContext.IgnoreResourceNotFoundException = true;var result = (from entry in tddeContext.TechDaysDataEntrys where entry.PartitionKey == userData.UserID && entry.RowKey == userData.UserID select entry).ToList(); if (result.Count == 0) {var entry = new TechDaysDataEntry(userData.UserID, userData.FavouriteIDs);tddeContext.AddTechDaysDataEntry(entry); } else {var entry = result.First();entry.FavouriteIDs = userData.FavouriteIDs;tddeContext.UpdateObject(entry);tddeContext.SaveChanges(); }}[DataContract]public class TechDaysUserData{ [DataMember] public string UserID{ get; set; } [DataMember] public string FavouriteIDs { get; set; }}