Čtvercová a široká dlaždice v jedné šabloně
Pokud dáte uživateli tu možnost, tak si může vybrat mezi čtvercovou a širokou dlaždicí. Obě velikosti dlaždic mohou být "živé". Jak ale poznáte, kterou šablonu pro dlaždici použít? Vlastně to řešit ani nemusíte. V jedné aktualizaci dlaždice můžete poslat informaci pro obě velikosti a systém použije tu správnou. Podívejte se do katalogu dlaždic, jak vypadají jednotlivé XML šablony. Element binding, který obsahuje popis dlaždice, můžete v šabloně použít dvakrát. Jednou pro čtvercovou a jednou pro širokou dlaždici:
<tile>
<visual>
<binding template="TileSquareBlock">
<text id="1">Text Field 1</text>
<text id="2">Text Field 2</text>
</binding>
<binding template="TileWideText01">
<text id="1">Text Header Field 1</text>
<text id="2">Text Field 2</text>
<text id="3">Text Field 3</text>
<text id="4">Text Field 4</text>
<text id="5">Text Field 5</text>
</binding>
</visual>
</tile>
Implementace pomocí C# může vypadat například takto:
XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideText01);
XmlNodeList tileTextAttributes = tileXml.GetElementsByTagName("text");
tileTextAttributes[0].InnerText = _txtTileText.Text;
XmlDocument squareTileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04);
XmlNodeList squareTileTextAttributes = squareTileXml.GetElementsByTagName("text");
squareTileTextAttributes[0].InnerText = _txtTileText.Text;
IXmlNode node = tileXml.ImportNode(squareTileXml.GetElementsByTagName("binding").Item(0), true);
tileXml.GetElementsByTagName("visual").Item(0).AppendChild(node);
ScheduledTileNotification stn = new ScheduledTileNotification(tileXml, DateTime.Now.AddSeconds(10));
stn.ExpirationTime = DateTime.Now.AddSeconds(20);
TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(stn);
Pomocí objektu ScheduledTileNotification vytvoříte dlaždici, která se zobrazí v určený čas.
Štěpán, @stepanb