You are previewing Windows® Phone 8 Unleashed.
O'Reilly logo
Windows® Phone 8 Unleashed

Book Description

Windows® Phone 8 Unleashed is the definitive guide to Microsoft’s new Windows Phone 8 platform for intermediate to advanced developers. Written by Microsoft MVP and leading Windows Phone and WPF innovator Daniel Vaughan, this full-color guide covers everything developers need to rapidly build highly competitive Windows Phone 8 mobile apps.

Vaughan teaches through complete sample apps—leveraging the MVVM pattern—illuminating each key concept with fully explained code and real-world context. He presents best practices for building highly functional, maintainable, and attractive mobile interfaces; integrating touch, rich media, and data; testing; profiling; and more.

Expanded and updated, Vaughan shares expert insights available in no other book, drawing on his exceptional access to the Windows Phone development team through the elite Microsoft Silverlight and WPF Insiders group. Along the way, he presents exceptionally practical and thorough coverage of many powerful new Windows Phone 8 platform enhancements, including full chapters on voice commands and speech synthesis, incorporating speech-driven experiences, Wallet integration, new Live Tile capabilities, the Nokia Maps control, launching apps via file and protocol associations, and much more.

Detailed information on how to…

* Get started quickly with Windows Phone XAML development in Visual Studio

* Master the Capabilities Model, threading, and the Execution Model

* Create attractive mobile interfaces using Windows Phone’s rich set of controls, including the Windows Phone Toolkit

* Make the most of the application bar and other interface elements

* Enhance user experience with advanced support for touch, gestures, and sensors

* Build location-aware apps that use Nokia Maps and location services

* Incorporate speech-driven experiences

* Quickly internationalize apps for global markets

* Leverage Windows Phone 8’s improved camera support

* Connect apps to online services via SOAP, REST, and OData

* Validate user input on the client side or via WCF services

* Use Windows Phone 8’s powerful local database support

* Implement background actions, file transfers, and audio playback

* Automatically launch your app using file and protocol associations

* Unit test to find defects earlier, saving time and money

Table of Contents

  1. About This eBook
  2. Title Page
  3. Copyright Page
  4. Contents at a Glance
  5. Table of Contents
  6. Preface
    1. Scope of This Book
    2. Assumptions About the Reader
    3. Book Structure
    4. Code Samples
  7. About the Author
  8. Dedication
  9. Acknowledgments
  10. We Want to Hear from You!
  11. Reader Services
  12. Part I: Windows Phone App Development Fundamentals
    1. Chapter 1. Introduction to Windows Phone App Development
      1. Installing the Windows Phone SDK
      2. Creating Your First XAML for Windows Phone App
        1. The Application Class
      3. Summary
    2. Chapter 2. Fundamental Concepts in Windows Phone Development
      1. Understanding the Role of XAP Files
        1. The Application Deployment Tool
      2. The Windows Phone Capabilities Model
        1. Determining App Capabilities Using the Marketplace Test Kit
      3. The Threading Model for XAML-Based Graphics and Animation in Windows Phone
        1. Performance and Element Visibility
        2. Deciding Between Visibility and Opacity
      4. Understanding the Frame Rate Counter
      5. The Windows Phone Application Analysis Tool
        1. External Events
        2. Frame Rate Graph
        3. CPU Usage Graph
        4. Memory Usage MB Graph
        5. Storyboards
        6. Image Loads
        7. GC Events
        8. Viewing Detailed Profiling Information
      6. Reading Device Information
        1. Calculating Available Memory
        2. DeviceStatus Events
      7. Applying the Model-View-ViewModel Pattern to a Windows Phone App
        1. Implementing the MVVM Pattern
        2. ViewModelBase Class
      8. Property Change Notification
        1. Implementing INotifyPropertyChanged: The Traditional Approach
        2. Implementing INotifyPropertyChanged: An Alternative Approach
      9. Using Commands
      10. Argument Validation
      11. A Platform-Agnostic Dialog Service
      12. Consuming Local Web Applications
      13. Summary
    3. Chapter 3. Understanding the Application Execution Model
      1. Exploring the Execution Model
        1. Application State
        2. Life Cycle Events
        3. Programmatically Exiting an App
        4. Saving Transient State
        5. Restoring Transient State
        6. Saving Persistent State
      2. Implementing Fast App Resume
        1. Enabling Fast App Resume
        2. Optimizing the Resume Experience
      3. Running Under the Lock Screen
        1. Lock Screen Management
      4. Page Navigation
        1. Navigation Using Unmapped URIs
        2. Passing Page Arguments Using Query Strings
        3. URI Mapping
        4. Navigation Using the NavigationService
        5. Handling Page Navigation
        6. Canceling Navigation
        7. Cross-Page Communication
        8. Page Redirection
        9. Hardware Back Button
      5. Creating an Application Splash Screen
      6. Walking Through the Bookshop Sample Application
        1. Displaying the Product List
        2. Design-Time Data
        3. Image Caching
        4. Overview of the Sample Bookshop WCF Service
      7. Summary
    4. Chapter 4. Controlling Page Orientation
      1. Orientation and the PhoneApplicationPage Class
        1. OrientationChanged Event
        2. PhoneApplicationPage Orientation Property
        3. Setting Page Orientation at Runtime
        4. Animating Page Elements When the Page Orientation Changes
        5. Animating the Entire Page When Orientation Changes
      2. Windows Phone Toolkit Animated Page Transitions
        1. Using Windows Phone Toolkit Transitions
        2. Reusing the Transition Attached Properties
      3. Summary
  13. Part II: Essential Elements
    1. Chapter 5. Using Content Controls, Items Controls, and Range Controls
      1. Control Type Taxonomy
        1. Identifying Controls Not Supported or Absent in Windows Phone
      2. Content Controls
        1. Defining the Default Content Property
      3. Receiving Input with Buttons
        1. Tap and Click Events
        2. Button Click Mode
        3. Hyperlink Button
        4. Repeat and Toggle Buttons
        5. Radio Button
        6. Check Box
        7. ToolTip
      4. Items Controls
        1. ListBox
        2. ComboBox
      5. Range Controls
        1. ProgressBar
        2. Progress Indicator
        3. Slider
        4. ScrollBar
      6. Summary
    2. Chapter 6. Mastering Text Elements and Fonts
      1. Understanding Text Element Types
      2. Displaying Text Using the TextBlock
        1. Using the Run and LineBreak Objects
        2. Multiline TextBlock Text
      3. Controlling Font Properties
      4. Understanding the Built-In Fonts
      5. Using Third-Party Fonts via Font Embedding
        1. Leveraging FontSource to Assign a Font Using a Stream
      6. Receiving Input Using a TextBox
        1. Software Input Panel
        2. Input Scope
        3. Input Scope Sample Overview
      7. Receiving Password Text Using a PasswordBox
      8. Displaying Rich Content Using a RichTextBox
        1. Formatting Text at Runtime
        2. Further Reading
      9. Placing Text on the Clipboard
      10. Summary
    3. Chapter 7. Employing Media and Web Elements
      1. Displaying Images with the Image Element
        1. Image Sizing
      2. Providing a Drawing Surface with the InkPresenter Element
        1. Capturing User Input
        2. InkPresenter Sample Code
      3. Playing Audio and Video with the MediaElement
        1. MediaElement Sample Code
        2. XNA SoundEffect Class
      4. Harnessing the XNA Game Loop Via the GameTimer Class
        1. XNA Environment Initialization
      5. Saving Music to the Media Library
      6. Viewing High-Resolution Images with the MultiScaleImage Element
        1. Image Tiling
        2. Creating a Deep Zoom Image
        3. Exploring the MultiScaleImage API
        4. Deep Zoom Viewer Sample Code
      7. Displaying Web Content with the WebBrowser Element
        1. Monitoring and Canceling Navigation
        2. Communicating with a Web Page
        3. Injecting Web Page Behavior
        4. Storing and Browsing Content in Isolated Storage
      8. Summary
    4. Chapter 8. Taming the Application Bar
      1. Exploring the Built-In Application Bar
        1. Using the ApplicationBar
        2. Modifying the Application Bar’s Appearance
        3. Icon Button and Menu Item
        4. Icon Button Image
        5. Retrieving a Button or Menu Item at Runtime
      2. Introducing the Custom AppBar
        1. AppBar Buttons and Menu Items
        2. Button and Menu Item Visibility
        3. Sample Code
        4. Switching to Full-Screen
        5. Customizing the Appearance of the System Tray
        6. Inside the AppBar Control
      3. Summary
    5. Chapter 9. Enriching the User Experience with the Windows Phone Toolkit Controls
      1. Getting Started with the Toolkit
      2. In-Place Selection Using the ListPicker
        1. Display Modes
      3. Suggesting Text with the AutoCompleteBox
        1. Using AutoCompleteBox with MVVM
        2. Defining a Custom Filter Using the ItemFilter Property
        3. Dynamic Population of the Suggestion List
        4. Styling the Suggestion List
        5. Data Binding and the AutoCompleteBox.Text Property
      4. Displaying a ContextMenu
        1. ContextMenu and MVVM
        2. Hosting a ContextMenu in a ListBoxItem
      5. Selecting Date and Time Values with the DatePicker and TimePicker
        1. Using the DatePicker and TimePicker
        2. Adding a Control Header
        3. Customizing the Value Format
        4. Customizing the Full-Screen Picker Page
      6. Providing Custom Looping Lists with the LoopingSelector
      7. Providing Touch Feedback with the TiltEffect
        1. Supporting Other Controls
      8. Providing a Boolean Option with the ToggleSwitch
        1. Using the ToggleSwitch
        2. Localizing the ToggleSwitch
        3. Changing the Switch Color
      9. Using Flexible Layouts with the WrapPanel
        1. Child Element Spacing
        2. Sample Overview
        3. Using a WrapPanel in Conjunction with a ListBox
      10. Summary
    6. Chapter 10. Creating Jump Lists with the Long List Selector
      1. Visual Structure of the Long List Selector
      2. Presenting Flat Lists
      3. Presenting Grouped Lists
      4. Marketplace App List Sample
      5. Displaying a List of Contacts Using the LongListSelector
      6. Summary
    7. Chapter 11. Creating Expansive and Engaging Apps with the Pivot and Panorama
      1. Pivot and Panorama Differences and Similarities
        1. Style Assumptions
        2. Introduction to the Pivot Control
        3. Introduction to the Panorama Control
      2. Pivot and Panorama Placement in the FCL
      3. Performance Improvements in Windows Phone 8
      4. Using the Pivot Control
        1. Placing a Pivot on a Page
        2. Creating a Pivot Application with the Visual Studio New Project Dialog
        3. Pivot Anatomy
        4. Setting the Active PivotItem
        5. Pivot Load Events
        6. Hosting Multiple Application Bars with the Pivot
        7. Populating a Pivot Via a Data Bound Collection
      5. Using the Panorama Control
        1. Panorama Anatomy
        2. PanoramaItem Control
        3. Sample Panorama Application
      6. Things to Avoid When Using the Panorama and Pivot
      7. Windows Phone Toolkit Lockable Pivot
      8. Summary
  14. Part III: Windows Phone App Development
    1. Chapter 12. Processing Touch Input
      1. Handling Touch with Mouse Events
      2. Touch and TouchPoint Classes
        1. Mouse Event Promotion
        2. Handling the Touch.FrameReported Event
      3. Manipulation Events
        1. Handling Manipulation Events
        2. Manipulation Events Example
      4. UIElement Touch Gesture Events
        1. Tap Gesture
        2. Double Tap Gesture
        3. Hold Gesture
      5. Windows Phone Toolkit Gestures
        1. Getting Started with Toolkit Gestures
        2. GestureListener Events in Detail
        3. GestureBegin and GestureCompleted Events
        4. Gesture Sample Code
      6. Designing Touch-Friendly User Interfaces
        1. Three Components of Touch
        2. Sizing and Spacing Constraints
        3. General Guidelines
      7. Summary
    2. Chapter 13. Portraying Your App with Live Tiles
      1. Getting Started with Live Tiles
        1. Tile Sizes and Resolutions
      2. Introducing the Cycle Tile Template
      3. Introducing the Flip Tile Template
      4. Introducing the Iconic Tile Template
      5. Programmatically Updating Shell Tiles
      6. Controlling the Lock Screen’s Background and Notification Area
        1. Setting the Lock Screen’s Background Image
        2. Setting the Lock Screen’s Notification Text
        3. Creating a Lock Screen Icon
      7. Summary
    3. Chapter 14. Leveraging Built-In Apps via Launchers and Choosers
      1. API Overview
      2. Choosers and the Application Execution Model
        1. Internal Workings of the ChooserBase.Completed Event
      3. Launchers and Choosers in Detail
        1. Retrieve Driving Directions Using the BingMapsDirectionsTask
        2. Displaying a Location on a Map Using the BingMapsTask
        3. Navigating to a Connection Setting Page Using the ConnectionSettingsTask
        4. Selecting an Email Address with the EmailAddressChooserTask
        5. Preparing an Email with the EmailComposeTask
        6. Saving a Contact’s Email Using the SaveEmailAddressTask
        7. Navigating to an App on the Marketplace with the MarketplaceDetailTask
        8. Launching the Marketplace App with the MarketplaceHubTask
        9. Allowing the User to Review Your App Using the MarketplaceReviewTask
        10. Searching the Marketplace with the MarketplaceSearchTask
        11. Playing a Media File Using the MediaPlayerLauncher
        12. Placing a Call with the PhoneCallTask
        13. Selecting a Phone Number with the PhoneNumberChooserTask
        14. Saving a Contact’s Phone Number with the SavePhoneNumberTask
        15. Searching the Web with the SearchTask
        16. Sending Contacts a Link Using the ShareLinkTask
        17. Posting a Status Update to Social Networks Using the ShareStatusTask
        18. Preparing an SMS With the SmsComposeTask
        19. Navigating to a Web Page Using the WebBrowserTask
        20. Selecting a Contact’s Address Using the AddressChooserTask
        21. Saving a Contact to the Phone’s Contact List Using the SaveContactTask
        22. Taking a Photo with the CameraCaptureTask
        23. Inviting Game Players with the GameInviteTask
        24. Selecting a Photo from the Photo Hub Using the PhotoChooserTask
        25. Sharing Images with Other Devices Using NFC or with Other Registered Phone Services
        26. Creating a Ringtone with an Audio File Using the SaveRingtoneTask
      4. Contacts and Appointments
        1. Retrieving Contacts
        2. Storing Contacts in the Custom Contact Store
        3. Detecting Changes in Stored Contacts
        4. Converting a Stored Contact to and from a vCard
        5. Retrieving Appointments
      5. Saving an Appointment Using the SaveAppointmentTask
      6. Summary
    4. Chapter 15. Receiving Messages from the Cloud Using Push Notification
      1. Push Notifications Types
      2. Benefits of Push Notification
      3. Understanding Push Notification
      4. Getting Started with Push Notification
      5. Subscribing to Push Notification
        1. Binding to the Shell
        2. HttpNotificationChannel Events
        3. Handling Channel Errors
      6. Power Management and Push Notification
      7. Sending Push Notifications
      8. Toast Notifications
        1. Receiving a Toast Notification from Within an Application
        2. Sending a Toast Notification
      9. Tile Notifications
        1. Sending a Tile Notification
        2. Updating an Application Tile Using a Shell Tile Schedule
      10. Raw Notifications
        1. Sending a Raw Notification
        2. Receiving a Raw Notification
      11. Identifying Notifications in an HttpWebResponse
      12. Notification Classes
      13. Cloud Service Authentication
        1. Authenticating a Cloud Service
        2. Creating a Notification Channel for an Authenticated Cloud Service
      14. Building a Stock Ticker Application
        1. Sample App Notifications
      15. Summary
    5. Chapter 16. Sensing Motion and Attitude
      1. Sensors Overview
      2. Measuring Force with the Accelerometer
        1. Using the Accelerometer Class
        2. Simulating Acceleration with the Emulator
        3. Smoothing Accelerometer Readings
        4. Calibrating the Accelerometer
        5. Shake Detection
      3. Measuring Direction with the Compass
        1. Using the Compass Sensor
        2. Compass Orientation
        3. Calibrating the Compass
      4. Sensing Rotation with the Gyroscope
        1. Using the Gyroscope Sensor
      5. Improving Sensor Accuracy with the Motion Sensor
        1. Using the Motion Sensor
      6. Summary
    6. Chapter 17. Building Location Aware Apps
      1. Location Sensing Technologies
        1. A-GPS
        2. Cell Tower Triangulation
        3. Wi-Fi Triangulation
      2. Geographic Location Architecture
      3. Getting Started with Location
        1. Geolocator Class
      4. Background Location Tracking
      5. Testing Apps That Use the Geolocator
      6. Code-Driven Location Simulation
      7. A Walkthrough of the Location Viewer Sample
        1. GeoLocationViewModel Class
        2. Displaying Location Using the GeoLocationView Page
        3. Civic Address Resolution
      8. Sampling the PositionChanged Event with Rx
        1. Getting Started with Rx for Windows Phone
      9. Summary
    7. Chapter 18. Incorporating Map-Based Positioning
      1. Getting Started with the Map Control
        1. Obtaining an ApplicationId and AuthenticationToken
      2. Overview of the Sample Map View
      3. Adjusting for Low Light Conditions
      4. Changing Cartographic Modes
      5. Panning and Zooming the Map Control
        1. Centering the Map to the Phone’s Current Location
        2. Setting the Viewable Area of the Map
      6. Adjusting Pitch and Heading
      7. Location Tracking
      8. Overlaying Custom Map Content
      9. Calculating and Displaying a Route
        1. Calculating the Shortest Route Between Two Points
        2. Using the Route Calculator
        3. Searching for a Route Using the View
      10. Modifying Page Elements Using Visual States
        1. Displaying the Route and Itinerary
      11. Showing a Location with the Built-In Maps App
      12. Showing Directions with the Built-In Maps App
      13. Downloading Maps for Offline Use
      14. Summary
    8. Chapter 19. Supporting Multiple Cultures and Languages
      1. Terminology
      2. Localizability Using Resx Files
        1. Getting Started with Resx Files
        2. Working with Resx Files
      3. Dynamic Localizability—Updating the UI When the Culture Changes
      4. Localizing Images Using Resx Files
      5. The Resx Localizability Sample
        1. Controlling the UI Culture from the LocalizabilityViewModel
        2. Displaying Localized Text and Images Within the LocalizabilityView Page
        3. RTL Support
      6. Summary
    9. Chapter 20. Extending the Windows Phone Picture Viewer
      1. Creating a Photos Extras Application
        1. Adding Your App to the Extras Menu
        2. An Edge-Tracing Extras Application
        3. Saving the Image
      2. Share Menu Extensibility
        1. Adding Your App to the Share Menu
        2. A Simple Photo Upload Share Application
      3. Summary
    10. Chapter 21. Capturing Images and Video with the Camera
      1. PhotoCamera
        1. Building a PhotoCamera App
      2. Using the Silverlight Webcam API
        1. CaptureSourceViewModel
        2. Displaying Video in the CaptureSourceView
      3. Extending the Camera Experience with a Lens
        1. Registering as a Lens
        2. Creating Lens Icons
      4. Summary
    11. Chapter 22. Recording Audio with the Microphone
      1. Recording Audio with the Microphone
        1. Creating a Helium Voice App
      2. Summary
    12. Chapter 23. Creating Speech Driven Experiences
      1. User Input with Speech Recognition
        1. Getting Started with Speech Recognition
        2. Overview of Recognition Grammars
        3. Recognizing Speech Using the Dictation and Web Search Grammars
        4. Recognizing Speech with Phrase List Grammars
        5. Recognizing Speech with SRGS Grammars
        6. Speech Recognizer Settings
        7. Providing a Custom Speech Recognition UI
        8. Recognizing Speech in Other Languages
      2. Launching Your App via Voice Commands
        1. Understanding the Structure of the VCD File
        2. Installing a VCD
        3. Updating a Phrase List Programmatically
      3. Making the Phone Speak with Text-to-Speech
        1. Getting Started with TTS
        2. Creating a Speech Synthesis Markup Language File
      4. Summary
    13. Chapter 24. Unit Testing Apps
      1. Automated Testing
        1. Unit Testing
        2. Integration Testing
        3. Coded UI Testing
      2. Introduction to the Windows Phone Unit Test Framework
      3. Creating a Test Project
      4. Creating a Test Class
      5. Tag Expressions
        1. Setting the Tag Expression Programmatically
      6. Metadata and Assertions
        1. TestClass Attribute
        2. TestMethod Attribute
        3. Metadata for Test Initialization and Cleanup
        4. Miscellaneous Metadata
        5. WorkItemTest: The Base TestClass Type
        6. Verifying Conditions with Assertions
        7. Verifying Collection Conditions with CollectionAssert
        8. Verifying String Conditions with StringAssert
        9. Hiding the Expressions Editor
        10. Testing Multiple Assemblies
        11. Testing Nonpublic Members
      7. A Testable Chat Client
        1. Building the View
        2. Code Driven UI Testing
        3. Using Automation Peers to Manipulate UI Elements at Runtime
      8. Inversion of Control (IoC)
        1. A Custom IoC Container and DI Framework
      9. Testing Trial Conditions
        1. Abstracting the LicenseInformation Class
      10. Testing with Launchers and Choosers
      11. Summary
    14. Chapter 25. Manage Payment Instruments Using Wallet Extensibility
      1. Introducing the Wallet Hub
      2. Required Capabilities for Wallet Integration
      3. Storing Payment Instruments in the Wallet
        1. Overview of the Payment Instruments Sample App
        2. Keeping Payment Instruments Up-To-Date with a Background Agent
      4. Storing Membership Information in the Wallet
      5. Storing Deals in the Wallet
        1. Keeping Deals and Membership Information Up-to-Date with a Background Agent
      6. Summary
  15. Part IV: Building Data Driven Apps
    1. Chapter 26. Validating User Input
      1. Defining Input Validation
        1. Syntactic Validation
        2. Semantic Validation
      2. Input Validation Using Property Setters
        1. Validation Class
        2. Critical Exceptions
        3. Binding Errors
      3. Defining Validation Visual States in Windows Phone
        1. Validating a TextBox as the User Types
        2. Performing Group Validation
        3. Displaying Error Details
        4. Property Setter Validation Limitations
      4. Asynchronous and Composite Validation
        1. A Reusable Implementation of the NotifyDataErrorInfo Interface
        2. Provisioning for Asynchronous or Synchronous Validation
        3. Asynchronous Validation of All Properties
        4. An Example of Asynchronous Input Validation
        5. Detecting a Change of Data Context
        6. Adding INotifyDataErrorInfo Support to the ValidationSummary Control
        7. Incorporating Group Validation
      5. Summary
    2. Chapter 27. Communicating with Network Services
      1. Network Service Technologies
      2. Monitoring Network Connectivity
        1. Connection Priorities
      3. Introduction to OData
      4. Consuming OData
        1. OData URI Structure
        2. Generating an OData Proxy
        3. OData Query Options
      5. Using an OData Proxy
      6. Building an eBay OData Consumer Application
        1. Creating an OData Wrapper
        2. EbaySearchViewModel Class
        3. EbaySearchView Page
      7. Fetching Data When the User Scrolls to the End of a List
        1. Extending OData Entity Classes
      8. Simulating Real-World Conditions with the Simulation Dashboard
      9. Moderating Data Usage with Data Sense
        1. Using the Data Sense API
      10. Summary
    3. Chapter 28. Preserving App State and Settings
      1. Understanding Managed Storage
      2. Working with Files and Directories
        1. Introducing the .NET Isolated Storage API
        2. Introducing the WinPRT Windows Storage API
        3. Measuring the Amount of Available Free Space
        4. Application Settings
      3. Abstracting IsolatedStorageSettings
      4. Building an Automatic State Preservation System
        1. Customizing ViewModel State Preservation
        2. Automatic State Preservation Inner Workings
        3. Unwinding a Property Lambda Expression
        4. Creating Property Accessor Delegates
      5. Summary
    4. Chapter 29. Storing App Data in a Local Database
      1. SQL Server Compact
      2. Deployment of Local Databases
      3. LINQ to SQL on the Phone
      4. LINQ to SQL Platform Differences
      5. Getting Started with Local Databases
        1. Code-First Data Model Creation
      6. Sample Twitter Timeline Viewer
        1. Using the Column Attribute
        2. Data Context Change Tracking
        3. TwitterUser Class
        4. Multiplicity and the Association Attribute
        5. Twitter DataContext
        6. Database Utilities
        7. Connection Strings
        8. Leveraging a Custom Twitter Service
        9. Gathering the User’s Credentials with the Sign-In View
        10. Viewing Tweets with the Timeline View
      7. Viewing a Local Database Schema
        1. File Explorers for Isolated Storage
        2. Viewing and Modifying an SQL CE Database File
      8. Database-First Using SqlMetal
      9. Deploying a Database to Isolated Storage
      10. Abstracting the Navigation Service
      11. Observing LINQ to SQL Queries with a Custom Log
      12. Updating a Database Schema
        1. AddColumn
        2. AddTable
        3. AddIndex
        4. AddAssociation
        5. Schema Versioning
      13. Mapping an Inheritance Hierarchy
      14. Concurrency
        1. ColumnAttribute.UpdateCheck
      15. Summary
    5. Chapter 30. Auto-Launching with File and Protocol Associations
      1. Understanding File and Protocol Associations
      2. A Note About the Sample
      3. Auto-Launching with a File Extension Association
        1. Registering a File Association
        2. Receiving a File Launch Request
        3. Launching a File
      4. How File and Protocol Associations Affect the User Experience
      5. Auto-Launching with a Protocol Association
        1. Registering for a Protocol Association
        2. Receiving a Protocol Launch Request
        3. Launching a Protocol URI
        4. Reserved Protocol Names
      6. Launching Built-In Apps
      7. Summary
    6. Chapter 31. Extending the Search Experience
      1. Understanding Quick Cards
      2. Configuring Your App for Search Integration
        1. Configuring the Application Manifest
        2. Customizing Captions via the Extras.xml File
        3. Defining a Quick Card Target Page
      3. Creating a Landing Page to Display Quick Card Information
      4. App Instant Answer
      5. Summary
  16. Part V: Multitasking
    1. Chapter 32. Conducting Background Activities with Scheduled Actions
      1. Background Tasks
      2. Scheduled Notifications
        1. Alarm Registration
        2. Alarm Sample
        3. Reminder Registration
        4. Reminder Sample
      3. Scheduled Tasks
        1. Background Agent Types
        2. Using Scheduled Tasks
        3. To-Do List Scheduled Task Sample
        4. Updating Tiles Using a Scheduled Task Agent
        5. Scheduled Task API Limitations
      4. Using a Mutex to Access Common Resources Safely
      5. Summary
    2. Chapter 33. Performing Background File Transfers
      1. Background Transfer Requests
        1. Handling App Termination and Resubscription to Transfer Events
      2. Background File Transfer Sample Code
        1. Using URL Rerouting with a WCF Service
        2. Retrieving the User’s Windows Live Anonymous ID
        3. TodoListViewModel
        4. Backing Up the Local Database
        5. Restoring the Local Database
      3. Summary
    3. Chapter 34. Coordinating Background Audio Playback
      1. Background Agent Recap
      2. Background Audio Overview
      3. Background Audio Player
      4. Representing Audio Files with the AudioTrack Class
      5. Creating a Custom Audio Player Agent
      6. AudioPlayerAgent Sample
        1. AudioPlayerAgent Virtual Methods
        2. Controlling Background Audio from Your Foreground App
      7. Audio Streaming Agents
        1. Using a MediaStreamSource to Play Back an Assembly Resource
      8. Summary
  17. Bibliography
  18. Index