Advanced Live Tiles, Part 3: Lock Screens: Listing 4

The MainPage code-behind source code.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.ApplicationModel.Background;
using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;

// The Blank Page item template is documented at

namespace VSMAdvancedTilesP3Demo
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
        public MainPage()

        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.  The Parameter
        /// property is typically used to configure the page.</param>
        protected async override void OnNavigatedTo(NavigationEventArgs e)
             BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
             Status.Text = GetBadgeAcessMessage(status);

        private string GetBadgeAcessMessage(BackgroundAccessStatus status)
            string message = string.Empty;

            switch (status)
                case BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity:
                    message = "May use active real-time connectivity.";
                case BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity:
                    message = "Always on real-time connectivity.";
                case BackgroundAccessStatus.Denied:
                    message = "User denied lock screen badge access.";
                case BackgroundAccessStatus.Unspecified:
                    message = "Unknown lock screen badge access status.";

            return message;

        private void SendBadge_Click(object sender, RoutedEventArgs e)
            string badge = String.Format("<badge value=\"{0}\"/>", Message.Text);
            XmlDocument xmlDoc = new XmlDocument();
            BadgeNotification badgeNotification = new BadgeNotification(xmlDoc);
            Status.Text = "Lock Screen Badge was sent.";

        private void SendTile_Click(object sender, RoutedEventArgs e)
            string tile = (String.Format("<tile><visual><binding template=\"TileWideText01\">" +
                      "<text id=\"1\">{0}</text>" +
                      "<text id=\"2\"> </text>" +
                    "</binding>" +
                    "<binding template=\"TileSquareText03\">" +
                      "<text id=\"1\">{0}</text>" +
                      "<text id=\"2\"> </text>" +
                    "</binding>" +
                  "</visual>" +
                "</tile>", Message.Text));
            XmlDocument xmlDoc = new XmlDocument();
            TileNotification tileNotification = new TileNotification(xmlDoc);
            Status.Text = "Lock Screen Tile was sent.";

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


  • VS Code Python Tool Does Multiple Interactive Windows

    Code cells from Python scripts by default will still be executed in a same interactive window, but developers can now configure the Python extension to run separate files in separate interactive windows.

  • VS Code Java Team Improves 'Getting Started' Experience

    Microsoft's dev team responsible for the Java on Visual Studio Code extensions released a new update that eases the "getting started" experience, addressing feedback from new users who want an easier onramp.

  • Data Prep for Machine Learning: Encoding

    Dr. James McCaffrey of Microsoft Research uses a full code program and screenshots to explain how to programmatically encode categorical data for use with a machine learning prediction model such as a neural network classification or regression system.

  • Surface Duo Debut Presents Dual-Screen Dev Challenges

    Microsoft officially launched its new dual-screen Android device, Surface Duo, presenting new challenges -- and opportunities -- for developers to leverage the new form factor.

  • What's New in Blazor Tooling Updates

    Here's a quick look at what four major third-party Blazor tooling vendors have offered lately for Microsoft's red-hot project that allows for web development with C# instead of JavaScript.

.NET Insight

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.

Upcoming Events