#Win8# Secondary Tile
上一篇以《Dota宝典》为例初步介绍了如何去初步开发一个Win8 App,这一篇我们将继续沿用《Dota宝典》的例子为大家介绍一下如何使用Secondary Tile。
SecondaryTile即辅助磁贴,MSDN解释如下:
辅助磁贴允许直接访问应用中的特定位置或体验。示例包括社交媒体应用中的单个好友、照片应用中的特定相册、已保存的游戏或音乐应用中的播放列表。当用户选择选择辅助磁贴时,它会启动侧重于固定内容的父应用。应用控制什么内容可以固定为辅助磁贴,但固定通常是用户操作。至少在创建辅助磁贴之前,用户必须明确确认。固定通常通过应用栏中的一个选项提供。
创建SecondaryTile:
在使用SecondaryTile之前我们先来了解下它的属性:
titleId:用于标记辅助磁贴的特定ID
shortName:显示在辅助磁贴上的信息
displayName:当用户将鼠标移至辅助磁贴上方时所展示的信息
arguments:当辅助磁贴被激活时所要传递的信息
TileOptions:辅助磁贴上内容的展示方式
logoReference:辅助磁贴上的图标的URI
wideLogoReference:宽图标的URI
SecondaryTile的构造方法有四种:
SecondaryTile()
SecondaryTile(titleId)
SecondaryTile(titleId, shortName, displayName, arguments, TileOptions, logoReference)
SecondaryTile(titleId, shortName, displayName, arguments, TileOptions, logoReference, wideLogoReference)
在这里我们使用第三种构造方法去试验它。
我们现在要做的就是让用户能够将自己喜欢的Dota英雄人物头像固定到开始页面。首先我们将代码页面切换到SplitPage页面,在右侧xaml代码框中将英雄人物头像对应的Image控件命名为“Image_Share”(我们要固定的图片),并在PageResource下添加如下代码:
1 <!--为App添加Appbar--> 2 <Page.BottomAppBar> 3 <AppBar> 4 <StackPanel Orientation="Horizontal"> 5 <Button Content="Pin桌面" FontSize="18" Margin="30,0,0,0" Height="70" Width="100" Click="Button_Click_1"/> 7 </StackPanel> 8 </AppBar> 9 </Page.BottomAppBar>
在后台代码中的Button_Click_1函数中添加如下代码:
1 private async void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 // 获取当前选择的英雄人物头像的URI 4 BitmapImage bit = img_Share.Source as BitmapImage; 5 string uri = bit.UriSource.ToString(); 6 7 // 标准URI为:"ms-appx:///" + 图片路径,故在第10个字节后插入"//" 8 uri = uri.Insert(9, "//"); 9 10 //MessageDialog msg = new MessageDialog(uri); 11 //await msg.ShowAsync(); 12 13 SecondaryTile secondaryTile = new SecondaryTile("SecondaryTile." + itemTitle.Text, 14 itemTitle.Text, 15 "Dota宝典", 16 "", 17 TileOptions.ShowNameOnLogo, 18 new Uri(uri)); 19 20 // 创建SecondaryTile 21 bool pinned = await secondaryTile.RequestCreateForSelectionAsync(new Rect(), Placement.Default); 22 }
按F5尝试运行,在SplitPage页面点击右键调出Appbar,点击Appbar,效果如下:
移除SecondaryTile:
要删除辅助磁贴只需调用RequestCreateForSelectionAsync(Rect selection, Placement prefferedPlacement)函数即可。
1 private async void Button_Click_2(object sender, RoutedEventArgs e) 2 { 3 SecondaryTile secondaryTile = new SecondaryTile("SecondaryTile." + itemTitle.Text); 4 5 // 删除SecondaryTile 6 bool pinned = await secondaryTile.RequestCreateForSelectionAsync(new Rect(), Placement.Default); 7 }