从桌面应用固定辅助磁贴

桌面应用(如使用 Windows 应用 SDK) 的 WinUI 3 应用 (,或者Windows Presentation Foundation (WPF) 或 Windows 窗体 (WinForms) 应用)可以使用打包的应用固定辅助磁贴 (请参阅从代码) 生成 MSIX 包。 这以前称为桌面桥。

辅助磁贴的屏幕截图

重要

需要 Fall Creators Update:必须面向 SDK 16299 并运行版本 16299 或更高版本,才能从桌面桥应用固定辅助磁贴。

从 Windows 应用 SDK、WPF 或 WinForms 应用程序添加辅助磁贴与纯 UWP 应用非常相似。 唯一的区别是,你必须指定主窗口句柄 (HWND)。 这是因为在固定磁贴时,Windows 会显示一个模式对话框,并请求用户确认他们是否想要固定磁贴。 如果桌面应用程序未使用所有者窗口配置 SecondaryTile 对象,则 Windows 不知道在何处绘制对话框,并且操作将失败。

将你的应用打包

如果要使用 WinUI 3 创建Windows 应用 SDK应用程序,则必须使用打包的应用程序来固定辅助磁贴。 如果从打包的应用模板开始,则无需执行其他步骤即可打包应用。

如果使用的是 WPF 或 WinForms,并且尚未使用桌面桥打包应用,则需要先执行此操作,然后才能使用任何Windows 运行时 API (请参阅从代码) 生成 MSIX 包

使用 IInitializeWithWindow 接口初始化和固定辅助磁贴

注意

本部分适用于 WinUI 3;和 ,适用于具有 .NET 6 或更高版本的 WPF/WinForms。

  1. 在项目文件中,将 TargetFramework 属性设置为一个值,该值使你能够访问Windows 运行时 API (请参阅 .NET 6 及更高版本:) 使用目标框架名字对象选项。 这包括访问 WinRT.Interop 命名空间 (请参阅 从 .NET 应用) 调用互操作 API 。 例如:

    <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>
    
  2. 初始化新辅助磁贴对象与初始化普通 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);
    
  3. 检索窗口句柄,并使用该句柄初始化辅助磁贴对象。 在下面的代码中, this 是对 Window 对象的引用, (WinUI 3 窗口、WPF 窗口还是 WinForms 窗口) 。 有关详细信息,请参阅 检索 (HWND) 的窗口句柄 显示依赖于 CoreWindow 的 WinRT UI 对象

    var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this);
    WinRT.Interop.InitializeWithWindow.Initialize(tile, hWnd);
    
  4. 最后,请求像在普通 UWP 应用中一样固定磁贴。

    // Pin the tile
    bool isPinned = await tile.RequestCreateAsync();
    
    // Here, update UI to reflect whether user can now either unpin or pin
    

发送磁贴通知

重要

需要 2018 年 4 月版本 17134.81 或更高版本:必须运行版本 17134.81 或更高版本,才能从桌面桥应用向辅助磁贴发送磁贴或锁屏提醒通知。 在 17134.81 服务更新之前,从桌面桥应用向辅助磁贴发送磁贴或锁屏提醒通知时会出现 0x80070490 未找到元素 异常。

发送磁贴或锁屏提醒通知的方法与 UWP 应用相同。 要开始使用,请参阅发送本地磁贴通知

资源