Enabling User-Updated Live Tiles in Windows 8: Listing 1

LiveTile.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;

namespace VSMUpdateLiveTilesDemo.Common
{
    public class LiveTile
    {
        public TileTemplateType WideTileType { get; set; }
        public TileTemplateType SquareTileType { get; set; }
        public string Text { get; set; }
        public string ImageSource { get; set; }

        public LiveTile(TileTemplateType wideTemplate, TileTemplateType squareTemplate)
        {
            WideTileType = wideTemplate;
            SquareTileType = squareTemplate;
        }

        public void Update()
        {
            XmlDocument wideTile = TileUpdateManager.GetTemplateContent(WideTileType);
            SetTextAndImage(wideTile);
            XmlDocument squareTile = TileUpdateManager.GetTemplateContent(SquareTileType);
            SetTextAndImage(squareTile);
            IXmlNode visual = wideTile.ImportNode(squareTile.GetElementsByTagName("binding").Item(0), true);
            wideTile.GetElementsByTagName("visual").Item(0).AppendChild(visual);
            TileNotification tile = new TileNotification(wideTile);
            TileUpdateManager.CreateTileUpdaterForApplication().Update(tile);
        }

        private void SetTextAndImage(XmlDocument tileXml)
        {
            XmlNodeList text = tileXml.GetElementsByTagName("text");
            text.Item(0).AppendChild(tileXml.CreateTextNode(Text));
            XmlNodeList images = tileXml.GetElementsByTagName("image");
            XmlElement image = (XmlElement)images.Item(0);
            if (image != null && !String.IsNullOrWhiteSpace(ImageSource))
            {
                image.SetAttribute("src", ImageSource);
            }
        }
    }

About the Author

Eric Vogel is a Senior Software Developer for Red Cedar Solutions Group in Okemos, Michigan. He is the president of the Greater Lansing User Group for .NET. Eric enjoys learning about software architecture and craftsmanship, and is always looking for ways to create more robust and testable applications. Contact him at [email protected].

comments powered by Disqus

Featured

  • Visual Studio Takes Aim at Copilot Billing Shock

    Beyond Copilot usage visibility, the June update delivers several other enhancements centered on AI-assisted development, security and quality-of-life improvements. Here's a quick rundown of the remaining additions announced by Microsoft.

  • Claude AI Gets Yet Another Boost in VS Code 1.128

    The July 8, 2026, Visual Studio Code update expands agent workflows, chat attachments, browser-tab controls, OS-level shortcuts and enterprise telemetry management.

  • TypeScript 7 Arrives to Rock VS Code with Go-Powered Speed

    Microsoft says TypeScript 7, announced July 8, brings native Go performance to VS Code, Visual Studio and other editors.

  • Full-Stack with a Side of Copilot: Building and Deploying an App the AI-Accelerated Way

    In this Q&A, developer and VSLive! speaker Esteban Garcia explains how GitHub Copilot can accelerate the full software development lifecycle -- from architecture and code to tests, CI/CD, and Azure deployment -- and how to use it as a repeatable engineering workflow rather than just a faster autocomplete tool.

Subscribe on YouTube