Базовый пример C++/WinRT Windows UI Library 2 (UWP)

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

Это важно

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

Note

Набор средств Windows UI Library (WinUI) доступен как пакеты NuGet, которые можно добавить в любой существующий или новый проект с помощью Visual Studio, как показано в этом разделе. Дополнительные сведения, информацию по установке и поддержке см. в статье Начало работы с библиотекой интерфейса Windows.

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

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

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

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

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

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

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

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

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

Затем откройте MainPage.xaml. В существующем открывающем теге Page есть несколько объявлений пространства имён XML. Добавьте объявление пространства имён XML xmlns:muxc="using:Microsoft.UI.Xaml.Controls". Затем вставьте следующую разметку между существующими тегами открытия и закрытия страниц , перезаписав существующий элемент 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 UI Library для C++/WinRT