Поделиться через


Начало работы с WinUI 2 для UWP

WinUI 2.8 — это последняя стабильная версия WinUI, которую можно использовать для создания рабочих приложений UWP (и классических приложений с помощью XAML Islands).

Эта библиотека доступна в виде пакета NuGet, который можно добавить в любой новый или существующий проект Visual Studio.

Замечание

Дополнительные сведения о создании классических приложений Windows с последней версией WinUI 3 см. в статье WinUI 3.

Настройка Visual Studio для разработки UWP

Скачайте Visual Studio 2022 и установите средства для разработки UWP. Дополнительные инструкции см. в статье "Создание приложения UWP" в документации По Visual Studio.

На вкладке "Рабочие нагрузки " приложения Установщика Visual Studio выберите следующие рабочие нагрузки и компоненты:

  • Выберите рабочую нагрузку WinUI для разработки приложений. Затем в области сведений об установке в узле разработки приложений WinUI выберите нужный параметр UWP (это также будет выбирать все дополнительные необходимые компоненты.):

    • Для C# выберите средства универсальной платформы Windows.
    • Для C++ выберите средства C++ (v14x) для Универсальной платформы Windows (выберите последнюю версию, если у вас нет конкретной причины использовать более раннюю версию).

Замечание

В Visual Studio 17.10 – 17.12 эта рабочая нагрузка называется разработкой приложений Windows.

Скачивание и установка WinUI

  1. Откройте существующий проект или создайте новый проект, используя шаблон пустого приложения в Visual C# > Windows Universal > или подходящий шаблон для вашего языка.

    Это важно

    Чтобы использовать WinUI 2.8, необходимо задать TargetPlatformVersion = 10.0.18362.0 и TargetPlatformMinVersion >>= 10.0.17763.0 в свойствах проекта.

  2. На панели обозревателя решений щелкните правой кнопкой мыши имя проекта и выберите пункт "Управление пакетами NuGet".

    Снимок экрана: панель обозревателя решений с выбранным проектом правой кнопкой мыши и выделенным параметром
    Панель обозревателя решений, в которой проект выделен при щелчке правой кнопкой мыши и выбран параметр "Управление пакетами NuGet".

  3. В диспетчере пакетов NuGet перейдите на вкладку "Обзор " и найдите Microsoft.UI.Xaml или WinUI. Выберите, какие пакеты NuGet WinUI необходимо использовать (пакет Microsoft.UI.Xaml содержит элементы управления Fluent и функции, подходящие для всех приложений). Щелкните Установить.

    Установите флажок "Включить предварительные выпуски", чтобы просмотреть последние предварительные версии, включающие экспериментальные новые функции.

    Снимок экрана: диалоговое окно Менеджера пакетов NuGet с вкладкой
    Диалоговое окно диспетчера пакетов NuGet отображается с вкладкой "Обзор", winui в поле поиска и установленным флажком "Включить предварительную версию".

  4. Добавьте ресурсы темы WinUI в файл App.xaml.

    Это можно сделать двумя способами, в зависимости от наличия дополнительных ресурсов приложения.

    a. Если вам не нужны другие ресурсы приложений, добавьте элемент ресурсов WinUI XamlControlsResources как показано в следующем примере:

    <Application
        x:Class="ExampleApp.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        RequestedTheme="Light">
    
        <Application.Resources>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
        </Application.Resources>
    
    </Application>
    

    б. Если у вас есть другие ресурсы, мы рекомендуем добавить их в XamlControlsResources.MergedDictionaries. Это работает с системой ресурсов платформы, чтобы разрешить переопределение ресурсов XamlControlsResources.

    <Application
        x:Class="ExampleApp.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:controls="using:Microsoft.UI.Xaml.Controls"
        RequestedTheme="Light">
    
        <Application.Resources>
            <controls:XamlControlsResources>
                <controls:XamlControlsResources.MergedDictionaries>
                    <ResourceDictionary Source="/Styles/Styles.xaml"/>
                    <!-- Other app resources here -->
                </controls:XamlControlsResources.MergedDictionaries>
            </controls:XamlControlsResources>
        </Application.Resources>
    
    </Application>
    
  5. Добавьте ссылку на пакет WinUI как на страницы XAML, так и на страницы программного кода.

    • На странице XAML добавьте ссылку в верхней части страницы.

      xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
      
    • В коде (если вы хотите использовать имена типов без их уточнения), можно добавить директиву using.

      using MUXC = Microsoft.UI.Xaml.Controls;
      

Дополнительные шаги для проекта C++/WinRT

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

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

Полное пошаговое руководство по добавлению простой поддержки WinUI в проект C++/WinRT см. в простом примере C++/WinRT WinUI.

WinUI на GitHub

Мы приветствуем отчеты об ошибках в репозитории microsoft-ui-xaml на GitHub.