标题：磁贴
什么是磁贴？
美国 微软公司2012年将发布的操作系统Windows 8，全新Metro开始界面下的那些方格，英文是Tile，中文之前有骚人墨客称之为瓷砖，还有人叫它板砖。不过瓷砖板砖地砖和砖头，感觉确实不如磁贴来的更传神一些，你说呢？
无处不在的磁贴
这是个很古怪的名字，敢保证在Windows 8出现之前你不会觉得这是个IT用语，你可能会想到膏药似的医疗用具，你也可能会想起家里冰箱门上的那个磁性的贴牌。但在Windows 8里面，你会再也离不开这东西，磁贴，无处不在。
  Metro界面下的windows8的“色块”磁贴
创建默认磁贴
使用 Microsoft Visual Studio 11 清单编辑器创建默认磁贴（使用 JavaScript 和 HTML 的 Metro 风格应用）
目标: 若要使用已安装的模板在 Visual Studio Express 2012 RC for Windows 8 中创建新项目，则需在包清单中定义默认的磁贴及其图像。
先决条件　Visual Studio Express 2012 RC for Windows 8 
显示在磁贴上的图像文件，150 x 150 像素。 
该图像文件的较小版本，30 x 30 像素。此图像不用于磁贴本身，而是在搜索结果、“所有程序”列表以及 UI 的其他位置中使用。 
推荐：该图像文件的加宽版本为 310 x 150 像素。 注意 如果未提供加宽图像，则除非发布你的应用的新版本，否则无法通过加宽模板更新磁贴。但是，磁贴显示为正方形磁贴还是加宽磁贴由用户决定。有关何时应该包括以及何时不应包括加宽图像的详细信息，请参阅磁贴指南和清单。
说明1. 创建新项目。 打开 Visual Studio Express 2012 RC for Windows 8。 
单击“新建项目...”
如果还未打开，请单击“新建项目”窗口左侧面板中的“已安装”。 
选择项目语言。 
选择“Windows Metro 风格”。 
在“新建项目”窗口的中心窗格中，选择“空白应用程序”。 
在窗口底部为项目指定一个名称。 
单击“确定”。 
2. 打开清单编辑器 如果未显示“解决方案资源管理器”，请从“视图”菜单中进行选择。 
双击“package.appxmanifest”。此时会打开“清单编辑器”窗口。 
3. 提供磁贴详细信息 如果还未打开，请选择清单编辑器的“应用程序 UI”窗格。 
使用你自己的徽标图像的路径取代默认的图像。 
选择是否在磁贴上显示应用的短名称。此名称不能超过 13 个字符。如果名称太长，将会被截断。你可以选择显示徽标，显示名称或两者都不显示。 
选择名称的文本是使用浅色字体还是深色字体（基于背景色）。 
接受默认背景色，或以 W3DC 颜色字符串（如“#FFFFFF”）提供自己的颜色。此背景色用于对应用的其他部分进行着色：任意应用中对话框的按钮颜色，以及 Windows 应用商店中的“应用详情”页。
发送磁贴更新
先决条件　本主题假设你了解磁贴和通知术语及概念，以及 XML。还假设你知道如何使用 Windows 运行时 API 创建采用 JavaScript 的基本的 Metro 风格应用。
若要使此页上显示的示例代码正常工作，则必须在文件中包含以下行：
var Notifications = Windows.UI.Notifications;
说明为磁贴选择一个模板并获取它的 XML 内容 var tileXml = Notifications.TileUpdateManager.getTemplateContent(Notifications.TileTemplateType.tileWideText03); 
有关完整的模板列表，请参阅 TileTemplateType。
通过文档对象模型 (DOM) 方法提供模板内容 此示例使用 TileWideText03 模板，该模板包含一个可包含三行自动换行的文本字符串，如下所示： 
var tileAttributes = tileXml.getElementsByTagName("text"); tileAttributes[0].appendChild(tileXml.createTextNode("Hello World! My very own tile notification")); 
基于已经指定的 XML 内容创建通知 
var tileNotification = new Notifications.TileNotification(tileXml); 
为通知设置到期时间 该通知将在十分钟内到期并从磁贴中删除。
var currentTime = new Date(); tileNotification.expirationTime = new Date(currentTime.getTime() + 600 * 1000); 
向应用磁贴发送通知。 
Notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileNotification);
在相同的通知中指定磁贴
贴
先决条件
了解磁贴和通知术语及概念。有关详细信息，请参阅磁贴、锁屏提醒以及通知。 
使用 Windows 运行时 API 创建采用 JavaScript 的基本 Metro 风格应用的功能。 
若要使此页上显示的示例代码正常工作，则必须在文件中包含以下行： var Notifications = Windows.UI.Notifications;
说明步骤 1: 定义加宽磁贴 此示例选择模板，检索模板文本和图像元素，以及为这些元素分配值。
var tileXml = Notifications.TileUpdateManager.getTemplateContent(Notifications.TileTemplateType.tileWideImageAndText01); // Get the text attributes for this template and fill them in.var tileTextAttributes = tileXml.getElementsByTagName("text"); tileTextAttributes[0].appendChild(tileXml.createTextNode("This tile notification uses ms-resource images")); // Get the image attributes for this template and fill them in.var tileImageAttributes = tileXml.getElementsByTagName("image"); tileImageAttributes[0].setAttribute("src", "ms-resource:images/redWide.png"); 
步骤 2: 定义正方形磁贴 此示例重复执行仅图像正方形磁贴的前面步骤。
var squareTileXml = Notifications.TileUpdateManager.getTemplateContent(Notifications.TileTemplateType.tileSquareImage); var squareTileImageAttributes = squareTileXml.getElementsByTagName("image"); squareTileImageAttributes[0].setAttribute("src", "ms-resource:images/graySquare.png"); 
步骤 3: 向宽磁贴的负载添加正方形磁贴 此示例检索 binding 元素，该元素定义 squareTileXml 负载中的正方形磁贴并导入该元素以及将其作为加宽磁贴的同级追加。
var node = tileXml.importNode(squareTileXml.getElementsByTagName("binding").item(0), true); tileXml.getElementsByTagName("visual").item(0).appendChild(node); 
备注前面的步骤在 XML 负载的一个 visual 元素下添加了两个 binding 元素，结果如下所示： 
<tile> <visual lang="en-US> <bindingtemplate="TileSquareImage"><imageid="1"src="ms-appx:///images/graySquare.png"/></binding><bindingtemplate="TileWideImageAndText01"><imageid="1"src="ms-appx:///images/redWide.png"/><textid="1">This tile notification uses ms-resource images</text></binding></visual></tile>
如何借助本地通知使用通知队列
说明步骤 1: 设置选项以启用通知循环 此代码为你的应用启用通知队列。运行应用时，仅需要发起此调用一次，因此应在初始化代码中发起此次调用。
Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().enableNotificationQueue(true); 
步骤 2: 创建磁贴通知 这是所有磁贴通知中的第一步且这种情形与其他任何情形没有区别，此处包含该步骤仅用于完整性。有关详细信息，请参阅快速入门：发送磁贴更新。
var template = Windows.UI.Notifications.TileTemplateType.tileWideText03; var tileXml = Windows.UI.Notifications.TileUpdateManager.getTemplateContent(template); // TODO: Fill in the template with your tile content.// TODO: Define a square tile and add it to tileXML.var tileNotification = new Windows.UI.Notifications.TileNotification(tileXml); 
步骤 3: 授予通知标记 此步骤可选。标记为不超过 16 个字符的字符串加上终止 NULL 字符，用于唯一标识应用中的通知。
tileNotification.tag = "stock.msft"; 
步骤 4: 向磁贴发送通知 
Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().update(tileNotification);
如何清除磁贴通知
说明步骤 1: 清除通知并还原为默认磁贴。 此行代码从应用的磁贴中清除当前通知。
Windows.UI.Notifications.TileUpdateManager.createTileUpdaterForApplication().clear(); 
备注对于启用通知队列且在队列中有通知的磁贴，调用 clear 方法清空队列。
请注意，不能通过云清除通知。尽管本地调用 clear 方法都会清除磁贴而不要加快通知的来源，但是，为了通过定期或推送通知清除磁贴中的通知，你应该发送一个新通知以替换当前内容。[1]