将辅助磁贴固定到“开始”菜单
注意
生活磁贴是 Windows 10 功能,在更高版本的 Windows 上不受支持。 对于新应用,建议遵循应用图标的当前指南。
本主题指导你完成为 Windows 应用创建辅助磁贴并将其固定到“开始”菜单的步骤。
若要了解有关辅助磁贴的详细信息,请参阅辅助磁贴概述。
添加命名空间
Windows.UI.StartScreen 命名空间包括 SecondaryTile 类。
using Windows.UI.StartScreen;
初始化辅助磁贴
辅助磁贴由一些主要组件构成...
- TileId:用于标识其他辅助磁贴中的磁贴的唯一标识符。
- DisplayName:想要显示在磁贴上的名称。
- Arguments:想要在用户单击磁贴时传递回应用的参数。
- Square150x150Logo:显示在中等大小磁贴上的所需徽标(如果未提供小徽标,则会按较小大小的磁贴来调整大小)。
你必须为所有上述属性提供初始化值,否则将引起异常。
可以使用各种构造函数,但使用采用tileId
的square150x150Logo
displayName
arguments
desiredSize
构造函数和函数有助于确保设置所有必需的属性。
// 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);
可选:添加对较大磁贴大小的支持
如果你打算在辅助磁贴上显示大量磁贴通知,则可能需要允许用户将其磁贴调宽或调大,以便他们能够查看更多内容。
若要启用宽磁贴大小和大磁贴大小,你需要提供 Wide310x150Logo 和 Square310x310Logo。 此外,如果可能,应为小磁贴大小提供 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 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();
发送磁贴通知
若要了解如何通过磁贴通知在磁贴上显示丰富的内容,请参阅发送本地磁贴通知。