从桌面应用固定辅助磁贴
桌面应用(如使用 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。
在项目文件中,将 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>
初始化新辅助磁贴对象与初始化普通 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) 的窗口句柄 和 显示依赖于 CoreWindow 的 WinRT UI 对象。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 年 4 月版本 17134.81 或更高版本:必须运行版本 17134.81 或更高版本,才能从桌面桥应用向辅助磁贴发送磁贴或锁屏提醒通知。 在 17134.81 服务更新之前,从桌面桥应用向辅助磁贴发送磁贴或锁屏提醒通知时会出现 0x80070490 未找到元素 异常。
发送磁贴或锁屏提醒通知的方法与 UWP 应用相同。 要开始使用,请参阅发送本地磁贴通知。
资源
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈