Базовый пример библиотеки пользовательского интерфейса 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.
Теперь выполните сборку и запустите проект.