Закрепление дополнительных плиток из классических приложений
Классическое приложение, например приложение WinUI 3 (с помощью Windows App SDK), приложение Windows Presentation Foundation (WPF) или Windows Forms (WinForms), может закреплять вспомогательную плитку с помощью упаковаемого приложения (см. раздел Создание пакета MSIX из кода). Ранее это называлось мост для классических приложений.
Важно!
Требуется обновление Fall Creators Update: чтобы закреплять вспомогательные плитки приложений моста для классических приложений, необходимо выбрать целевой пакет SDK 16299 и использовать сборку 16299 или более поздней версии.
Добавление дополнительной плитки из приложения Windows App SDK, WPF или WinForms очень похоже на чистое приложение UWP. Единственное отличие заключается в том, что вам необходимо указать дескриптор главного окна (HWND). Это связано с тем, что при закреплении плитки Windows отображает модальное диалоговое окно с запросом на подтверждение закрепления плитки, который должен принять пользователь. Если классическое приложение не настраивает объект SecondaryTile с окном владельца, Windows не знает, где нарисовать диалоговое окно, и операция завершится ошибкой.
Упаковка приложения
Если вы создаете приложение Windows App SDK с помощью WinUI 3, необходимо использовать упакованое приложение для закрепления дополнительных плиток. Если вы начинаете работу с шаблоном упаковаемого приложения, для упаковки приложения не требуется никаких дополнительных действий.
Если вы используете WPF или WinForms и не упаковываете приложение с мост для классических приложений, это необходимо сделать, прежде чем использовать api-интерфейсы среда выполнения Windows (см. раздел Создание пакета MSIX из кода).
Инициализация и закрепление дополнительной плитки с помощью интерфейса IInitializeWithWindow
Примечание
Этот раздел предназначен для WinUI 3; и для WPF/WinForms с .NET 6 или более поздней версии.
В файле проекта задайте для свойства TargetFramework значение, которое предоставляет доступ к API-интерфейсам среда выполнения Windows (см. .NET 6 и более поздние версии: использование моникера целевой платформы). Сюда входит доступ к пространству имен WinRT.Interop (см. раздел Вызов API взаимодействия из приложения .NET). Пример:
<PropertyGroup> <!-- You can also target other versions of the Windows SDK and .NET; for example, "net6.0-windows10.0.19041.0" --> <TargetFramework>net6.0-windows10.0.22000.0</TargetFramework> </PropertyGroup>
Инициализируйте новый объект вспомогательной плитки, как и в обычном приложении UWP. Дополнительные сведения о создании и закреплении вспомогательных плиток см. в разделе Закрепление вспомогательных плиток.
// Initialize the tile with required arguments var tile = new Windows.UI.StartScreen.SecondaryTile( "myTileId5391", "Display name", "myActivationArgs", new Uri("ms-appx:///Assets/Square150x150Logo.png"), TileSize.Default);
Получите дескриптор окна и инициализируйте дополнительный объект плитки с помощью этого дескриптора. В приведенном ниже
this
коде является ссылкой на объект Window (будь то окно WinUI 3, окно WPF или окно WinForms). Дополнительные сведения см. в разделах Получение дескриптора окна (HWND) и Отображение объектов пользовательского интерфейса WinRT, зависящих от CoreWindow.var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this); WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
Наконец, запросите закрепление плитки, как в обычном приложении UWP.
// Pin the tile bool isPinned = await tile.RequestCreateAsync(); // Here, update UI to reflect whether user can now either unpin or pin
Отправка уведомления на плитке
Важно!
Требует обновление от апреля 2018 года версии 17134.81 или более поздней версии: чтобы можно было отправлять уведомления плитки и индикатора событий вспомогательным плиткам из приложений моста для классических приложений, необходимо использовать сборку версии 17134.81 или выше. До выхода этого служебного обновления .81 при попытке отправки уведомлений плитки и индикатора событий вспомогательным плиткам из приложений моста для классических приложений возникало исключение 0x80070490 — Элемент не найден.
Отправка уведомлений плитки или индикатора событий аналогичная этому процессу в приложениях UWP. Инструкции см. в разделе Отправка локального уведомления на плитке.
Ресурсы
Windows developer
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по