Базовый пример библиотеки пользовательского интерфейса Windows 2 для C++/WinRT (UWP)

Из этого раздела вы узнаете, как включить базовую поддержку библиотеки пользовательского интерфейса Windows (WinUI) в проекте C++/WinRT UWP. В частности, в этом разделе рассматривается библиотека WinUI 2, которая предназначена для приложений UWP. Для классических приложений предназначена библиотека WinUI 3. Библиотека WinUI реализована на C++/WinRT.

Внимание

Для классических приложений пакет SDK для приложений Windows предоставляет библиотеку пользовательского интерфейса Windows (WinUI) 3. В этом разделе рассматривается не она, а библиотека для UWP. Вы также можете ознакомиться со статьей Миграция из UWP в пакет SDK для приложений Windows.

Примечание.

Набор средств библиотеки пользовательского интерфейса Windows (WinUI) доступен в виде пакетов NuGet. Их можно добавить в любой существующий или новый проект с помощью Visual Studio, как показано ниже. См. подробнее о настройке и использовании в руководстве по началу работы с библиотекой пользовательского интерфейса Windows.

Создание пустого приложения (HelloWinUICppWinRT)

В Visual Studio создайте проект UWP с помощью шаблона проекта Пустое приложение (C++/WinRT). Убедитесь, что вы используете шаблон (C++/WinRT), а не (Универсальное приложение для Windows).

Задайте для нового проекта имя HelloWinUICppWinRT и (чтобы структура папок соответствовала структуре, приведенной в руководстве) снимите флажок Поместить решение и проект в одном каталоге.

Установка пакета Microsoft.UI.Xaml NuGet

Щелкните Проект>Управление пакетами NuGet Packages...>Обзор, введите или вставьте Microsoft.UI.Xaml в поле поиска, выберите элемент в результатах поиска, а затем щелкните Установить, чтобы установить пакет в свой проект (отобразится лицензионное соглашение). Будьте внимательны — нужно установить пакет Microsoft.UI.Xaml, а не Microsoft.UI.Xaml.Core.Direct.

Объявление ресурсов приложения WinUI

Откройте App.xaml и вставьте следующую разметку между существующими открывающим и закрывающим тегами Application.

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

Добавление элемента управления WinUI в MainPage

Затем откройте MainPage.xaml. В открывающем теге Page есть объявления пространств имен XML. Добавьте xmlns:muxc="using:Microsoft.UI.Xaml.Controls" объявления пространства имен XML. Затем вставьте следующую разметку между открывающим и закрывающим тегами Page, чтобы перезаписать существующий элемент StackPanel.

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

Внесение изменений в файл pch.h

Когда вы добавляете пакет NuGet в проект C++/WinRT (например, пакет Microsoft.UI.Xaml, добавленный ранее) и создаете проект, средство создает набор заголовков проекции в папке проекта \Generated Files\winrt. Если вы выполнили инструкции из руководства, теперь у вас должна быть папка \HelloWinUICppWinRT\HelloWinUICppWinRT\Generated Files\winrt. Чтобы поместить эти файлы с заголовками в свой проект и чтобы ссылки на эти новые типы работали, можно перейти к предварительно откомпилированному файлу заголовка (обычно pch.h) и включить их в файл проекта.

Включите только заголовки для типов, которые используете. В примере ниже включены все созданные файлы заголовков для пакета Microsoft.UI.Xaml.

// 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"
...

Внесение изменений в файл MainPage.cpp

В MainPage.cpp удалите код внутри реализации MainPage::ClickHandler, так как myButton больше не находится в разметке XAML.

Теперь выполните сборку и запустите проект.

Снимок экрана: простой пример библиотеки пользовательского интерфейса Windows для C++/WinRT