Welcome to the Sands of MAUI—newsletter-style issues dedicated to bringing together latest .NET MAUI content relevant to developers.
A particle of sand—tiny and innocuous. But put a lot of sand particles together and we have something big—a force to reckon with. It is the smallest grains of sand that often add up to form massive beaches, dunes and deserts.
Most .NET developers are excited with .NET Multi-platform App UI (MAUI)—the evolution of modern .NET cross-platform developer experience. Going forward, developers should have much more confidence in the technology stack and tools as .NET MAUI empowers native cross-platform solutions on both mobile and desktop.
While it may take a long flight to reach the sands of MAUI island, developer excitement around .NET MAUI is quite palpable in all the shared content. Like the grains of sand, every piece of news/article/documentation/video/tutorial/livestream contributes towards developer knowledge in .NET MAUI and we grow a community/ecosystem willing to learn and help.
Sands of MAUI is a humble attempt to collect all the .NET MAUI awesomeness in one place. Here's what is noteworthy for the week of February 20, 2023:
New to developing apps with .NET MAUI and want to learn some quick tricks? While documentation is always the source of truth, developers may miss real-world nuances—the "how do I do this?" type of knowledge. Leomaris Reyes is looking to make learning fun with short .NET MAUI learning challenges—the fourth challenge is all about the DataGrid in Telerik UI for .NET MAUI.
The goal with the .NET MAUI challenges is to focus on simple but specific important topics—developers will only need a few minutes to learn something new. Each challenge will have a statement to tickle developer brains, followed by a few options for the correct solution and study resources to delve deeper into the topic.
For the fourth .NET MAUI challenge, Leomaris brings up using the popular DateGrid in Telerik UI for .NET MAUI. The DateGrid allows flexibility to bind UI to a variety of data sources—the challenge needs developers to know how the DataGrid renders columns and proposes three possible solutions, only one of which offers the correct mix.
Go ahead, .NET MAUI developers—challenge yourself and learn to dig a little deeper.
Many developers in their indie apps or enterprise workflows might need something specific in .NET MAUI apps—working with files. Working with device file systems can be a hassle, especially in a cross-platform codebase like .NET MAUI—developers want easy abstraction and to not have to deal with platform-specific nuances. There is an easy solution now with .NET MAUI Community Toolkit and Gerald Versluis produced a video—saving files with the .NET MAUI FileSaver.
As usual, Gerald starts with the default empty .NET MAUI templated project and brings in the .NET MAUI Community Toolkit NuGet package along with proper initialization. The new FileSaver functionality can be registered and brought in through dependency injection—the default cross-platform implementation then becomes available to developers.
Once ready, the FileSaver offers developers a rich cross-platform API—at its most basic, it can take a memory stream and write out a named file at a specific/chosen system path. Gerald showcases the happy path, but is also quick to point out the richness/nuances of the FileSaver API—working with files with a cross-platform abstraction should now be easy for .NET MAUI developers.
The Xamarin ecosystem was not just about Xamarin.Forms—things started with Xamarin.iOS and Xamarin.Android and plenty of folks wrote native apps with a shared C# codebase. While Xamarin.Forms evolved to .NET MAUI with support for mobile/desktop, Xamarin.iOS and Xamarin.Android essentially got absorbed into core .NET—they're just called .NET for iOS/Android.
For developers in Xamarin land, this may be a great time to consider modernization, and James Montemagno wrote up a definitive guide—tips and tricks on upgrading Xamarin.iOS/Xamarin.Android to .NET for iOS/Android.
The migration path from Xamarin.iOS/Xamarin.Android to .NET for iOS/Android should be relatively simple—developers will gain performance improvements on .NET 6/7, an updated project system, and build enhancements and lots of productivity features. James points out some very relevant tips to make the migration seamless—like analyzing/updating NuGet packages, updating project files and hopefully, working in a separate GitHub branch. As for project dependencies, upgrading from Xamarin.Essentials to .NET MAUI Essentials and updating .NET Standard libraries to .NET 6/7 will allow developers to take advantage of the latest features of .NET/C#.
The .NET/Xamarin teams have worked hard to provide a comprehensive migration guide—developers should find it seamless to modernize from Xamarin.iOS/Xamarin.Android to .NET for iOS/Android.
As developers, nothing beats the learning experience of seeing another expert developer build out a real world complex app right in front of our eyes. Daniel Hindrikes is aiming to do just that—build a real .NET MAUI app from scratch.
In what promises to be an epic series, Daniel is looking to build a Spotify-like app and the second part is up—building a .NET MAUI Playlist Builder app from scratch.
What's a Playlist Builder app without an audacious movie—why not use Spotify APIs? Daniel picks up from where he left off in the first session—once users login, they can be greeted with a landing page with albums/tracks, complete with search capabilities. Along the way, developers get a glimpse of how real .NET MAUI apps are built—Daniel showcases use of .NET MAUI Secure storage, CommunityToolkit.MAUI, CollectionView, Behaviors, TabBar with Shell and app Navigation.
Kudos, Daniel—looking forward to the rest of the app being built out.
Most .NET developers work at a higher abstraction level, with mature frameworks and productivity tools—all of this sits on the foundation of modern .NET. As millions of developers around the world use .NET to build software that runs the world, it is convenient to forget the fundamental building blocks—an open source fast-moving .NET. It is delightful to see the .NET team get back to .NET fundamentals with the first of an epic series of posts—what is .NET and why should developers choose it?
A modern development platform has to strike the balance between low-level capabilities designed for performance/safety, paired with higher-level productivity-focused features. Today's .NET relies on a few pillars—these are foundational pieces that developers take for granted when they build apps on top of .NET.
The core runtime and libraries form the pillars of .NET stack, while C# leads the charge on the language front. C# is a modern, safe and object-oriented programming language that arms developers with everything from high-level productivity features to low-level control. Several other core parts of .NET keep code and the runtime safe—like the Type system, memory management, error handling, concurrency, reflection, Interop and more.
While .NET MAUI paves the way for the future of cross-platform development on mobile/desktop devices, it is comforting to know the foundational pieces .NET are here to provide all the needed support.
That's it for now.
We'll see you next week with more awesome content relevant to .NET MAUI.
Sam Basu is a technologist, author, speaker, Microsoft MVP, gadget-lover and Progress Developer Advocate for Telerik products. With a long developer background, he now spends much of his time advocating modern web/mobile/cloud development platforms on Microsoft/Telerik technology stacks. His spare times call for travel, fast cars, cricket and culinary adventures with the family. You can find him on the internet.
Subscribe to be the first to get our expert-written articles and tutorials for developers!
All fields are required