MSDN帮助:http://msdn.microsoft.com/en-us/library/hh202948(v=VS.92).aspx

Tile,英文单词的中文意思是砖瓦、瓦片、瓷片的意思,真佩服微软起的这个名字,它是在Windows Phone手机的桌面上呈现一个小方块,它的作用是在桌面上显示一个启动程序的快捷方式,同时可以动态显示一些提示信息。

一)Tile的简单介绍

Tile的正面

Tile的背面

1)小方块的底部可以显示应用程序的名称。

2)小方块的右上角显示一个0-99的数字。

3)小方块的背景图片可以自由设置为尺寸为173*173、jpg或png格式的图片,图片的大小如果不合要求,则会自动缩放。

4)小方块的显示有两面:正面和背面。

   正面可以设置:背景图片BackgroundImage、程序标题Title、右上角数字Count;

   背面可以设置:背景图片BackBackgroundImage、程序标题BackTitle、内容文字BackContent。

   小方块正面和背面的翻转显示是自动的,由系统控制。

5)一个应用程序可以有两个Tile的小方块:一个是默认的主方块(Application Tile),一个是附属的次方块(Secondary Tile)。

   Application Tile:程序安装后由用户操作“固定到开始屏幕”(英文为“pin to start”)自动创建,删除时也是由用户在桌面操作删除(手指长按方块然后点击出现的那个小图钉),不能由程序代码来创建或删除。

   Secondary Tile:由程序代码来创建和维护,作用与主方块类似,与主方块配合使用,只能添加一个Secondary Tile(即一个应用程序总共最多有两个Tile,一个Application Tile和一个Secondaty Tile),MSDN上的原因描述我也不大明白,估计是怕复杂了拖累系统吧。

6)更新操作:

   更新时只更新需要更新的内容即可,不必对所有属性都进行设置,更新操作只对传入的属性信息进行更新。

   如果是引用网络上的图片,其大小不能超过80KB,下载图片的过程必须在30秒内完成,否则将不会显示图片,不支持网络协议https。

   设置Tile的内容时,至少应该设置正面的背景图片。

   设置右上角的数字时,其数值是一个可以为空null的整型,数值0和null都不会显示,即右上角不会显示数字。

二)操作默认的主方块Tile

  主方块Tile只能进行更新,更新途径有三种方式。

  1)更改应用程序的属性。

     鼠标双击应用程序的Properties文件夹,打开工程的属性对话框,在Application页面的下方,有个Tile Options的配置项目,可以设置主方块的正面的标题和背景图片。

  2)更改应用程序的WMAppManifest.xml文件。

     小方块的正面内容的XML标签已经自动创建好,各个项目的值是空白的,输入数值即可。同时添加背面内容的XML标签和相应的数值即可,背面的背景图片XML标签的名称我没有找到,使用BackBackgroundImageUri在运行时报错,说是非法的标签。

  3)编写代码。

     工程添加引用Microsoft.Phone,单元添加引用 using Microsoft.Phone.Shell,在某个事件中添加下面的代码即可,建议在Page的OnNavigatedTo事件中使用。

ShellTile defaultTile = ShellTile.ActiveTiles.First();

StandardTileData tileData = new StandardTileData()

{

Title = "",

Count = 0,

BackgroundImage = new Uri("AppTileIcon.png", UriKind.Relative),

BackTitle = "我的手机监视器",

BackBackgroundImage = new Uri("AppTileIcon.png", UriKind.Relative),

BackContent = "电池剩余:0 小时"

};

defaultTile.Update(tileData);


三)操作附属的次方块Tile

1)添加:

//先判断是否存在包含有一个标志字符串“SecondaryTile”的Tile,这里的Linq我不太懂啊;(
ShellTile newTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("SecondaryTile"));

//如果不存在,则创建
if (newTile == null)

{

int? tileCount = Int32.Parse(txtboxTileCount.Text);

StandardTileData tileData = new StandardTileData()

{

Title = txtboxTileTitle.Text,

BackgroundImage = new Uri("Tock.png", UriKind.Relative),

Count = tileCount,

BackTitle = txtboxTileTitle.Text,

BackBackgroundImage = new Uri("Tock.png", UriKind.Relative),

BackContent = "第2个Tile的后台内容"

};

//调用ShellTile的Create方法,同时传入该Tile(是Secondary Tile)需要使用的启动程序的参数(必须要传),那个英文问号后面的那一串就是前面判断使用的字符串内容。
//只能创建一个,创建第二个Secondary Tile时会报错的。
ShellTile.Create(new Uri("/MainPage.xaml?SecondaryTile", UriKind.Relative), tileData);
}

注意:第一次运行时,桌面上是没有方块Tile的,需要手动添加。

   

2)删除:

ShellTile newTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("SecondaryTile"));

//如果存在,则删除
if (newTile != null)

newTile.Delete();

3)更新:

ShellTile newTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("SecondaryTile"));

//如果存在,则更新
if (newTile != null)

{

StandardTileData tileData = new StandardTileData

{

Title = txtboxTileTitle.Text

};

newTile.Update(NewTileData);

}

四)思考

1)可以更新的内容太少了,如字体不能设置、只有这6项内容可以设置,Tile的尺寸大小是固定的173*173,三星的天气预报程序Now的Tile是个长方形的方块,相当于两个小方块的大小,上面可以显示城市名称、温度信息等,估计整体是个图片。

2)使用ShellTileSchedule自动更新Tile时,都只能更新背景图片,不知啥原因?且背景图片必须是网络上的图片,不允许使用本地图片,太窝火了,这就是个鸡肋嘛!

3)使用隔离区的图片文件和接收Push消息,还没仔细研究过,需要时可以查看MSDN。

4)XNA游戏程序中应该也能这样使用吧。

posted on 2011-10-03 22:53  虫子CCC  阅读(2158)  评论(0编辑  收藏  举报