Ajouter une navigation
Ajouter un menu latéral gauche à l’interface
Créer un nouveau projet WinUI C++
Ouvrir MainWindow.xaml
Remplacer uniquement la section Grid interne par un NavigationView comme ci-dessous (ne pas remplacer l’ensemble du fichier)
<NavigationView x:Name="NavView" PaneDisplayMode="Left">
<NavigationView.MenuItems>
<NavigationViewItem Content="Dashboard" Tag="DashboardPage"
Icon="Account"/>
<NavigationViewItem Content="Account" Tag="AnalyticsPage"
Icon="Add"/>
</NavigationView.MenuItems>
<Frame x:Name="MainFrame"/>
</NavigationView>Langage du code : HTML, XML (xml)

Voici l’affichage après l’exécution du programme

Ajouter une page vide
Créer une page vierge
Faire un clic droit sur le nom du projet → Ajouter un nouvel élément (Add New Item)
Aller dans Visual C++ → WinUI → Modèle de page vide BlankPage.xaml
Modifier la partie Grid de BlankPage.xaml comme suit. On ajoute un TextBlock avec un texte distinct sur chaque page pour les différencier visuellement.
Page et Window sont deux contrôles différents
<Grid>
<TextBlock Text="This is a blank page."
HorizontalAlignment="Center"
VerticalAlignment="Center" FontSize="24"/>
</Grid>Langage du code : C++ (cpp)

Barre de navigation et chargement des pages
Définir la page vierge par défaut pour la fenêtre principale
Configurer le contrôle Frame de la fenêtre principale pour charger par défaut la page vierge créée précédemment
Le Frame est comparable à un iframe en HTML : c’est une zone indépendante destinée à charger et afficher le contenu d’une autre page.
Ouvrir MainWindow.xaml.h
Supprimer l’implémentation du constructeur dans l’en-tête, ne conserver que sa déclaration.

Il doit devenir : MainWindow();

Implémenter le constructeur dans le fichier .cpp correspondant.
#include "pch.h"
#include "MainWindow.xaml.h"
#if __has_include("MainWindow.g.cpp")
#include "MainWindow.g.cpp"
#endif
using namespace winrt;
using namespace Microsoft::UI::Xaml;
#include "BlankPage.xaml.h"
#include <winrt/Windows.UI.Xaml.Interop.h>
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace winrt::App5::implementation
{
// L'implémentation du constructeur est placée dans le fichier cpp pour initialiser l'interface et naviguer en toute sécurité
MainWindow::MainWindow()
{
InitializeComponent();
// Charger et afficher BlankPage dans le Frame
MainFrame().Navigate(xaml_typename<App5::BlankPage>());
}
int32_t MainWindow::MyProperty()
{
throw hresult_not_implemented();
}
void MainWindow::MyProperty(int32_t /* value */)
{
throw hresult_not_implemented();
}
}
Langage du code : HTML, XML (xml)

La fonction xaml_typename nécessite l’inclusion de l’en-tête suivant
#include <winrt/Windows.UI.Xaml.Interop.h>Langage du code : HTML, XML (xml)
La ligne MainFrame().Navigate(xaml_typename()) permet de naviguer vers BlankPage. Au lancement de la fenêtre principale, le conteneur MainFrame à droite affichera cette page vierge.

Configuration du menu latéral gauche et du chargement de page de la fenêtre principale terminée