Discorver the Third .NET MAUI (Release Candidate) Features!
Tags: csharp, dotnet, beginners, news
Published: 2022-06-28 05:47:00

Microsoft is not letting time pass and continues to keep the focus on .NET MAUI, its .NET platform focused on the creation of cross-platform applications. This time it officially presents the **launch of the** [**third Release Candidate of .NET MAUI**](https://devblogs.microsoft.com/dotnet/dotnet-maui-rc-3/) adding even more new features.

I remind you that Microsoft is already giving official support for these Release Candidates and that you only need to upgrade to the latest version of Visual Studio 2022 to take full advantage of the new features and functionality included.

No more intro, let’s see what’s new in .NET MAUI!

---

## New navigation options

Now navigation in the applications becomes much easier! Microsoft now provides **2 different ways to implement navigation in your applications** developed with .NET MAUI.

The first one is to **use the base navigation page controls** (such as [NavigationPage](https://docs.microsoft.com/es-mx/dotnet/maui/user-interface/pages/navigationpage), [FlyoutPage](https://docs.microsoft.com/es-mx/dotnet/maui/user-interface/pages/tabbedpage) or [TabbedPage](https://docs.microsoft.com/es-mx/dotnet/maui/user-interface/pages/tabbedpage)).

The second one (and the one that Microsoft recommends because it is more powerful) is to **start and run the application in Shell**. This way you will be able to have more accurate and optimized details for the possible patterns in both desktop and mobile .NET MAUI applications.

This second option is the one recommended by Microsoft to **start directly with an optimized browsing experience for any platform**. However, if at any time you feel like changing the default optimized navigation for much more specific custom controls, you can do it without any problem!

Here is a small [Microsoft example](https://devblogs.microsoft.com/dotnet/dotnet-maui-rc-3/#focus-on-navigation) of what it would look like:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sbyfeu32gw8tu7fr4yem.png)
 

---

## ShellContent

For those who don’t know, `ShellContent` is a [Xamarin.Forms](https://docs.microsoft.com/en-us/xamarin/xamarin-forms/) class that now with .NET MAUI allows you to **add a wide variety of** [**_flyout_**](https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/flyoutpage) **customizations** such as customizing the background, backdrop or even the header, footer or the entire content.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2jleluxuqsc5ybnrmaat.png)
 

This also allows you to **improve navigation through URI paths** allowing you **to improve performance** at application startup time loading pages only when required using data templates.

Again, Microsoft leaves us an [example](https://devblogs.microsoft.com/dotnet/dotnet-maui-rc-3/#focus-on-navigation):

```csharp
<FlyoutItem Title="Home" FlyoutIcon="home.png">
    <ShellContent ...>
</FlyoutItem>

<FlyoutItem Title="Items" FlyoutIcon="store.png">
    <ShellContent ...>
</FlyoutItem>
```

And the result would be as follows:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bqmlwzycqybt5gihqfhz.png)


---

## Route customization

Declaring and executing new routes **is now much easier.** [According to Microsoft](https://devblogs.microsoft.com/dotnet/dotnet-maui-rc-3/#focus-on-navigation), if we need navigation to deeper pages, we just have to declare them and navigate by URI with the possibility of passing parameters.

-   **Declaring a new route:**

```csharp
Routing.RegisterRoute(nameof(SettingsPage), typeof(SettingsPage));
```

- **Executing a route:**

```csharp
await Shell.Current.GoToAsync(nameof(SettingsPage));
```

- **Passing parameters**

```csharp
await Shell.Current.GoToAsync($"{nameof(SettingsPage)}?setting=appearance");
```

- **Receiving parameters**

```csharp
[QueryProperty(nameof(SelectedSubSection), "setting")]
public partial class TipsPage : ContentPage
{
    ...
    public string SelectedSubSection { get;set;}
    ...
}
```

---

Remember that if you want to know in depth all the new features and innovations, I recommend you to consult the original Microsoft source: [.NET MAUI RC3](https://devblogs.microsoft.com/dotnet/dotnet-maui-rc-3/)