#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         }

 

 

 

 

posted @ 2012-09-12 12:31  Linfeng Wu  阅读(1921)  评论(1编辑  收藏  举报