29,99 €
WinUI 3 takes a whole new approach to delivering Windows UI components and controls and has the ability to deliver the same features across multiple versions of Windows. Learn WinUI 3 is a comprehensive introduction to WinUI and Windows apps for anyone who is new to WinUI and XAML applications.
This updated second edition begins by helping you get to grips with the latest features in WinUI and shows you how XAML is used in UI development. The next set of chapters will help you set up a new Visual Studio environment, develop a new desktop project, incorporate the Model-View-ViewModel (MVVM) pattern in a WinUI project, and develop unit tests for ViewModel commands. Next, you’ll cover the basics of data access from WinUI projects with a step-by-step approach. As you advance, you’ll discover how to leverage the Fluent Design System to design beautiful WinUI applications. You’ll also explore the contents and capabilities of the Windows Community Toolkit and learn how to create cross-platform apps with markup and code from your project using Uno Platform. The concluding chapters will teach you how to build, debug, and deploy apps to the Microsoft Store.
By the end of this book, you’ll have learned how to build WinUI applications from scratch and how to modernize existing desktop apps using WinUI 3 and the Windows App SDK.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Veröffentlichungsjahr: 2023
Learn WinUI 3
Leverage WinUI and the Windows App SDK to create modern Windows applications with C# and XAML
Alvin Ashcraft
Copyright © 2023 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
Group Product Manager: Kunal Sawant
Publishing Product Manager: Teny Thomas
Book Project Manager: Prajakta Naik
Senior Editor: Ruvika Rao
Technical Editor: Maran Fernandes
Copy Editor: Safis Editing
Proofreader: Safis Editing
Indexer: Tejal Daruwale Soni
Production Designer: Joshua Misquitta
DevRel Marketing Coordinator: Sonia Chauhan
First published: March 2021
Second edition: October 2023
Production reference: 1121023
Published by Packt Publishing Ltd.
Grosvenor House
11 St Paul’s Square
Birmingham
B3 1RB, UK
ISBN 978-1-80512-006-3
www.packtpub.com
To my wife, Stelene, for her love and her continued support in our life together. I’m looking forward to the journey ahead of us. To my three daughters for working hard and growing into amazing, talented young women. I can’t wait to see where life takes you all.
– Alvin Ashcraft
Alvin Ashcraft is a senior content developer at Microsoft, working on the Windows developer documentation team on Microsoft Learn, with a focus on the Windows App SDK, .NET MAUI, Win32, and other desktop application technologies. Prior to this, Alvin spent over 25 years as a software developer and architect, most recently at Allscripts, a global healthcare software company, delivering electronic health record (EHR) software to healthcare systems across the world. He is the author of two previous books for Packt, the first edition of Learn WinUI 3 and Parallel Programming and Concurrency with C# 10 and .NET 6.
I want to thank my family – especially my wife, Stelene, and my daughters – for supporting me in my writing journey, which has become my new career.
Peter Foot is a Windows and IoT consultant at In The Hand Ltd, where he handcrafts apps and APIs for mobile and IoT devices. Peter has over 20 years’ experience with .NET and Windows development, from the simple Pocket PC to the rich experiences of WinUI.
Peter has been awarded the Microsoft Most Valuable Professional (MVP) since 2003 for his involvement in the Microsoft .NET and Windows developer communities. Alongside involvement in other open source projects, Peter created and maintains the 32feet.NET library, which is a cross-platform .NET API for Bluetooth and other personal area networking technologies. Peter co-authored Microsoft Mobile Development Handbook and has written a host of technical articles and blog posts.
WinUI 3 is the newest desktop UI framework for Windows application development. It is part of Microsoft’s Windows App SDK, providing developers with the tools to build beautiful apps with the Fluent Design System. This book will quickly get you up to speed with WinUI to build new Windows applications and to build apps across platforms with technologies such as Blazor and Uno Platform.
The book begins by exploring the history of Windows UI development frameworks to gain an understanding of how earlier frameworks influenced WinUI as it exists today. It covers the basics of XAML-based UI development and explores the controls available in WinUI before moving on to an examination of patterns and best practices for WinUI developers. To help reinforce these concepts, the early chapters in the book build practical skills by creating an application to organize a collection of books, music, and movies. Each chapter enhances the application, with new controls and concepts discussed.
Later chapters in the book explore how developers can leverage their WinUI knowledge to leverage open source toolkits, integrate web content in Windows apps, and migrate WinUI apps to Android, iOS, and the web. The book finishes by teaching some essential Visual Studio debugging techniques and discussing app deployment options to get your apps in the hands of consumers and enterprise users. At the end of every chapter, I've included a series of questions for you to attempt on your own, enabling you to gauge your level of understanding. Learn how WinUI can help you build and deploy modern, robust applications!
This book is for anyone who wants to develop Windows applications with a modern user experience (UX). If you are familiar with Windows Forms, UWP, or WPF, and are looking to update your knowledge of Windows development or modernize existing apps, this book is for you. If you are just learning .NET development, you can take advantage of this book to learn the basics of XAML development in parallel with your C# and .NET journey.
Chapter 1, Introduction to WinUI, examines the history of UI frameworks in Windows and the origins of WinUI, and you will create your first WinUI 3 project in Visual Studio.
Chapter 2, Configuring the Development Environment and Creating the Project, explains how to install and configure Visual Studio for WinUI development, the basics of XAML and C#, and kicks off the hands-on with a project that will be enhanced throughout the book.
Chapter 3, MVVM for Maintainability and Testability, introduces the basics of Model-View-ViewModel (MVVM) pattern, one of the most important design patterns when building XAML-based applications.
Chapter 4, Advanced MVVM Concepts, builds on the basics you learned about the MVVM pattern in WinUI apps to handle more advanced techniques. You’ll learn how to keep components loosely coupled and testable when adding new dependencies to your projects.
Chapter 5, Exploring WinUI Controls, explores some of the many controls and APIs that WinUI offers for developers building Windows applications. This chapter explores the brand-new controls and updated controls that were previously available in WinUI 2 and UWP.
Chapter 6, Leveraging Data and Services, looks at managing data, a core part of software development. This chapter covers some key concepts of data management, including state management and the service locator pattern.
Chapter 7, Fluent Design System for Windows Applications, explains the tenets of Microsoft’s Fluent Design System and how to implement them in your WinUI applications.
Chapter 8, Adding Windows Notifications to WinUI Applications, covers how to leverage the Windows App SDK to support push notifications and app notifications in your WinUI applications.
Chapter 9, Enhancing Applications with the Windows Community Toolkits, introduces the Windows Community Toolkit and the .NET Community Toolkit – collections of open source libraries for Windows developers. You will learn how to leverage the controls and helpers from the toolkits in your WinUI projects.
Chapter 10, Accelerating App Development with Template Studio, shows how to leverage Template Studio to create a new WinUI project, which can be a daunting task, built on the best Windows development patterns and practices.
Chapter 11, Debugging WinUI Applications with Visual Studio, shows how to leverage the XAML debugging tools in Visual Studio to track down pesky bugs in your WinUI project – good debugging skills are essential for developers.
Chapter 12, Hosting a Blazor Application in WinUI, looks at the WebView2 control in WinUI and using it to host a Blazor application deployed to the cloud from inside your Windows application.
Chapter 13, Take Your App Cross-Platform with Uno Platform, explains how to migrate a WinUI project to Uno Platform, which allows developers to write XAML and C# code in a single code base and run it on any platform.
Chapter 14, Packaging and Deploying WinUI Applications, explores some of the multiple options WinUI developers have for packaging and deploying WinUI applications, looking at deploying through the Microsoft Store, WinGet, and side-loading apps.
If you are familiar with Windows Forms, .NET MAUI, UWP, or WPF and are looking to enhance your knowledge of Windows development or modernize existing apps, you will find this book useful. Hands-on experience with C# and .NET is expected but no prior knowledge of WinUI is required.
Software/hardware covered in the book
Operating system requirements
WinUI 3
Windows 10 version 1809 or later or Windows 11
C#
Windows, macOS, or Linux
.NET 7
Windows, macOS, or Linux
Visual Studio 2022
Windows 10 or 11
Blazor
Windows, macOS, or Linux
Uno Platform
Windows, macOS, or Linux
The book covers how to get started with WinUI development, but you should have Visual Studio and .NET installed. Follow the instructions on Microsoft Learn: https://learn.microsoft.com/visualstudio/install/install-visual-studio.
If you are using the digital version of this book, we advise you to type the code yourself or access the code from the book’s GitHub repository (a link is available in the next section). Doing so will help you avoid any potential errors related to the copying and pasting of code.
After you read this book, you can continue your Windows development journey by diving deeper into the documentation and samples on Microsoft Learn: https://learn.microsoft.com/windows/apps/.
You can download the example code files for this book from GitHub at https://github.com/PacktPublishing/Learn-WinUI-3-Second-Edition. If there’s an update to the code, it will be updated in the GitHub repository.
We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
There are a number of text conventions used throughout this book.
Code in text: Indicates code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles. Here is an example: “In INavigationService, you can update the namespace to UnoMediaCollection.Interfaces and remove the using System; statement.”
A block of code is set as follows:
using UnoMediaCollection.Enums; using UnoMediaCollection.Interfaces; using UnoMediaCollection.Model;When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
using UnoMediaCollection.Enums; namespace UnoMediaCollection.ModelAny command-line input or output is written as follows:
$ mkdir css $ cd cssBold: Indicates a new term, an important word, or words that you see onscreen. For instance, words in menus or dialog boxes appear in bold. Here is an example: “Right-click the Enums folder and select Add | Existing Item.”
Tips or important notes
Appear like this.
Feedback from our readers is always welcome.
General feedback: If you have questions about any aspect of this book, email us at [email protected] and mention the book title in the subject of your message.
Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/support/errata and fill in the form.
Piracy: If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at [email protected] with a link to the material.
If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com.
Once you’ve read Automate Testing for Power Apps, we’d love to hear your thoughts! Please click here to go straight to the Amazon review page for this book and share your feedback.
Your review is important to us and the tech community and will help us make sure we’re delivering excellent quality content.
Thanks for purchasing this book!
Do you like to read on the go but are unable to carry your print books everywhere?
Is your eBook purchase not compatible with the device of your choice?
Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost.
Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical books directly into your application.
The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content in your inbox daily
Follow these simple steps to get the benefits:
Scan the QR code or visit the link belowhttps://packt.link/free-ebook/9781805120063
Submit your proof of purchaseThat’s it! We’ll send your free PDF and other benefits to your email directlyWinUI 3 is Microsoft’s latest UI framework for Windows developers. This section will start by exploring the recent history of XAML and Windows UI frameworks and introduce you to WinUI. Throughout the chapters of this section, you will learn about WinUI concepts by building a simple project from scratch and adding controls and features, by following design patterns and best practices. These patterns and practices include the Model-View-ViewModel (MVVM) design pattern, building loosely coupled, testable C# classes, and using dependency injection (DI) to inject service dependencies into the application components.
This part has the following chapters:
Chapter 1, Introduction to WinUIChapter 2, Configuring the Development Environment and Creating the ProjectChapter 3, MVVM for Maintainability and TestabilityChapter 4, Advanced MVVM ConceptsChapter 5, Exploring WinUI ControlsChapter 6, Leveraging Data and Services