将辅助磁贴固定到“开始”菜单

注意

生活磁贴是 Windows 10 功能,在更高版本的 Windows 上不受支持。 对于新应用,建议遵循应用图标的当前指南

本主题指导你完成为 Windows 应用创建辅助磁贴并将其固定到“开始”菜单的步骤。

辅助磁贴的屏幕截图

若要了解有关辅助磁贴的详细信息,请参阅辅助磁贴概述

添加命名空间

Windows.UI.StartScreen 命名空间包括 SecondaryTile 类。

using Windows.UI.StartScreen;

初始化辅助磁贴

辅助磁贴由一些主要组件构成...

  • TileId:用于标识其他辅助磁贴中的磁贴的唯一标识符。
  • DisplayName:想要显示在磁贴上的名称。
  • Arguments:想要在用户单击磁贴时传递回应用的参数。
  • Square150x150Logo:显示在中等大小磁贴上的所需徽标(如果未提供小徽标,则会按较小大小的磁贴来调整大小)。

必须为所有上述属性提供初始化值,否则将引起异常。

可以使用各种构造函数,但使用采用tileIdsquare150x150LogodisplayNameargumentsdesiredSize构造函数和函数有助于确保设置所有必需的属性。

// Construct a unique tile ID, which you will need to use later for updating the tile
string tileId = "City" + zipCode;

// Use a display name you like
string displayName = cityName;

// Provide all the required info in arguments so that when user
// clicks your tile, you can navigate them to the correct content
string arguments = "action=viewCity&zipCode=" + zipCode;

// Initialize the tile with required arguments
SecondaryTile tile = new SecondaryTile(
    tileId,
    displayName,
    arguments,
    new Uri("ms-appx:///Assets/CityTiles/Square150x150Logo.png"),
    TileSize.Default);

可选:添加对较大磁贴大小的支持

如果你打算在辅助磁贴上显示大量磁贴通知,则可能需要允许用户将其磁贴调宽或调大,以便他们能够查看更多内容。

若要启用宽磁贴大小和大磁贴大小,你需要提供 Wide310x150LogoSquare310x310Logo。 此外,如果可能,应为小磁贴大小提供 Square71x71Logo(否则我们将针对小磁贴减小所需的 Square150x150Logo)。

你还可以提供唯一的 Square44x44Logo,(可选)有通知时它会显示在右下角。 如果未提供,则将改用主要磁贴中的 Square44x44Logo

// Enable wide and large tile sizes
tile.VisualElements.Wide310x150Logo = new Uri("ms-appx:///Assets/CityTiles/Wide310x150Logo.png");
tile.VisualElements.Square310x310Logo = new Uri("ms-appx:///Assets/CityTiles/Square310x310Logo.png");

// Add a small size logo for better looking small tile
tile.VisualElements.Square71x71Logo = new Uri("ms-appx:///Assets/CityTiles/Square71x71Logo.png");

// Add a unique corner logo for the secondary tile
tile.VisualElements.Square44x44Logo = new Uri("ms-appx:///Assets/CityTiles/Square44x44Logo.png");

可选:允许显示显示名称

默认情况下将不显示显示名称。 若要在中等/宽/大磁贴上显示显示名称,请添加以下代码。

// Show the display name on all sizes
tile.VisualElements.ShowNameOnSquare150x150Logo = true;
tile.VisualElements.ShowNameOnWide310x150Logo = true;
tile.VisualElements.ShowNameOnSquare310x310Logo = true;

可选:3D 辅助磁贴

可以通过添加 3D 资产优化 Windows Mixed Reality 的辅助磁贴。 在混合现实环境中使用应用时,用户可以将 3D 磁贴直接放入 Windows Mixed Reality 主页,而不是“开始”菜单。 例如,可以创建直接链接到 360° 照片查看器应用的 360° 全景照片,或让用户放置家具目录中椅子的 3D 模型,且选中该对象时,会打开有关该对象的定价和颜色选项的详细信息页面。 若要开始使用,请参阅混合现实开发人员文档

固定辅助磁贴

最后,请求固定磁贴。 请注意,这必须从 UI 线程中调用。 在桌面上,将显示一个对话框,并请求用户确认他们是否想要固定磁贴。

重要

对于使用桌面桥的桌面应用程序,必须首先执行额外的步骤,如桌面应用中的 Pin 中所述

// Pin the tile
bool isPinned = await tile.RequestCreateAsync();

// TODO: Update UI to reflect whether user can now either unpin or pin

检查是否存在辅助磁贴

如果用户在你已固定到“开始”菜单的应用中访问页面,则将需要改为显示“取消固定”按钮。

因此,在选择要显示的按钮时,你需要首先检查当前是否已固定辅助磁贴。

// Check if the secondary tile is pinned
bool isPinned = SecondaryTile.Exists(tileId);

// TODO: Update UI to reflect whether user can either unpin or pin

取消固定辅助磁贴

如果当前已固定磁贴,并且用户单击你的取消固定按钮,则将需要取消固定(删除)磁贴。

// Initialize a secondary tile with the same tile ID you want removed
SecondaryTile toBeDeleted = new SecondaryTile(tileId);

// And then unpin the tile
await toBeDeleted.RequestDeleteAsync();

更新辅助磁贴

如果需要更新辅助磁贴上的徽标、显示名称或其他任何内容,可以使用 RequestUpdateAsync

// Initialize a secondary tile with the same tile ID you want to update
SecondaryTile tile = new SecondaryTile(tileId);

// Assign ALL properties, including ones you aren't changing

// And then update it
await tile.UpdateAsync();

枚举所有固定的辅助磁贴

如果需要发现用户已固定的所有磁贴,而不是使用 SecondaryTile.Exists,也可以使用 SecondaryTile.FindAllAsync

// Get all secondary tiles
var tiles = await SecondaryTile.FindAllAsync();

发送磁贴通知

若要了解如何通过磁贴通知在磁贴上显示丰富的内容,请参阅发送本地磁贴通知