如何使用UWP JumpList API为SecondaryTile创建的任务栏图标自定义跳转列表?
为UWP SecondaryTile自定义任务栏跳转列表
要给通过SecondaryTile创建的任务栏图标设置独立的自定义跳转列表,核心是将JumpList与该SecondaryTile对应的窗口HWND绑定,而非使用默认的全局JumpList。以下是具体实现方案:
核心逻辑
默认的JumpList.LoadCurrentAsync()加载的是当前活跃窗口(通常为主应用窗口)的跳转列表。要为SecondaryTile单独配置,需使用**JumpList.LoadForWindowAsync(HWND)**方法,直接关联到SecondaryTile对应的窗口句柄。
实现代码
1. 引用必要命名空间
确保项目包含以下命名空间:
using Windows.UI.StartScreen; using WinRT.Interop;
2. 绑定HWND并配置专属JumpList
结合你已有的HWND获取代码,修改跳转列表的创建逻辑:
// 初始化SecondaryTile实例 var secondaryTile = new SecondaryTile( "你的SecondaryTile唯一ID", "Tile显示名称", "激活时传递的参数", new Uri("ms-appx:///Assets/SecondaryTileLogo.png"), TileSize.Default ); // 获取SecondaryTile对应窗口的HWND var window = // 指向SecondaryTile关联的窗口实例 var hwnd = WindowNative.GetWindowHandle(window); InitializeWithWindow.Initialize(secondaryTile, hwnd); // 加载该窗口专属的JumpList var jumpList = await JumpList.LoadForWindowAsync(hwnd); // 清空默认项,添加自定义跳转项 jumpList.Items.Clear(); // CreateWithArguments参数:第一个是启动应用时的传递参数,第二个是跳转项显示文本 jumpList.Items.Add(JumpListItem.CreateWithArguments("secondary_tile_foo", "Foo(SecondaryTile专属)")); // 可选:隐藏系统默认组(如「最近文件」),仅显示自定义项 jumpList.SystemGroupKind = JumpListSystemGroupKind.None; // 保存配置 await jumpList.SaveAsync();
3. 处理跳转项激活逻辑
用户点击SecondaryTile的跳转项时,应用会被激活,可在App.xaml.cs的OnLaunched或OnActivated方法中处理传递的参数:
protected override void OnLaunched(LaunchActivatedEventArgs e) { if (!string.IsNullOrEmpty(e.Arguments)) { switch (e.Arguments) { case "secondary_tile_foo": // 处理从SecondaryTile跳转项启动的业务逻辑 break; } } // 其他应用初始化逻辑 }
注意事项
- 需确保HWND对应的窗口已完成初始化,建议在
SecondaryTile关联窗口的Loaded事件中执行JumpList配置。 - 每个
SecondaryTile对应独立的窗口实例,其JumpList与主应用、其他SecondaryTile的JumpList相互独立。 - 测试时需先将
SecondaryTile固定到任务栏,右键点击图标即可看到自定义跳转项。
内容的提问来源于stack exchange,提问作者Muhammad Rehan Saeed
相关产品推荐
相关产品推荐

