注意:动态磁贴必须要在实体机器上,在模拟器中是无法显示动态磁贴的效果。
2.辅助磁贴(二级磁贴)
辅助磁贴使用户能够将 Windows 应用商店应用的特定内容和深层链接—对固定应用内部一个特定位置的引用—发送到“开始”屏幕上。辅助磁贴使用户能够使用好友、新闻源、股票报价和其他对其很重要的内容来个性化“开始”屏幕体验。创建辅助磁贴的选项最常在 UI 中显示为“附到开始菜单”选项。固定内容也就是为它创建辅助磁贴。此选项常常显示为应用栏上的一个标志符号。通过触摸或单击来选择辅助磁贴,会启动到父应用,以突出一种以固定内容或联系人为中心的体验。只有用户才可以固定辅助磁贴;应用不能在未获得用户许可的情况下以编程方式固定辅助磁贴。用户还可以通过“开始”屏幕或通过父应用,对辅助磁贴进行显式删除控制。 1).在固定辅助磁贴前,用户必须确认,要求对此进行确认的弹出窗口应当显示在调用固定请求的按钮旁边。
public Rect GetElementRect(FrameworkElement element)
{
GeneralTransform buttonTransform = element.TransformToVisual(null);
Point point = buttonTransform.TransformPoint(new Point());
return new Rect(point, new Size(element.ActualWidth, element.ActualHeight));
}
2).添加辅助磁贴。首先需要设置辅助磁贴的ID
public const string appbarTileId = "SecondaryTile.AppBar";
private async void AddButtonClicked(object sender, RoutedEventArgs e)
{
//当用户选择应用栏上的按钮时,会显示一个要求用户进行确认的弹出窗口。
//若要确保在显示弹出窗口时不取消应用栏,必须设置应用栏的 IsSticky 属性。
this.BottomAppBar.IsSticky = true;
if(SecondaryTile.Exists(appbarTileId))
{
//取消相应的辅助磁贴
SecondaryTile secondaryTile = new SecondaryTile(appbarTileId);
bool isUnpinned = await secondaryTile.RequestDeleteForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Above);
ToggleAppBarButton(isUnpinned);
}
else
{
//辅助磁贴的一些属性需要设置后才能固定辅助磁贴.
//·磁贴的唯一 ID
//·短名称
//·显示名称
//·磁贴选项
//·徽标图像
//·激活辅助磁贴时将传递到父应用程序的参数字符串
Uri logo = new Uri("ms-appx:///Assets/logo.jpg");
string tileActivationArguments = appbarTileId + " was pinned at " + DateTime.Now.ToLocalTime().ToString();
SecondaryTile secondaryTile = new SecondaryTile(appbarTileId,
"Secondary tile pinned via AppBar",
"SDK Sample Secondary Tile pinned from AppBar",
tileActivationArguments,
TileOptions.ShowNameOnLogo,
logo);
//指定前景文本颜色和小徽标。
secondaryTile.ForegroundText = ForegroundText.Dark;
secondaryTile.SmallLogo = new Uri("ms-appx:///Assets/small.jpg");
//调用异步方法将辅助磁贴固定。
//实际上这种方法不是将磁贴直接固定到“开始”屏幕,而是会显示一个要求用户允许这样做的确认提示框。
bool isPinned = await secondaryTile.RequestCreateForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Above);
ToggleAppBarButton(!isPinned);
}
this.BottomAppBar.IsSticky = false;
}