Windows Phone 7Jonas FollesøBEKK Avdelingsmøte 02. Desember 2010
ABOUT MEJONAS FOLLESØjonas@follesoe.nohttp://jonas.follesoe.no@follesoe
AGENDA:- WP7 PLATFORM- PHONE APIs- BLEND 4- MARKET PLACE- TDD- RUBY- DEMOS!http://www.flickr.com/photos/20792787@N00/2248623391/
WINDOWS PHONE 7A FRESH START!
XNA FOR GAMESSILVERLIGHT FOR APPS
KNOW SILVERLIGHT?THEN YOU KNOW WP7!
HELLO WORLDDEMO
METRO DESIGN LANGUAGE
PIVOT CONTROL
HUB CONTROL
BLEND 4DEMO
METRO RESOURCESWindows Phone 7 Metro Design UI Book PDF - http://bit.ly/fFPDzw
UI Design and Interaction Guide for Windows Phone 7 v2.0 - http://bit.ly/b2SUlh
Design Templates for Windows Phone 7 - http://bit.ly/cNQO8jLAUNCHERS & CHOOSERSCameraCaptureTask
EmailAddressChooserTask
EmailComposeTask
MarketplaceDetailTask
MarketplaceHunTask
MarketplaceReviewTask
MarketplaceSearchTask
MediaPlayerLauncher
PhoneCallTask
PhoneNumberChooserTask
PhotoChooserTask
SaveEmailAddressTask
SavePhoneNumberTask
SearchTask
SmsComposeTask
WebBrowserTaskhttp://www.flickr.com/photos/mad_house_photography/4440871380/
LAUNCH BUILT IN APP WITH SOME DATAhttp://www.flickr.com/photos/28634332@N05/4054766770/
privatevoidsmsCompose_Click(objectsender, RoutedEventArgse){varsmsCompose=newSmsComposeTask();smsCompose.To="97706660";smsCompose.Body="Hello NNUG!";smsCompose.Show();}
LAUNCH BUILT IN APP TO CHOOSE SOME DATA
privatevoidchoose_Click(objectsender, RoutedEventArgse){varemailChooser=newEmailAddressChooserTask();emailChooser.Completed+=emailChooser_Completed;emailChooser.Show();}privatevoidemailChooser_Completed(objectsender, EmailResulte){if(e.TaskResult==TaskResult.OK)email.Text=e.Email;}
CHOSER & LAUCHER DEMO
EXECUTION MODEL & TOMBSTONINGhttp://www.flickr.com/photos/9810948@N05/1583506787/
NO MULTI TASKINGBUT...http://www.flickr.com/photos/n3ptun3r/3376697490/
FAST ACTIVATION & DEACTIVATION GIVES IMPRESSION OF APP RUNNING IN BACKGROUNDhttp://www.flickr.com/photos/cirox/363284194/
THE 4 EVENTS OF THE APP LIFE CYCLEApplication_LaunchingApplication_DeactivatedApplication_ActivatedApplication_Closing
LaunchingRunningDeactivatingActivatingClosingChooser/Task/Other
PERSISTENT DATAData shared by all instances of app
Save and loaded from Isolated Storage
Load on start-up, save on user action or when closingTRANSIENT STATEData for instance of application
Stored in State Dictionary
App or Page level statePAGE STATEPoisition of ScollViewer
Content of TextBox
State of other UI elements
Managed by State property on Page object
OnNavigatedTo & OnNavigatedFromprotectedoverridevoidOnNavigatedFrom(NavigationEventArgse){State.Add("VerticalOffset", scrollView.VerticalOffset);State.Add("HorizontalOffset", scrollView.HorizontalOffset);}
protectedoverridevoidOnNavigatedTo(NavigationEventArgse){if(State.ContainsKey("VerticalOffset") &&State.ContainsKey("HorizontalOffset"))    {scrollView.ScrollToVerticalOffset(Convert.ToDouble(State["VerticalOffset"]));scrollView.ScrollToHorizontalOffset(Convert.ToDouble(State["HorizontalOffset"]));    }}
APP STATEState not associated with spesific page
Managed by State property on PhoneApplicationServiceprivatevoidApplication_Deactivated(objectsender, DeactivatedEventArgse){varviewModel= (ViewModel)RootFrame.DataContext;           PhoneApplicationService.Current.State                    .Add("ExpenceReport", viewModel);}
privatevoidApplication_Launching(objectsender, LaunchingEventArgse){                            if(StorageHelper.FileExists("ExpenceReport.xml"))    {varviewModel=StorageHelper.Load<ViewModel>("ExpenceReport.xml");viewModel.IsDirty=false;RootFrame.DataContext=viewModel;    }else    {RootFrame.DataContext=newViewModel();                    }}
APP MODEL DEMOhttp://www.flickr.com/photos/n3ptun3r/3376697490/
LaunchingRunningDeactivatingActivatingClosingChooser/Task/Other
PUSH NOTIFICATIONS WHEN APP IS NOT RUNNING
TWO TYPES OF NOTIFICATIONS
WP7 PUSH NOTIFICATIONSYour WP ApplicationHand off channel URL2Your Web ApplicationPUSH CLIENTNotification NamespacesPush Library4Pushmessage3Push message1Open ChannelMicrosoft Push Notification Services
privatevoidopen_Click(objectsender, RoutedEventArgse){varchannel=HttpNotificationChannel.Find("NNUG");if (channel==null)    {channel=newHttpNotificationChannel("NNUG");                  }channel.ChannelUriUpdated+=channel_ChannelUriUpdated;channel.ShellToastNotificationReceived+=channel_ShellToastNotificationReceived;channel.Open();}
privatevoidchannel_ShellToastNotificationReceived(objectsender, NotificationEventArgse){foreach (vartextine.Collection)output.Text+=text+"\r\n";}
PUSH NOTIFICATIONS FOR TILES
PUSH NOTIFICATIONS DEMOhttp://www.flickr.com/photos/kozloski/2306510520/

An overview of the Windows Phone 7 platform

Editor's Notes

  • #22 http://gregdoesit.com/2010/09/wp7-cocktail-application-sneak-preview-cocktail-flow/
  • #23 http://gregdoesit.com/2010/09/wp7-cocktail-application-sneak-preview-cocktail-flow/
  • #24 http://gregdoesit.com/2010/09/wp7-cocktail-application-sneak-preview-cocktail-flow/