Windows 8 Metro App学习笔记(九)—磁砖

瓷砖,即桌面显示的Tile,它的创建和生命周期都可以由用户自由创建并可以直接访问一个应用程序,还可以为信息的及时推送带来很多的方便。在Windows 8中,由SecondaryTile对象负责。

 

首先了解一下它的属性

Arguments:它是显示在桌面Tile上程序定制的一些信息,当通过Tile激活一个APP时,可以用该值作一些处理

BackgroundColor:Tile的背景颜色

DisplayName:类似提示信息,当用户移到该Tile时,这个信息会显示

ForegroundText:字体颜色,只有Dark和Light两种

Logo:Logo图标,当创建一个方形的瓷砖中使用的标志形象。当你创建一个正方形或全瓷砖时,这个属性是必需的

ShortName:这个简短信息是直接显示在桌面Tile上的

SmalLogo:小图标,在查询应用程序结果集中,就显示该小图标

TileId:这是一个标识瓷砖的唯一标识

TileOptions:当给予ShortName时去指定一些选项,其包括四个选项(None,ShowNameOnLogo,ShowNameOnWideLogo,CopyOnDeployment)

WideLogo:在创建宽的Tile时,设置图片Logo

 

迫不及待想试一下到底怎么Pin到桌面了,得先构造一个SecondaryTile对象

image

 

我们可以根据不同的需求选择不同的构造函数

看了一下Create方法,哦,还真多

 

image

 

发现没,Create与Delete方法是对应的,下面了解一下具体的用法

Uri logo = new Uri("ms-appx:///images/squareTile-sdk.png");
Uri smallLogo = new Uri("ms-appx:///images/smallTile-sdk.png");
            
string tileActivationArguments = "timeTileWasPinned=" + DateTime.Now.ToLocalTime().ToString();
           
 SecondaryTile secondaryTile = new SecondaryTile(MainPage.tileId, "Title Test",
"Name of the tile the user sees when searching for the tile",                                                     tileActivationArguments,                                   TileOptions.ShowNameOnLogo,logo);
            
secondaryTile.ForegroundText = ForegroundText.Dark;         
secondaryTile.SmallLogo = smallLogo;         
bool isPinned = await secondaryTile.RequestCreateForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Right);
  

看下效果:

image

 

移除Tile

SecondaryTile secondaryTile = new SecondaryTile(MainPage.tileId);             
bool isUnpinned = await secondaryTile.RequestDeleteForSelectionAsync(GetElementRect((FrameworkElement)sender), Windows.UI.Popups.Placement.Below);

发现没有,创建和移除时都会有一个对话似的那种,Create时还可以修改ShortName。

 

写的这里不禁有些疑惑,这里的NavigateUri哪里去了,当我从桌面Tile怎么重新激活APP,并跳转到我指定的页面呢??仔细看 了一下MSDN的Sample,原来我们上面的Arguments就是至关重要所在,之所以这里没有NavigateUri的概念,是因为Win8 Metro App不像Windows Phone7,它类库没有Page的Navigate概念,除非自己封装。

async protected override void OnLaunched(LaunchActivatedEventArgs args)
        {          
            Window.Current.Content = new MainPage(args.Arguments);
            Window.Current.Activate();
        }

 

APP 开启时,可以接收到Tile的Arguments值,通过该值我们可以去作逻辑处理,或激活某个页面,相比Windows Phone 7,给了我们更大的自由选配的空间,不是么??

 

SecondaryTile还有两个方法也经常用法

Exist(TileId),顾名思义,检测是否存在对应的Tile

FindAllAsync() 查找所有的Tile,该方法也重载了多个方法,返回的是IReadOnlyList<SecondaryTile>对象

 

这就是SecondaryTile的创建与移除,用法相对简单,当然我们使用Tile的最大好处是可以实现信息更新及时推送,这就涉及到PushNotification的用法了,先研究下~随后整理…


 

 

 

Trackback:

http://www.cnblogs.com/jing870812/archive/2012/04/16/2452658.html

posted @ 2012-07-03 16:29  my favorite  阅读(248)  评论(0编辑  收藏  举报