Eine grundlegendes Beispiel für die Windows-UI-Bibliothek 2 für C++/WinRT (UWP)

Dieses Thema führt durch den Prozess zum Hinzufügen einer grundlegenden Unterstützung für die Windows-UI-Bibliothek (WinUI) zu einem UWP-Projekt für C++/WinRT. Insbesondere befasst sich dieses Thema mit WinUI 2, das für UWP-Apps bestimmt ist. Für Desktop-Apps gibt es WinUI 3. Übrigens ist WinUI selbst in C++/WinRT geschrieben.

Wichtig

Für Desktop-Apps stellt das Windows App SDK die Windows-UI-Bibliothek (WinUI) 3 bereit. WinUI 3 ist nicht für die exemplarische Vorgehensweise in diesem Thema vorgesehen. Diese ist für UWP bestimmt. Siehe auch Migrieren von UWP zum Windows App SDK.

Hinweis

Das Toolkit für die Windows-UI-Bibliothek (WinUI) steht in Form von NuGet-Paketen zur Verfügung, die mithilfe von Visual Studio zu einem vorhandenen oder neuen Projekt hinzugefügt werden können, wie wir in diesem Thema sehen werden. Weitere Hintergrundinformationen sowie Details zu Einrichtung und Unterstützung findest du unter Erste Schritte mit der Windows-UI-Bibliothek.

Erstellen einer leeren App (HelloWinUICppWinRT)

Erstellen Sie in Visual Studio ein neues UWP-Projekt anhand der Projektvorlage Leere App (C++/WinRT). Stelle sicher, dass du die Vorlage (C++/WinRT) und nicht die Vorlage (Universelles Windows) verwendest.

Nenne das neue Projekt HelloWinUICppWinRT und deaktiviere Legen Sie die Projektmappe und das Projekt im selben Verzeichnis ab (damit die Ordnerstruktur mit der exemplarischen Vorgehensweise übereinstimmt).

Installieren des Microsoft.UI.Xaml-NuGet-Pakets

Klicke auf Projekt>NuGet-Pakete verwalten...>Durchsuchen, gib Microsoft.UI.Xaml in das Suchfeld ein, wähle das Element in den Suchergebnissen aus, und klicke dann auf Installieren, um das Paket für das Projekt zu installieren (es wird auch eine Aufforderung zur Zustimmung zu einer Lizenzvereinbarung angezeigt). Installiere nur das Paket Microsoft.UI.Xaml, nicht Microsoft.UI.Xaml.Core.Direct.

Deklarieren von WinUI-Anwendungsressourcen

Öffne App.xaml, und füge das folgende Markup zwischen den vorhandenen öffnenden und schließenden Application-Tags ein.

<Application.Resources>
    <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>
</Application.Resources>

Hinzufügen eines WinUI-Steuerelements zu MainPage

Öffne als Nächstes MainPage.xaml. Im vorhandenen öffnenden Seite-Tag befinden sich bereits einige XML-Namespacedeklarationen. Füge die XML-Namespacedeklaration xmlns:muxc="using:Microsoft.UI.Xaml.Controls" hinzu. Füge dann das folgende Markup zwischen den vorhandenen öffnenden und schließenden Page-Tags ein. Damit wird das vorhandene StackPanel-Element überschrieben.

<muxc:NavigationView PaneTitle="Welcome">
    <TextBlock Text="Hello, World!" VerticalAlignment="Center" HorizontalAlignment="Center" Style="{StaticResource TitleTextBlockStyle}"/>
</muxc:NavigationView>

Bearbeiten Sie „pch.h" nach Bedarf.

Wenn du einem C++/WinRT-Projekt ein NuGet-Paket hinzufügst (z. B. das Paket Microsoft.UI.Xaml, das du zuvor hinzugefügt hast) und das Projekt erstellst, generieren die Tools einen Satz von Projektionsheaderdateien im Ordner \Generated Files\winrt des Projekts. Wenn du die exemplarische Vorgehensweise befolgt hast, besitzt du jetzt einen Ordner \HelloWinUICppWinRT\HelloWinUICppWinRT\Generated Files\winrt. Wenn du diese Headerdateien in das Projekt einbinden möchtest, damit Verweise auf diese neuen Typen aufgelöst werden, kannst du zu deiner vorkompilierten Headerdatei wechseln (normalerweise pch.h) und sie einschließen.

Sie brauchen nur die Überschriften für die von Ihnen verwendeten Typen einzubeziehen. Hier finden Sie jedoch ein Beispiel, in dem alle generierten Headerdateien für das Microsoft.UI.Xaml-Paket einbezogen werden.

// pch.h
...
#include "winrt/Microsoft.UI.Xaml.Automation.Peers.h"
#include "winrt/Microsoft.UI.Xaml.Controls.h"
#include "winrt/Microsoft.UI.Xaml.Controls.Primitives.h"
#include "winrt/Microsoft.UI.Xaml.Media.h"
#include "winrt/Microsoft.UI.Xaml.XamlTypeInfo.h"
...

Bearbeiten von „MainPage.cpp“

Lösche in MainPage.cpp den Code in deiner Implementierung von MainPage::ClickHandler, da sich myButton nicht mehr im XAML-Markup befindet.

Jetzt kannst du das Projekt kompilieren und ausführen.

Simple C++/WinRT Windows UI Library screenshot