Tải bản đầy đủ (.pdf) (617 trang)

Real world windows 10 development

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (14.43 MB, 617 trang )

T HE E X P ER T ’S VOIC E ® IN W I N D O W S D E V E L O P M E N T

Real World
Windows 10
Development
Second Edition

Edward Moemeka
Elizabeth Moemeka

www.it-ebooks.info


Real World Windows 10
Development
Second Edition

Edward Moemeka
Elizabeth Moemeka

www.it-ebooks.info


Real World Windows 10 Development
Copyright © 2015 by Edward Moemeka and Elizabeth Moemeka
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the
material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation,
broadcasting, reproduction on microfilms or in any other physical way, and transmission or information
storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now
known or hereafter developed. Exempted from this legal reservation are brief excerpts in connection with
reviews or scholarly analysis or material supplied specifically for the purpose of being entered and executed


on a computer system, for exclusive use by the purchaser of the work. Duplication of this publication or
parts thereof is permitted only under the provisions of the Copyright Law of the Publisher’s location, in its
current version, and permission for use must always be obtained from Springer. Permissions for use may be
obtained through RightsLink at the Copyright Clearance Center. Violations are liable to prosecution under
the respective Copyright Law.
ISBN-13 (pbk): 978-1-4842-1450-3
ISBN-13 (electronic): 978-1-4842-1449-7
Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with
every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an
editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are
not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to
proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of publication,
neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or
omissions that may be made. The publisher makes no warranty, express or implied, with respect to the
material contained herein.
Managing Director: Welmoed Spahr
Lead Editor: James DeWolf
Technical Reviewer: Fabio Cladio Ferracchiati
Editorial Board: Steve Anglin, Pramila Balen, Louise Corrigan, Jim DeWolf, Jonathan Gennick,
Robert Hutchinson, Celestin Suresh John, Michelle Lowman, James Markham, Susan McDermott,
Matthew Moodie, Jeffrey Pepper, Douglas Pundick, Ben Renow-Clarke, Gwenan Spearing
Coordinating Editor: Melissa Maldonado
Copy Editor: Mary Behr
Compositor: SPi Global
Indexer: SPi Global
Artist: SPi Global
Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring
Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail

, or visit www.springer.com. Apress Media, LLC is a California LLC and the
sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance
Inc is a Delaware corporation.
For information on translations, please e-mail , or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use.
eBook versions and licenses are also available for most titles. For more information, reference our Special
Bulk Sales–eBook Licensing web page at www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this text is available to
readers at www.apress.com. For detailed information about how to locate your book’s source code, go to
www.apress.com/source-code/.

www.it-ebooks.info


This book is dedicated to my father, Professor Andrew Azukaego Moemeka,
who has been my greatest inspiration.
—Edward Moemeka
We also both dedicate this book, in loving memory, to William “Bill” Brown.

www.it-ebooks.info


Contents at a Glance
About the Authors����������������������������������������������������������������������������������������������������xv
About the Technical Reviewers�����������������������������������������������������������������������������xvii
Acknowledgments��������������������������������������������������������������������������������������������������xix
Introduction������������������������������������������������������������������������������������������������������������xxi
■Chapter

1: The Windows 10 Ethos and Environment��������������������������������������������� 1

■Chapter

2: Basic Controls������������������������������������������������������������������������������������ 53
■Chapter

3: Data Controls����������������������������������������������������������������������������������� 101
■Chapter

4: Layout and Custom Controls������������������������������������������������������������ 135
■Chapter

5: Building an Adaptive Experience����������������������������������������������������� 179
■Chapter

6: File IO����������������������������������������������������������������������������������������������� 209
■Chapter

7: Working with Media������������������������������������������������������������������������� 257
■Chapter

8: Location and Mapping���������������������������������������������������������������������� 305
■Chapter

9: Background Tasks���������������������������������������������������������������������������� 343
■Chapter

10: Shell Integration���������������������������������������������������������������������������� 377
■Chapter

11: Communicating Between Apps������������������������������������������������������ 419

■Chapter

12: Leveraging Cortana and Speech���������������������������������������������������� 471
■Chapter

13: App Monetization��������������������������������������������������������������������������� 521
■Chapter

14: Leveraging Existing Code��������������������������������������������������������������� 543
■Chapter

15: Distributing Universal Apps����������������������������������������������������������� 565
Index��������������������������������������������������������������������������������������������������������������������� 599
v

www.it-ebooks.info


Contents
About the Authors����������������������������������������������������������������������������������������������������xv
About the Technical Reviewers�����������������������������������������������������������������������������xvii
Acknowledgments��������������������������������������������������������������������������������������������������xix
Introduction������������������������������������������������������������������������������������������������������������xxi
■Chapter

1: The Windows 10 Ethos and Environment��������������������������������������������� 1
RIP Windows 8������������������������������������������������������������������������������������������������������������������ 1
Hello, Windows 10������������������������������������������������������������������������������������������������������������ 3
A Not-So-Brief Introduction���������������������������������������������������������������������������������������������� 7
The New All-New Taskbar���������������������������������������������������������������������������������������������� 12

Building Windows 10 UWP Apps������������������������������������������������������������������������������������� 15
Supported Languages��������������������������������������������������������������������������������������������������������������������������� 17

Developing for Windows 10 UWP Apps�������������������������������������������������������������������������� 20
Setting Up Your Environment���������������������������������������������������������������������������������������������������������������� 20
The Visual Studio IDE���������������������������������������������������������������������������������������������������������������������������� 20
Creating Your First Project�������������������������������������������������������������������������������������������������������������������� 24
Sidebar: Exploring the App Manifest����������������������������������������������������������������������������������������������������� 26
Back to Your First Project��������������������������������������������������������������������������������������������������������������������� 31
Notes on XAML������������������������������������������������������������������������������������������������������������������������������������� 38

Summary������������������������������������������������������������������������������������������������������������������������ 51

vii

www.it-ebooks.info


■ Contents

■Chapter

2: Basic Controls������������������������������������������������������������������������������������ 53
Setting Up a Project�������������������������������������������������������������������������������������������������������� 53
So Just What Are Controls?�������������������������������������������������������������������������������������������� 59
Incorporating Controls���������������������������������������������������������������������������������������������������� 59
Window������������������������������������������������������������������������������������������������������������������������������������������������� 61
Frame��������������������������������������������������������������������������������������������������������������������������������������������������� 63
Page������������������������������������������������������������������������������������������������������������������������������������������������������ 64
Button��������������������������������������������������������������������������������������������������������������������������������������������������� 65

CalendarDatePicker������������������������������������������������������������������������������������������������������������������������������ 69
TimePicker�������������������������������������������������������������������������������������������������������������������������������������������� 71
AutoSuggestBox����������������������������������������������������������������������������������������������������������������������������������� 72
CommandBar���������������������������������������������������������������������������������������������������������������������������������������� 75
AppBarButton��������������������������������������������������������������������������������������������������������������������������������������� 77
DatePicker�������������������������������������������������������������������������������������������������������������������������������������������� 79
MenuFlyout������������������������������������������������������������������������������������������������������������������������������������������� 80
TextBox������������������������������������������������������������������������������������������������������������������������������������������������� 83
PasswordBox���������������������������������������������������������������������������������������������������������������������������������������� 84
ComboBox�������������������������������������������������������������������������������������������������������������������������������������������� 86
Slider���������������������������������������������������������������������������������������������������������������������������������������������������� 87
Image���������������������������������������������������������������������������������������������������������������������������������������������������� 88
WebView����������������������������������������������������������������������������������������������������������������������������������������������� 92
Noteworthy Mentions��������������������������������������������������������������������������������������������������������������������������� 94

Summary������������������������������������������������������������������������������������������������������������������������ 98
■Chapter

3: Data Controls����������������������������������������������������������������������������������� 101
Modifying the Project��������������������������������������������������������������������������������������������������� 101
Creating a Control Corral Model��������������������������������������������������������������������������������������������������������� 101
Persisting to the File System�������������������������������������������������������������������������������������������������������������� 107
Setting Up the Pages�������������������������������������������������������������������������������������������������������������������������� 110

viii

www.it-ebooks.info


■ Contents


Listing Reservations with ListBox�������������������������������������������������������������������������������� 114
Viewing Individual Reservations with FlipView������������������������������������������������������������ 117
Revisiting AutoSuggestBox������������������������������������������������������������������������������������������ 122
Revisiting ComboBox��������������������������������������������������������������������������������������������������� 124
Showing Customers with GridView������������������������������������������������������������������������������ 126
Displaying Today’s Reservations with ListView������������������������������������������������������������ 130
Summary���������������������������������������������������������������������������������������������������������������������� 133
■Chapter

4: Layout and Custom Controls������������������������������������������������������������ 135
Layout Controls������������������������������������������������������������������������������������������������������������ 135
Understanding the Layout System������������������������������������������������������������������������������������������������������ 136
Alignment, Margins, and Padding������������������������������������������������������������������������������������������������������� 137
The Layout Controls���������������������������������������������������������������������������������������������������������������������������� 141

Building Your Own Controls������������������������������������������������������������������������������������������ 168
User Controls�������������������������������������������������������������������������������������������������������������������������������������� 168
Templated Controls����������������������������������������������������������������������������������������������������������������������������� 172
Your Own Layout Controls������������������������������������������������������������������������������������������������������������������ 175

Summary���������������������������������������������������������������������������������������������������������������������� 177
■Chapter

5: Building an Adaptive Experience����������������������������������������������������� 179
Device Families������������������������������������������������������������������������������������������������������������ 180
Adapting the User Interface����������������������������������������������������������������������������������������� 183
Triggered States��������������������������������������������������������������������������������������������������������������������������������� 183
Visual States��������������������������������������������������������������������������������������������������������������������������������������� 194
XAML Views���������������������������������������������������������������������������������������������������������������������������������������� 196


Adapting the Code�������������������������������������������������������������������������������������������������������� 203
The ApiInformation Class�������������������������������������������������������������������������������������������������������������������� 204

Summary���������������������������������������������������������������������������������������������������������������������� 206

ix

www.it-ebooks.info


■ Contents

■Chapter

6: File IO����������������������������������������������������������������������������������������������� 209
Creating the ResumeManager Project������������������������������������������������������������������������� 209
Files������������������������������������������������������������������������������������������������������������������������������ 211
Storage Folders������������������������������������������������������������������������������������������������������������ 215
The Package Install Location�������������������������������������������������������������������������������������������������������������� 215
The Isolated Storage Area������������������������������������������������������������������������������������������������������������������� 219
RoamingFolder����������������������������������������������������������������������������������������������������������������������������������� 224
TemporaryFolder��������������������������������������������������������������������������������������������������������������������������������� 231
The User’s Known Folders������������������������������������������������������������������������������������������������������������������ 231
External Known Folders���������������������������������������������������������������������������������������������������������������������� 235
The Downloads Folder������������������������������������������������������������������������������������������������������������������������ 236
Final Thoughts on Storage via the ApplicationData Class������������������������������������������������������������������� 238

Using Pickers���������������������������������������������������������������������������������������������������������������� 238
Sharing Files with Custom Pickers������������������������������������������������������������������������������� 242

Summary���������������������������������������������������������������������������������������������������������������������� 256
■Chapter

7: Working with Media������������������������������������������������������������������������� 257
Creating a New Project������������������������������������������������������������������������������������������������� 257
Visualizing Media��������������������������������������������������������������������������������������������������������� 260
Images������������������������������������������������������������������������������������������������������������������������������������������������ 260
Audio�������������������������������������������������������������������������������������������������������������������������������������������������� 287
Video��������������������������������������������������������������������������������������������������������������������������������������������������� 296
Background Audio������������������������������������������������������������������������������������������������������������������������������ 300

Using WebView to Display Render Media��������������������������������������������������������������������� 303
Summary���������������������������������������������������������������������������������������������������������������������� 304
■Chapter

8: Location and Mapping���������������������������������������������������������������������� 305
Location Awareness����������������������������������������������������������������������������������������������������� 305
Enabling Location Functionality���������������������������������������������������������������������������������������������������������� 306
Requesting Access to Location Data�������������������������������������������������������������������������������������������������� 307
Getting the Current Location��������������������������������������������������������������������������������������������������������������� 311
More on Permissions�������������������������������������������������������������������������������������������������������������������������� 314
x

www.it-ebooks.info


■ Contents

Responding to Location Updates�������������������������������������������������������������������������������������������������������� 316
Geofencing������������������������������������������������������������������������������������������������������������������������������������������ 316


Mapping����������������������������������������������������������������������������������������������������������������������� 323
Launching Maps via URI��������������������������������������������������������������������������������������������������������������������� 324
Adding Maps into Your App����������������������������������������������������������������������������������������������������������������� 325
Displaying Streetside Views��������������������������������������������������������������������������������������������������������������� 330
Handling Events, User Interaction, and Changes�������������������������������������������������������������������������������� 331
Working with POIs (Points of Interest)������������������������������������������������������������������������������������������������ 332
Geocoding������������������������������������������������������������������������������������������������������������������������������������������� 335
Displaying Directions�������������������������������������������������������������������������������������������������������������������������� 336
Displaying Routes������������������������������������������������������������������������������������������������������������������������������� 339

Summary���������������������������������������������������������������������������������������������������������������������� 341
■Chapter

9: Background Tasks���������������������������������������������������������������������������� 343
Before You Begin���������������������������������������������������������������������������������������������������������� 344
Running in the Background������������������������������������������������������������������������������������������ 350
Defining a Task to Run in the Background������������������������������������������������������������������������������������������ 353
Registering a Background Task���������������������������������������������������������������������������������������������������������� 354
Implementing Triggers������������������������������������������������������������������������������������������������������������������������ 357
Reporting Progress����������������������������������������������������������������������������������������������������������������������������� 363
Conditions������������������������������������������������������������������������������������������������������������������������������������������� 365
More on Triggers��������������������������������������������������������������������������������������������������������������������������������� 366
Revisiting Background Audio�������������������������������������������������������������������������������������������������������������� 368
Monitoring the Contact Store�������������������������������������������������������������������������������������������������������������� 372

Background Transfers�������������������������������������������������������������������������������������������������� 376
Summary���������������������������������������������������������������������������������������������������������������������� 376
■Chapter


10: Shell Integration���������������������������������������������������������������������������� 377
Launch Conditions�������������������������������������������������������������������������������������������������������� 377
Windowing������������������������������������������������������������������������������������������������������������������� 381
Opening New Windows����������������������������������������������������������������������������������������������������������������������� 382
Sizing Windows���������������������������������������������������������������������������������������������������������������������������������� 386
TitleBar����������������������������������������������������������������������������������������������������������������������������������������������� 388
xi

www.it-ebooks.info


■ Contents

Lock Screen������������������������������������������������������������������������������������������������������������������ 393
The Notification Process���������������������������������������������������������������������������������������������� 395
Toast Notifications�������������������������������������������������������������������������������������������������������� 396
Generating Toast Notifications������������������������������������������������������������������������������������������������������������ 397
Adding Images to Toasts��������������������������������������������������������������������������������������������������������������������� 400
Adding Sound to Toasts���������������������������������������������������������������������������������������������������������������������� 401
Scheduling Toasts������������������������������������������������������������������������������������������������������������������������������� 403
Responding to Toast Notification Events�������������������������������������������������������������������������������������������� 403
Adaptive Toasts����������������������������������������������������������������������������������������������������������������������������������� 405

Tile Notifications����������������������������������������������������������������������������������������������������������� 411
Generating Tile Notifications��������������������������������������������������������������������������������������������������������������� 412
Presenting Text Content with a Heading��������������������������������������������������������������������������������������������� 414
Text-Only Content������������������������������������������������������������������������������������������������������������������������������� 414
Templates for Summaries������������������������������������������������������������������������������������������������������������������� 415
Creating a Cleaner Template��������������������������������������������������������������������������������������������������������������� 415
Adding Images to Tile Notifications���������������������������������������������������������������������������������������������������� 416

Scheduling Tile Notifications�������������������������������������������������������������������������������������������������������������� 416

Summary���������������������������������������������������������������������������������������������������������������������� 417
■Chapter

11: Communicating Between Apps������������������������������������������������������ 419
Before You Get Started������������������������������������������������������������������������������������������������� 419
Changing the Object Model���������������������������������������������������������������������������������������������������������������� 420
Applying SplitView to ApplicationHostPage���������������������������������������������������������������������������������������� 425

Communicating Through URI Launching���������������������������������������������������������������������� 434
Launching a Specific App������������������������������������������������������������������������������������������������������������������� 438
Launching a URI and Waiting for Results�������������������������������������������������������������������������������������������� 440
Querying URI Support������������������������������������������������������������������������������������������������������������������������� 443

File Launching�������������������������������������������������������������������������������������������������������������� 444
Communicating Through Sharing Files (Shared Storage)�������������������������������������������� 448
Application Services����������������������������������������������������������������������������������������������������� 453
Sharing Data Between the Apps You Created��������������������������������������������������������������� 459
xii

www.it-ebooks.info


■ Contents

Sharing Contracts��������������������������������������������������������������������������������������������������������� 461
Sharing as a Source��������������������������������������������������������������������������������������������������������������������������� 462
Sharing as a Target����������������������������������������������������������������������������������������������������������������������������� 465


Summary���������������������������������������������������������������������������������������������������������������������� 469
■Chapter

12: Leveraging Cortana and Speech���������������������������������������������������� 471
Making Your Program Speak���������������������������������������������������������������������������������������� 472
Using SSML���������������������������������������������������������������������������������������������������������������������������������������� 474

Recognizing Speech����������������������������������������������������������������������������������������������������� 477
Constraints and Grammars����������������������������������������������������������������������������������������������������������������� 480

Using Cortana��������������������������������������������������������������������������������������������������������������� 483
Setting Up for Cortana������������������������������������������������������������������������������������������������������������������������ 484
Launching Your App in the Foreground with Cortana������������������������������������������������������������������������� 496

Launching Your App in the Background with Cortana�������������������������������������������������� 502
State Management������������������������������������������������������������������������������������������������������� 506
Deep Linking���������������������������������������������������������������������������������������������������������������� 508
Prompting the User������������������������������������������������������������������������������������������������������ 513
Multi-Command Interactions���������������������������������������������������������������������������������������� 515
The Final Command����������������������������������������������������������������������������������������������������� 519
Summary���������������������������������������������������������������������������������������������������������������������� 519
■Chapter

13: App Monetization��������������������������������������������������������������������������� 521
Selling Your App����������������������������������������������������������������������������������������������������������� 522
App Trial Mode������������������������������������������������������������������������������������������������������������������������������������ 524
Licensing Your App (Trial Mode)���������������������������������������������������������������������������������������������������������� 525
Purchasing the App����������������������������������������������������������������������������������������������������������������������������� 532

Selling Within an App��������������������������������������������������������������������������������������������������� 533

Adding In-App Purchasing to an App�������������������������������������������������������������������������������������������������� 534
Implementing In-App Purchasing������������������������������������������������������������������������������������������������������� 535

Summary���������������������������������������������������������������������������������������������������������������������� 542

xiii

www.it-ebooks.info


■ Contents

■Chapter

14: Leveraging Existing Code��������������������������������������������������������������� 543
Sharing Code���������������������������������������������������������������������������������������������������������������� 544
Portable Class Libraries (PCL)�������������������������������������������������������������������������������������� 553
Creating a PCL������������������������������������������������������������������������������������������������������������������������������������ 553

Localhost Access���������������������������������������������������������������������������������������������������������� 557
Summary���������������������������������������������������������������������������������������������������������������������� 562
■Chapter

15: Distributing Universal Apps����������������������������������������������������������� 565
Registering with the Dev Center���������������������������������������������������������������������������������� 565
Creating an App Package��������������������������������������������������������������������������������������������� 568
Side Loading��������������������������������������������������������������������������������������������������������������������������������������� 569
Windows Store Distribution���������������������������������������������������������������������������������������������������������������� 571

Verifying Your App Package������������������������������������������������������������������������������������������ 576

Submitting Your App����������������������������������������������������������������������������������������������������� 577
Naming Your App�������������������������������������������������������������������������������������������������������������������������������� 584
Selling Details������������������������������������������������������������������������������������������������������������������������������������� 586
Advanced Properties��������������������������������������������������������������������������������������������������������������������������� 588

Uploading Your App������������������������������������������������������������������������������������������������������ 590
Description����������������������������������������������������������������������������������������������������������������������������������������� 591
Notes to Testers���������������������������������������������������������������������������������������������������������������������������������� 594

Getting Your App Certified�������������������������������������������������������������������������������������������� 595
Updating Your App�������������������������������������������������������������������������������������������������������� 596
Summary���������������������������������������������������������������������������������������������������������������������� 597
Index��������������������������������������������������������������������������������������������������������������������� 599

xiv

www.it-ebooks.info


About the Authors
Edward Moemeka is an enterprise architect with a career spanning
two decades. His experience in building, integrating, and delivering
high-profile, large-scale applications for clients has made him a known
commodity in the technology field. He is the Principal Architect at
e-builder, a class leader in project management software for large-scale
capital projects. Follow Edward at Twitter handle @moemeka, on YouTube
at www.youtube.com/user/sineofreason, and on Facebook at
www.facebook.com/edwardmoemeka.

Elizabeth Moemeka is a communications specialist whose experience

spans writing, marketing, and project support. She has used her creative
expertise towards designing Windows apps. She blogs on technology and
other subjects of personal interest. She has spent time in many parts of the
United States and currently lives with her husband, two sons, and cat in
Connecticut.

xv

www.it-ebooks.info


About the Technical Reviewers
Fabio Claudio Ferracchiati is a senior consultant and a senior analyst/developer using Microsoft
technologies. He works for Blu Arancio (www.bluarancio.com). He is a Microsoft Certified Solution
Developer for .NET, a Microsoft Certified Application Developer for .NET, a Microsoft Certified Professional,
and a prolific author and technical reviewer. Over the past ten years, he’s written articles for Italian and
international magazines and co-authored more than ten books on a variety of computer topics.
Damien Foggon is a developer, writer, and technical reviewer of cutting-edge technologies and has
contributed to more than 50 books on .NET, C#, Visual Basic, and ASP.NET. He is the co-founder of the
Newcastle-based user group NEBytes (online at www.nebytes.net), is a multiple MCPD in .NET 2.0 onwards,
and can be found online at .

xvii

www.it-ebooks.info


Acknowledgments
We would like to thank Nick Spano, Mike Soranno, John Leum, and Jonner Londono for their help and
support. We would also like to thank the staff at Apress for this opportunity and for putting their faith

in us, with special thanks to Melissa Maldonado, Damien Foggon, and Fabio Claudio Ferracchiati for their
involvement in this process.

xix

www.it-ebooks.info


Introduction
Welcome to Real World App Development for Windows 10, your step-by-step, one-stop guide to going from a
great idea to a published app in the Windows desktop and mobile platforms. Windows 10, already a hugely
successful implementation of the venerable Microsoft operating system, offers great potential for effective
and innovative apps.

Who This Book Is For
Maybe you’ve been a lifelong fan and follower of Microsoft. Maybe you’re taking a look at the Windows OS
for the first time. Either way, Windows 10 and, specifically, its dynamic environment for app inclusion in the
overlapping spheres of desktop and mobile, lends itself to an expansive environment, replete with creative
potential for developers and practical potential for users.
If you have a passion for cutting-edge technology, a working knowledge of HTML, and creative
ideas about how we can better interface with technological tools daily in our lives, this book is for you.
The following chapters hold a rich store of knowledge to get you on your way creating, developing, and
publishing apps in the Windows 10 platform. The approach of this book is to lay out the steps towards app
publication clearly, concisely, and systematically to make the process as simple as possible.

What This Book Covers
While this book covers an end-to-end explanation of app development in the Windows 10 environment,
its reach is more comprehensive than this. First, we begin with a thorough introduction to the Windows 10
environment. Following the app development process, we expand into the ins and outs of the submission
process, even touching on monetizing your app and making you app successful in other respects as well. As

the book takes you through app development, instruction is given for every step of the process. In addition,
the instruction relies heavily upon samples in which you are also given the code to build, thus making the
text an interactive, hands-on process. While you can utilize this book as a desktop reference text, referring
to chapters, sections, and topics as needed, we believe it is worthwhile to read front-to-back; by building
the examples in order you’ll build a thorough knowledge of exactly how to create a fully realized app in the
Windows 10 platform in the process.
The pages ahead contain a comprehensive curriculum that, with a solid foundation in technology and
a working knowledge of Windows 10, will answer all the questions you will come across as your build you
own Windows app. So sit back, crack open the book, and get on your way to creating your very own Windows
platform application!
All content for this book can be downloaded from www.apress.com/9781484214503?gtmf=s.

xxi

www.it-ebooks.info


Chapter 1

The Windows 10 Ethos and
Environment
RIP Windows 8
In July, 2013, Windows 8, an operating system as innovative as it is disjointed, turned the computing
world upside down with a boldly reimagined user experience that focused on touch as a first-class citizen.
Windows 8 introduced us to the start screen, the charms bar, tiles, and dedicated full screen applications.
For many, this was a dream come true, a fast and fluid version of Windows with far fewer hardware
requirements, a beautiful touch-first user interface complete with fluid, intuitive edge-driven interaction
patterns, and access to the legacy desktop when needed for running old-school Win32 applications. Despite
the forward progress Microsoft made with Windows 8, however, it was widely panned as an operating system
fit only for the schizophrenic; see Figure 1-1.


Figure 1-1.  Windows 8 Start screen

1

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

Many found that although it offered great innovations, the lack of consistency between the two
operating environments running within the overarching OS made using it quite confusing at times. Users
would open files that would launch them into a full screen experience in one situation, while other file
types would jarringly bring them out of the full screen immersive experience into the desktop! The touchfirst nature of Windows 8 was another common complaint, as it appeared that Microsoft had foregone any
consideration for users working with a mouse and keyboard. Indeed, what seemed easy to do with the finger
proved laborious when working with a Windows 8 device that had no touch interface included. Finally, and
probably most importantly, the choice to do away from the Start menu proved to be too much of a deviation
from what users were comfortable with.

■ Note There are some third-party applications that can be purchased to enhance the Windows 8 experience
with a Start menu, such as Start8 from Stardock.
The arguments from all sides were the same. Customers wanted input into the decision-making process
for features of the Microsoft operating system; they had largely been shunned by Microsoft all through the
Windows 8 development cycle despite months of clamoring for the inclusion of a Start menu feature and
windowed Modern apps running on the desktop (after all, the OS *was* called “Windows”). Despite all the
metrics Microsoft consistently threw at Windows 7 users who wanted to see a Start menu, customers still felt
quite strongly that a Start menu was needed–or they at least wanted the freedom to pick one option (having
a Start menu) versus the other (using the Start screen).
Windowed applications were also a critical ask from customers and a reason behind Windows 8 not
being fully embraced. The shift to full screen applications that Windows 8 introduced seemed to most

like a gigantic step backwards from all the innovations of the Windows-of-old genre. Microsoft, it seemed,
had ventured too far towards the tablet world for really no reason at all. Tablet operating systems had that
limitation because the hardware they ran on (screen, chip, memory) had that limitation, not because it was
an innovation on user experience. It worked for phones because the screens were too small for multitasking.
It worked for tablets because there was hardly enough stored energy, memory, and processing power to keep
things running the way windowed applications required them to be kept running. Full-fledged workstations
and laptops had no such constraints: they had large enough screens to do multiple things at one time, they
had plenty of processing power, and they were not intended to be used in full fidelity mobility scenarios like
tablets and phones are.
What Microsoft needed with its next operating system endeavor was an OS that continued with the
powerful new innovations they had introduced with Windows 8 while dialing down the tablet-focused
mindset. They needed an operating system that was able to smoothly merge both operating environments:
the modern, touch-friendly, secure operating environment with the legacy tools and features of the
Windows 7 paradigm. Windows 10 unites these two worlds seamlessly into one while continuing on the path
of innovation that Windows 8 began.

■ Note Microsoft published a comprehensive blog outlining the details or the rationale behind many of the
Windows 8 features. One blog post highlights the complex research that led Microsoft to using the Start screen
in Windows 8 in favor of the old Start menu. If you would like to find out more about this, head to the Building
Windows 8 blog at The specific blog post that walks through the evolution of
the Windows Start screen can be found at />evolving-the-start-menu.aspx.

2

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

Hello, Windows 10

Welcome to the brave new world of Windows 10! In this introductory chapter, you will take a walk through
yet another “new user interface” for Windows that might appear familiar to some and drastically, even
jarringly, different to others. If you are coming from Windows 7 or anything previous, Windows 10 will seem
like a major upgrade to you, but one that you will quite possibly cognitively recognize from the standpoint
of usability and user experience. Unfortunately for Windows 8/8.1 users, Windows has once again been
reimagined, but this time for the better.
An interesting thing happened between the end of development of Windows 8/8.1 and the beginning
of Windows 10 development. For whatever reason, Microsoft finally decided that perhaps their customers
knew a thing or two about how they would like to use the operating system, so Microsoft began listening!
As a result, Windows 10 reintroduces the Start menu as a combination of both the original Windows 7 Start
menu and the Windows 8 Start screen, adds support for windowed applications, merges the operating
environments, standardizing on the continued use of the desktop, and even adds back transparency, Aero
blurs, and depth to the operating system! And it doesn’t stop there. Windows 10 continues with the legacy
of innovation initiated with Windows 8/8.1 by building out a one-OS architecture which not only allows
Windows 10 to be installed on a wide variety of devices, but also allows Modern apps built to target
Windows 10 to run on any of the many devices that Windows 10 can run on. Figure 1-2 shows the
reincarnated Start menu in Windows 10.

Figure 1-2.  Windows 10 Start menu

■ Note  Presently, Windows 10 is the only operating system that can run on an IOT device, phone, tablet,
workstation, Surface Hub, HoloLense, and even Xbox.
3

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

The new Windows 10 Start menu functions basically the same as the Start screen from Windows 8/8.1

but does not automatically take up the full screen. Note that the Start menu is transparent with a blur applied
to it, similar to the aero look from Windows Vista/7. Figure 1-2 also shows a number of Modern apps running
on the desktop. As can be seen from the image, these apps run within a Windows 10 window, meaning they
can be treated like any other system window. One of the shortcomings of Windows 8/8.1 was in the forcing
of drastic paradigm shifts onto the masses without providing many ways to fall back to previous approaches.
Indeed, this author recalls using the “Windows 2000 theme” on Windows XP for a good three years following
its release before finally making a switch to the standard XP theme. In fact, I don’t believe I would have ever
purchased a Windows XP license had the option to continue to use an old approach not been available to me.
The evidence of an awareness of this resistance to change is clear in Windows 10 in a number of ways,
but two major inclusions in the operating system drive this mindset home. Firstly, although the legacy
charms bar is not present in this release, Modern apps that were written using the Windows 8 SDK can still
access the bar through the app’s hamburger menu (located on the top left corner of the app title bar). This
allows apps that were built in the previous application development model to be available for use within
Windows 10 without the need for recompilation. Figure 1-3 shows the Windows 8 charms bar as displayed
when a user activates it by swiping in from the right edge of their tablet. From the top, the icons will invoke
the search experience, sharing, launch the Start screen, launch interactions with devices, or open the
Settings pane. Apps that were developed with Windows 8 in mind would undoubtedly be dependent on any
one of these features to function as intended. It is safe to say that making sure that all of the popular Modern
apps worked with the new OS was a good idea.

Figure 1-3.  The Windows 8 charms bar in all its glory

■ Note Mouse and keyboard gestures were also available for accessing the Windows 8 charms bar.
Discussion on these is beyond the scope of this book but can be found in Chapter 1 of Real World Windows 8
App Development with JavaScript (Apress).

4

www.it-ebooks.info



Chapter 1 ■ The Windows 10 Ethos and Environment

Not only would users be frustrated by the presumed failure of the operating system to run their apps,
but the developers of the given apps would be frustrated by having to, at the very least, recompile and
republish their perfectly fine Windows 8 Modern apps to the Windows 10 platform. Having the charms bar
accessible when running these apps alleviates this. It provides a stop-gap solution to the software upgrade
problem so developers can take their time and republish to the Windows 10 platform when they have the
bandwidth to so. Figure 1-4 shows a Windows 8 Modern app running on Windows 10. Note that the charms
bar now appears within the app instead of as a fly-out overlay to the right of the screen. Also note that only
three of the original five charms are available.

Figure 1-4.  The Windows 8 charms bar now shows within the Windows 8 Modern app hamburger menu
when running on Windows 10
The second major evidence of an awareness of backwards compatibility is the inclusion of a “Tablet
Mode” in Windows 10 across all workstation form factors. Tablet Mode brings your Windows 10 device back
in line with the Windows 8 user experience by locking the user into the same single-full-screen-app-at-atime model that Windows 8/8.1 utilized. Figure 1-5 shows a desktop in Tablet Mode. Note that the taskbar
has been cleared of any running items and that no taskbar shortcuts are present. In Tablet Mode, they are
removed to streamline the user experience, but many of these behaviors can be modified through various
settings in the operating system.

5

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

Figure 1-5.  Windows 10 Start screen (Tablet Mode)


6

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

In our last book, Real World Windows 8 App Development with JavaScript, we claimed that Windows 8
was a hugely significant opportunity for developers. Windows 10 is a continuation, an expansion, on this vast
realm of possibilities. Not only does Windows 10 allow you to capitalize on the billion plus devices that will
be running the operating system within the next three years, it also allows those who have built Windows 8
Modern apps to benefit from Windows 10 with literally no additional work. Windows 10 allows you to
develop for it not only using a diverse set of languages like C#, JavaScript, and C++, but also allows iOS and
Android applications to be cross-compiled to it so that they run natively in the Windows 10 environment,
no emulation needed. This book explores the languages and technologies that can be used to build modern
Windows 10 apps, and how you as a Windows 10 developer can use them to build powerful and immersive
Windows 10 applications and experiences.

A Not-So-Brief Introduction
Now that we have given a brief, high-level overview of Windows 10, its driving principles (as we understand
them to be), and how it matches up to and exceeds on the promise of Windows 8, it is important to provide
an introduction to Windows 10 from a developer’s perspective, specifically focusing on how Modern apps
work and are managed by the system. The discussion isn’t exhaustive, because the subject could probably
span multiple books, but it should provide you with a baseline of information in order to understand the
basics of Windows 10 and Windows 10 app development using the Windows SDK and Runtime.
For the purpose of explanation, let’s walk through the Windows 10 UI artifacts, not because you don’t
already understand how Windows works, but for those of you who may not yet have access to the operating
system. The Windows 10 shell has taken the Windows 8 “digital reverse mullet” theme (party time in the
front, and good old-fashioned business behind that) and converged it into a single user experience across
all application types. Whether they be legacy Win32 applications, Windows 8 Modern apps, or Windows 10

Universal Windows Platform apps, the user experience is the same, save a few nuances.

■ Note As you’ve already seen, Windows 8 Modern apps running on Windows 10 have an additional title bar
item, a hamburger menu at the top left of the window can be used to access the Search, Share, and Settings
charms, and the Modern app’s command bars.
At first glimpse, in Windows 10 you should see the good old Windows desktop with what will appear
to you as a well-overdue user interface touch up. Unless you are on a device that has been specifically
earmarked by the manufacturer as a tablet, the default experience for a laptop is to take you to the desktop
once signed in. Figure 1-6 shows the default Windows 10 desktop with the Start menu activated.

7

www.it-ebooks.info


Chapter 1 ■ The Windows 10 Ethos and Environment

Figure 1-6.  Windows 10 Desktop with Start menu showing
The new Windows 10 Start menu, which for the most part is the Windows 8 start screen with a few
additional capabilities (first and foremost being that it no longer needs to run exclusively in full screen
mode), continues to serve as a powerful launch pad for applications. In Figure 1-6, the colored rectangles
with images in them are a combo launch-point for applications. These magical rectangular surfaces are
commonly referred to as live tiles and combine the application shortcut, particularly the version of the
shortcut you might find on your Windows desktop, with the representation of the notification mechanism
of your applications, found in the system tray area. Figure 1-7 shows two states of the Calendar application
live tile. The image to the left is the default state; when a meeting is approaching, the tile takes on a different
appearance (right).

Figure 1-7.  Two states of a Windows 10 Modern app tile
Let’s take a real world case where live tiles can consolidate these kinds of functions. Skype, for instance,

may have a system tray icon that changes appearance when it switches from online to offline, a beautiful
shortcut on the Windows desktop. The Windows 10 live tile encapsulates those two functions in one.
Through the live tile, you can of course launch the application, but as shown in Figure 1-7 tiles can also
display notifications based on things happening in the application or even things happening while the
application is not running.
Not all tiles on the Start screen are live tiles. Legacy applications such as Visual Studio, Microsoft Word,
and Adobe Photoshop can also appear on the Start screen as tiles, but these tiles aren’t “live;” they don’t
possess the ability to present dynamic content on their surface. Legacy Windows application tiles function
more or less like the application icons of old (we say “more or less” because Windows 10 exposes some
shortcut features to these sorts of tiles that follow patterns similar to their live alternatives, such as being
able to launch in administrator mode). Applications built using the new paradigm, which can express

8

www.it-ebooks.info


×