<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Corrado's BLogs</title>
        <link>http://blogs.ugidotnet.org/corrado/Default.aspx</link>
        <description>Online thoughts of a .NET Funatic</description>
        <language>it-IT</language>
        <copyright>Corrado Cavalli</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <image>
            <title>Corrado's BLogs</title>
            <url>http://blogs.ugidotnet.org/images/RSS2Image.gif</url>
            <link>http://blogs.ugidotnet.org/corrado/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>MVVM Stack for WinJS</title>
            <category>Model-View-ViewModel</category>
            <category>WinJs</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2013/03/04/mvvm-stack-for-winjs.aspx</link>
            <description>I've put a small demo of Model-View-ViewModel (MVVM) applied to WinJS applications on Codeplex: read about it &lt;a target="_blank" href="http://bit.ly/mvvmstack1"&gt;here&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/101461.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2013/03/04/mvvm-stack-for-winjs.aspx</guid>
            <pubDate>Mon, 04 Mar 2013 11:16:58 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2013/03/04/mvvm-stack-for-winjs.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/101461.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/101461.aspx</trackback:ping>
        </item>
        <item>
            <title>Two-Way databinding in WinJS</title>
            <category>Other</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/11/05/two-way-databinding-in-winjs.aspx</link>
            <description>Read the post &lt;a href="http://bit.ly/SHbG7u"&gt;here&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/101306.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/11/05/two-way-databinding-in-winjs.aspx</guid>
            <pubDate>Mon, 05 Nov 2012 07:15:31 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/11/05/two-way-databinding-in-winjs.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/101306.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/101306.aspx</trackback:ping>
        </item>
        <item>
            <title>WinJS Custom Controls</title>
            <category>WinJs</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/07/21/winjs-custom-controls.aspx</link>
            <description>&lt;div&gt;Controls are the basic blocks of any application, you use controls everywhere and also HTML Metro apps are part of the game, you add a control inside a HTML Metro page just placing a &lt;strong&gt;&amp;lt;div&amp;gt;&lt;/strong&gt; with a special “&lt;strong&gt;data-win-control&lt;/strong&gt;” attribute in it:    &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;here’s an example:&lt;/div&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;="WinJS.UI.SemanticZoom"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;if you have pages (even in different applications) that need some special kind of functionality paired with some custom UI, custom controls allows you to reach the “&lt;em&gt;write once, use everywhere&lt;/em&gt;” paradigm (unless you like reinventing the wheel of course…)&lt;br /&gt;Let’s see how you can create your own custom control and use it inside a HTML Metro application, simulating a simple custom countdown control.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;em&gt;Step1: Design the user interface&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;While not strictly a requirement I personally like to start from the appeareance of my control, so I fire up &lt;strong&gt;Expression Blend&lt;/strong&gt; and start design it:&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/32eac4f9bc22_8681/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/32eac4f9bc22_8681/image_thumb_1.png" width="827" height="450" /&gt;&lt;/a&gt; &lt;font size="1"&gt;image-1&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;I’ve highlighted the HTML representing my control’s UI and, on right side, associated CSS, &lt;br /&gt;question now is: &lt;em&gt;how do we turn it in a WinJS custom control?&lt;/em&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;em /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;em&gt;Step2: Define public interface&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;The countdown control will expose:&lt;/font&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt; &lt;strong&gt;initialValue&lt;/strong&gt; property: will be initialized with countdown initial value&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt; &lt;strong&gt;start&lt;/strong&gt; method: begins countdown&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;countdownexpired&lt;/strong&gt; and &lt;strong&gt;coundownstarted&lt;/strong&gt; events&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;em&gt;Step3: The code&lt;/em&gt;&lt;/strong&gt; sss&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;Below is the control’s code contained in a separate &lt;em&gt;countdown.js&lt;/em&gt; file:&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;//Countdown control&lt;/span&gt;
(&lt;span class="kwrd"&gt;function&lt;/span&gt; (winJs) {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; _events = [&lt;span class="str"&gt;"countdownexpired"&lt;/span&gt;, &lt;span class="str"&gt;"coundownstarted"&lt;/span&gt;];

    WinJs.Namespace.define(&lt;span class="str"&gt;"MyApp.Controls"&lt;/span&gt;, {
        Countdown: WinJs.Class.define(&lt;span class="kwrd"&gt;function&lt;/span&gt; (element, options) {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!element) &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="str"&gt;"element must be provided"&lt;/span&gt;;
            options = options || {};
            &lt;span class="kwrd"&gt;this&lt;/span&gt;._element = element;
            &lt;span class="kwrd"&gt;this&lt;/span&gt;._element.winControl = &lt;span class="kwrd"&gt;this&lt;/span&gt;;
            &lt;span class="kwrd"&gt;this&lt;/span&gt;._buildVisualTree();
            winJs.UI.setOptions(&lt;span class="kwrd"&gt;this&lt;/span&gt;, options);
        },
            {
                &lt;span class="rem"&gt;//Private members&lt;/span&gt;
                _element: &lt;span class="kwrd"&gt;null&lt;/span&gt;,
                _cdn_host: &lt;span class="kwrd"&gt;null&lt;/span&gt;,
                _cdn_content: &lt;span class="kwrd"&gt;null&lt;/span&gt;,
                _timerId: 0,
                _progress: 0,
                _buildVisualTree: &lt;span class="kwrd"&gt;function&lt;/span&gt; () {
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_host = document.createElement(&lt;span class="str"&gt;"div"&lt;/span&gt;);
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_host.className = &lt;span class="str"&gt;"cdn-host"&lt;/span&gt;;
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content = document.createElement(&lt;span class="str"&gt;"span"&lt;/span&gt;);
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content.className = &lt;span class="str"&gt;"cdn-content win-type-xx-large"&lt;/span&gt;;
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_host.appendChild(&lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content);
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._element.appendChild(&lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_host);
                },
                _onTick: &lt;span class="kwrd"&gt;function&lt;/span&gt; () {
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._progress--;
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content.innerText = &lt;span class="kwrd"&gt;this&lt;/span&gt;._progress;
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;._progress === 0) {
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;.dispatchEvent(&lt;span class="str"&gt;"countdownexpired"&lt;/span&gt;);
                        clearInterval(&lt;span class="kwrd"&gt;this&lt;/span&gt;._timerId);
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;._timerId = 0;
                    }
                },

                &lt;span class="rem"&gt;//Public members&lt;/span&gt;
                element: {
                    get: &lt;span class="kwrd"&gt;function&lt;/span&gt; () { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._element; }
                },
                initialValue: {
                    get: &lt;span class="kwrd"&gt;function&lt;/span&gt; () { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content.innerText; },
                    set: &lt;span class="kwrd"&gt;function&lt;/span&gt; (value) {
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;._cdn_content.innerText = value;
                    }
                },

                &lt;span class="rem"&gt;//Play advertising&lt;/span&gt;
                start: &lt;span class="kwrd"&gt;function&lt;/span&gt; () {
                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;this&lt;/span&gt;._timerId === 0) {
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;._progress = &lt;span class="kwrd"&gt;this&lt;/span&gt;.initialValue;
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;._timerId = setInterval(&lt;span class="kwrd"&gt;this&lt;/span&gt;._onTick.bind(&lt;span class="kwrd"&gt;this&lt;/span&gt;), 1000);
                        &lt;span class="kwrd"&gt;this&lt;/span&gt;.dispatchEvent(&lt;span class="str"&gt;"coundownstarted"&lt;/span&gt;);
                    }
                }
            })
    });

    winJs.Class.mix(MyApp.Controls.Countdown, winJs.Utilities.eventMixin);
    winJs.Class.mix(MyApp.Controls.Countdown, winJs.Utilities.createEventProperties(_events));

}(WinJS))
&lt;style type="text/css"&gt;&lt;![CDATA[csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
]]&gt;&lt;/style&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font size="3"&gt;Let’s dissect it:&lt;/font&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;A WinJS custom control is &lt;em&gt;just a class that has a constructor accepting two parameters (if ‘class’ sounds weird to you see &lt;a href="http://blogs.ugidotnet.org/corrado/archive/2012/03/21/winjs-namespaces-and-classes.aspx"&gt;my previous post&lt;/a&gt;)&lt;/em&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;The element decorated with ‘data-win-control’ attribute (element)&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;An optional ‘options’ object containing control’s initialization parameters.&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;br /&gt;Our control will be contained inside a &lt;strong&gt;MyApp.Controls&lt;/strong&gt; namespace.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;Inside constructor I associate passed element with control's element property and I also add associate control’s instance with a conventionally named &lt;strong&gt;winControl&lt;/strong&gt; property appended to passed element so that it can easily accessible from page’s javascript code.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;The &lt;strong&gt;buildVisualTree&lt;/strong&gt; function uses javascript to recreate control’s DOM and appends it to passed element while &lt;strong&gt;setOption&lt;/strong&gt;s is a WinJS helper method that associates passed options to control so that it can be correctly initialized.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;Since the control exposes events we finally use a couple of WinJS helper methods to ‘mix’ control’s class with a class defined inside WinJS framework to add all stuff required to handle and raise events (like &lt;em&gt;onXYZ&lt;/em&gt; methods or &lt;em&gt;addEventListener/removeEventListener&lt;/em&gt; support)&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;The rest of the code is just countdown code implementation, nothing really new here.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;em&gt;Step4: Using the control&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Calibri"&gt;To embed the code the control inside a HTML page we use exactly the same approach used for any WinJS control, add both required javasript and css references and decorate placeholder div with appropriate attributes, here’s the complete HTML page content:&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DemoCustomControl&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="rem"&gt;&amp;lt;!-- WinJS references --&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.1.0.RC/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.1.0.RC/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.1.0.RC/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;!-- DemoCustomControl references --&amp;gt;
    &amp;lt;link href=&lt;span class="str"&gt;"/css/default.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt; /&amp;gt;
    &amp;lt;link href=&lt;span class="str"&gt;"/countdown.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt; type=&lt;span class="str"&gt;"text/css"&lt;/span&gt;&amp;gt;
    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; src=&lt;span class="str"&gt;"js/controls/countdown.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&lt;span class="str"&gt;"/js/default.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;script&amp;gt;
        WinJS.UI.processAll();
        WinJS.Utilities.ready(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; countdown = document.getElementById(&lt;span class="str"&gt;"countdown1"&lt;/span&gt;);
            countdown.winControl.addEventListener(&lt;span class="str"&gt;"countdownexpired"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; () {
                &lt;span class="kwrd"&gt;var&lt;/span&gt; msg = document.getElementById(&lt;span class="str"&gt;"result"&lt;/span&gt;);
                msg.textContent = &lt;span class="str"&gt;"done!"&lt;/span&gt;;
            }, &lt;span class="kwrd"&gt;false&lt;/span&gt;);

            document.getElementById(&lt;span class="str"&gt;"start"&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; () {
                countdown.winControl.start();
            }, &lt;span class="kwrd"&gt;false&lt;/span&gt;);

        }, &lt;span class="kwrd"&gt;true&lt;/span&gt;).done();
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="countdown1"&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;="MyApp.Controls.Countdown"&lt;/span&gt; &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;="{initialValue:4}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="start"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Start&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="result"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd" /&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;A couple of notes:&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;we invoke &lt;strong&gt;WinJS.UI.processAll()&lt;/strong&gt; method to force ‘transformation’ of ‘countdown1’ div into countdown control.&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;we use &lt;strong&gt;WinJS.Utilities.ready()&lt;/strong&gt; function to be sure that DOM tree is available when code runs (something that JQuery users know quite well).&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;note how countdown control is initialized using data-win-options attribute to 4 seconds.&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri" /&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;Pressing start you will now see countdown starting and a message appearing at the end:&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/32eac4f9bc22_8681/image_6.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/32eac4f9bc22_8681/image_thumb_2.png" width="273" height="123" /&gt;&lt;/a&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri" /&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Calibri"&gt;I found little documentation about creating custom control, that’s the reason of this post, if you want to know more I recommend this Build session: &lt;a title="http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-846T" href="http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-846T"&gt;http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-846T&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ac1cba9a-bc31-42c2-8525-06e651eaff76" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/winjs" rel="tag"&gt;winjs&lt;/a&gt;,&lt;a href="http://technorati.com/tags/custom+controls" rel="tag"&gt;custom controls&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/101124.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/07/21/winjs-custom-controls.aspx</guid>
            <pubDate>Sat, 21 Jul 2012 13:00:52 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/07/21/winjs-custom-controls.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/101124.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/101124.aspx</trackback:ping>
        </item>
        <item>
            <title>Using C# code inside a Metro HTML application</title>
            <category>WinRT</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/04/27/using-c-code-inside-an-html-application.aspx</link>
            <description>&lt;p&gt;Let’s say you’re working on a HTML Metro app and you’d like to reuse some C# code instead of rewriting, the good new is that you can, here’s how:&lt;/p&gt;  &lt;p&gt;Create a blank new WinJS application and add a div inside default.html page:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="output"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p /&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;Now add a new C# library to WinJS solution:

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_2.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_thumb.png" width="350" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change the output type of the library project to &lt;strong&gt;WinMD&lt;/strong&gt; file&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_thumb_1.png" width="371" height="103" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;let’s add a couple of classes to C# library, we’re going to consume them from our HTML application:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;sealed&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Person 
{
      &lt;span class="kwrd"&gt;public&lt;/span&gt; Person(&lt;span class="kwrd"&gt;string&lt;/span&gt; name)
       {
          &lt;span class="kwrd"&gt;this&lt;/span&gt;.Name = name;
          &lt;span class="kwrd"&gt;this&lt;/span&gt;.Address = &lt;span class="kwrd"&gt;new&lt;/span&gt; Address() { City = &lt;span class="str"&gt;"Milano"&lt;/span&gt;, Code = 20100 };
       }

       &lt;span class="kwrd"&gt;public&lt;/span&gt; Address Address { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }

       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Age { get; set; }

       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name { get; &lt;span class="kwrd"&gt;private&lt;/span&gt; set; }

       &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CalcSum(&lt;span class="kwrd"&gt;int&lt;/span&gt; a, &lt;span class="kwrd"&gt;int&lt;/span&gt; b)
       {
          &lt;span class="kwrd"&gt;return&lt;/span&gt; a + b;
       }
 }

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;sealed&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Address
{
      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; City { get; set; }

      &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Code { get; set; }
}&lt;/pre&gt;

&lt;p /&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;note how both Person and Address &lt;u&gt;are marked as sealed&lt;/u&gt;, this is a mandatory requisite if you want expose them to others WinRT languages.

  &lt;br /&gt;Let’s now add a reference from HTML application to our C# library:

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_6.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_thumb_2.png" width="491" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and create an instance of Person class using Javascript:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;app.onactivated = &lt;span class="kwrd"&gt;function&lt;/span&gt; (eventObject) {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (eventObject.detail.previousExecutionState !== Windows.ApplicationModel.Activation.ApplicationExecutionState.terminated) {
                &lt;span class="rem"&gt;// TODO: This application has been newly launched. Initialize &lt;/span&gt;
                &lt;span class="rem"&gt;// your application here.&lt;/span&gt;
            } &lt;span class="kwrd"&gt;else&lt;/span&gt; {
                &lt;span class="rem"&gt;// TODO: This application has been reactivated from suspension. &lt;/span&gt;
                &lt;span class="rem"&gt;// Restore application state here.&lt;/span&gt;
            }
            WinJS.UI.processAll();

            &lt;span class="rem"&gt;//This uses C# objects&lt;/span&gt;
            &lt;span class="kwrd"&gt;var&lt;/span&gt; person = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyLib.Person(&lt;span class="str"&gt;"corrado"&lt;/span&gt;);
            person.age = 12;
            &lt;span class="kwrd"&gt;var&lt;/span&gt; res = person.calcSum(3, 5);            
            output.innerText = &lt;span class="str"&gt;"out is:"&lt;/span&gt; + person.name + &lt;span class="str"&gt;"-"&lt;/span&gt; + person.age + &lt;span class="str"&gt;"-"&lt;/span&gt; + res + &lt;span class="str"&gt;"-"&lt;/span&gt; + person.address.city;
        }&lt;/pre&gt;

&lt;p /&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;and here’s simulator output:

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_8.png" rel="lightbox"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Using-C-code-inside-an-HTML-application_78CF/image_thumb_3.png" width="244" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know it might sound strange to mix Javascript with C# when you can do exactly same things with both languages on Metro but when you have some complex logic 
  &lt;br /&gt;or you want to hide some code as much as possible (you can do exactly the same with C++ code) this may be a viable alternative.&lt;/p&gt;

&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:67cea6a2-1d47-4254-bfc9-b64fe4ff2225" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WinJS" rel="tag"&gt;WinJS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Metro" rel="tag"&gt;Metro&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100980.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/04/27/using-c-code-inside-an-html-application.aspx</guid>
            <pubDate>Fri, 27 Apr 2012 10:07:53 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/04/27/using-c-code-inside-an-html-application.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100980.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100980.aspx</trackback:ping>
        </item>
        <item>
            <title>Test Azure configuration change using local development environment</title>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/04/20/test-azure-configuration-change-using-local-development-environment.aspx</link>
            <description>&lt;p&gt;Azure applications, may have a set of parameters associated, this allows you to change your app configuration without having to redeploy the entire package (a long operation in any case).   &lt;br /&gt;You can control how an application reacts to a parameter modification by subscribing &lt;strong&gt;RoleEnvironment&lt;/strong&gt;.&lt;em&gt;Changing&lt;/em&gt; event, if you want to restart the whole role when a parameter change you can simply set &lt;strong&gt;Cancel=true&lt;/strong&gt; inside &lt;em&gt;Changing&lt;/em&gt; event:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;RoleEnvironment.Changing += (s, e) =&amp;gt;&lt;br /&gt;                {&lt;br /&gt;                    e.Cancel = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;                };&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;



&lt;p&gt;in this case, when application’s .cscfg file content change, the role is shut down then restarted so that new parameters can be properly reloaded. If you don’t want to restart the role but handle modifications yourself you can handle &lt;strong&gt;Changes&lt;/strong&gt; parameter passed to &lt;strong&gt;RoleEnvironment&lt;/strong&gt;.&lt;em&gt;Changing&lt;/em&gt; event.&lt;/p&gt;

&lt;p&gt;How can you test this logic when your app runs inside Azure local compute emulator? here are basic step:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Run you app locally and read what is current development id by opening compute emulator UI and reading what between parenthesis (2103 in following example) following &lt;strong&gt;deploymentXX&lt;/strong&gt; label:

    &lt;br /&gt;

    &lt;br /&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/091ec32d8a13_D0C8/image_2.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/091ec32d8a13_D0C8/image_thumb.png" width="448" height="131" /&gt;&lt;/a&gt;

    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;Run &lt;strong&gt;Windows Azure Command Prompt&lt;/strong&gt; and navigate to the folder that contains your configuration file&lt;em&gt; ServiceConfiguration.cscfg&lt;/em&gt; and run this command:

    &lt;br /&gt;&lt;strong&gt;
      &lt;br /&gt;csrun /update:[id];ServiceConfiguration.cscfg

      &lt;br /&gt;&lt;/strong&gt;

    &lt;br /&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/091ec32d8a13_D0C8/image_4.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/091ec32d8a13_D0C8/image_thumb_1.png" width="421" height="150" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;And you’ll see your role reacting to configuration change appropriately.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:90f8abfb-d1e5-4ff9-8a22-513a21b8a300" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100967.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/04/20/test-azure-configuration-change-using-local-development-environment.aspx</guid>
            <pubDate>Fri, 20 Apr 2012 16:28:19 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/04/20/test-azure-configuration-change-using-local-development-environment.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100967.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100967.aspx</trackback:ping>
        </item>
        <item>
            <title>Copying and moving styles using Expression Blend for HTML</title>
            <category>WinRT</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/04/16/copying-and-moving-styles-using-expression-blend-for-html.aspx</link>
            <description>&lt;p&gt;Here’s a couple of Blend tricks I’d like to share:&lt;/p&gt;  &lt;p&gt;Let’s say you have this HTML fragment:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;H1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Content goes here&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;H1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;by looking at Blend’s css properties pane you can see that, it has some css rules automatically applied:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_2.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb.png" width="286" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;you can copy the applied rule and paste it into another stylesheet by right clicking the highlighted row into selecting &lt;strong&gt;copy&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_4.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_1.png" width="287" height="180" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now go to the Styles pane and click the “+” button shown in the picture below to add a new stylesheet:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_6.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_2.png" width="374" height="135" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then right click new file and select &lt;strong&gt;paste&lt;/strong&gt; from context menu to paste the selector.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_8.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_3.png" width="268" height="241" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;If you already have the same selector inside target file the properties will be merged (you’ll see &lt;strong&gt;Paste properties&lt;/strong&gt; instead of Paste menu) of course you can also right click the selector inside source file and copy/paste from there but in this case you will copy all selectors not just applied one.&lt;/p&gt;

&lt;p&gt;Let’s now suppose you change h1’s background color:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_10.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_4.png" width="279" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;this results in this inline style:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;H1&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="background-color: #43A626;"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Content goes here&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;H1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p /&gt;&lt;style type="text/css"&gt;&lt;![CDATA[

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;how do I move the inline style to h1’s selector inside my test.css? select Inline Style on Blend’s pane and select &lt;strong&gt;Copy&lt;/strong&gt; from context menu:

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_12.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_5.png" width="334" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then select target stylesheet, target rule (if any), right click and then &lt;strong&gt;Paste properties&lt;/strong&gt; from context menu:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_14.png" rel="lightbox"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Copying-styles-using-Expression-Blend-fo_5884/image_thumb_6.png" width="309" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;to have properties added to selected file or rule.&lt;/p&gt;

&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d1cecafb-fe39-496a-916e-cda765f4424a" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Blend+for+HTML" rel="tag"&gt;Blend for HTML&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100951.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/04/16/copying-and-moving-styles-using-expression-blend-for-html.aspx</guid>
            <pubDate>Mon, 16 Apr 2012 08:57:51 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/04/16/copying-and-moving-styles-using-expression-blend-for-html.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100951.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100951.aspx</trackback:ping>
        </item>
        <item>
            <title>Fragment loading and Navigation in HTML5 Metro applications</title>
            <category>WinRT</category>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/04/11/fragment-loading-and-navigation-in-html5-metro-applications.aspx</link>
            <description>&lt;p&gt;Navigation is one of the core concepts of any Metro application, in this post I’ll show how can you implement it in a HTML based Metro application.&lt;/p&gt;  &lt;p&gt;The easiest way is to use the same common approach used by millions of HTML pages: using an hyperlink.    &lt;br /&gt;Assuming you are in default.html page and wish to navigate to page2.html all you need to do is add something like:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb_2.png" rel="lightbox"&gt;&lt;img title="image_thumb" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb_thumb.png" width="244" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="814" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;div class="csharpcode"&gt;           &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DemoNavigation&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="rem"&gt;&amp;lt;!-- WinJS references --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.0.6/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &amp;lt;!-- DemoNavigation references --&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;link href=&lt;span class="str"&gt;"default.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"default.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="../page2/page2.html"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Click here to navigate to Page 2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;&lt;em&gt;&lt;font size="2"&gt;default.html&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you run the app and click the hyperlink you move straight to page2.html. 
  &lt;br /&gt;This is approach is quite common, works fine (of course) but has a main drawback: you loose state when you move from default.html to page2.html, so if you need to maintain state, something that’s quite common in client application &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-bottom-style: none; border-right-style: none; border-left-style: none" alt="Smile" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/wlEmoticon-smile_2.png" /&gt;, you’re on your own.&lt;/p&gt;

&lt;p&gt;The problem is the same in web application that’s why technologies like ajax or &lt;a href="http://en.wikipedia.org/wiki/Single-page_application"&gt;single page applications&lt;/a&gt; are gaining more and more momentum.&lt;/p&gt;

&lt;p&gt;Let’s now briefly see how you can embed an HTML fragment into default.html using WinJS’s &lt;strong&gt;HtmlControl&lt;/strong&gt;, here’s the html you need to add to default.html page:&lt;/p&gt;

&lt;h5&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb1_2.png" rel="lightbox"&gt;&lt;img title="image_thumb1" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb1" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb1_thumb.png" width="237" height="244" /&gt;&lt;/a&gt;&lt;/h5&gt;

&lt;table cellspacing="0" cellpadding="2" width="635" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td width="633"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!--pageFragment.html--&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;="color: #b6ff00 "&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="txt"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="win-type-x-large win-type-ellipsis"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;This is a html fragment&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;table cellspacing="0" cellpadding="2" width="658" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td width="656"&gt;  &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="win-title"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;This is main page&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;="WinJS.UI.HtmlControl"&lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;         &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;="{uri:'../fragments/pageFragment.html'}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Launching the app you’ll see exactly what expected but with some limitations:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb4_2.png" rel="lightbox"&gt;&lt;img title="image_thumb4" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb4" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb4_thumb.png" width="488" height="106" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the fragment can’t reference any css nor javascript file, and you are not informed when the fragment is loaded, luckily there’s a way to get some javascript code executed when fragment is loaded into the DOM: &lt;strong&gt;WinJS.Pages.define&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let’s assume we wish to dynamically change the text of the fragment after it has been loaded so let’s add a new &lt;strong&gt;pagedefine.js&lt;/strong&gt; file (just for better understanding and separation) to our solution:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb5_2.png" rel="lightbox"&gt;&lt;img title="image_thumb5" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb5" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb5_thumb.png" width="237" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="509" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="507"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;reference path="//Microsoft.WinJS.0.6//js/base.js" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="str"&gt;'use strict'&lt;/span&gt;;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    WinJS.UI.Pages.define(&lt;span class="str"&gt;"../fragments/pageFragment.html"&lt;/span&gt;,&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            ready:&lt;span class="kwrd"&gt;function&lt;/span&gt;(element,options)&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; text = document.getElementById(&lt;span class="str"&gt;"txt"&lt;/span&gt;);&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                text.innerText = &lt;span class="kwrd"&gt;new&lt;/span&gt; Date().toLocaleString();&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            }        &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        });&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;}());&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;table cellspacing="0" cellpadding="2" width="528" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td width="526"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;br /&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!-- WinJS references in default.html --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.0.6/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; src=&lt;span class="str"&gt;"../../js/pageDefine.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;The define method available on Pages object accept the uri that uniquely identifies the page that is going to be loaded and an object exposing a set of properties, among these, &lt;strong&gt;ready&lt;/strong&gt; is the function that will be called when page has been loaded into DOM, then the code just changes element content with current date:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb8_2.png" rel="lightbox"&gt;&lt;img title="image_thumb8" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb8" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb8_thumb.png" width="478" height="89" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;we’re now in a state where we can load a HTML fragment and run some code after it has been loades, before going further I need to point out that HmlControl can only load local html, if you need to load external content &lt;strong&gt;iFrame&lt;/strong&gt; is your friend.&lt;/p&gt;

&lt;p&gt;Problem now is: what if I need to load the fragment programmatically? (e.g. on a button click), let’s remove HtmlControl from default.html and let’s inject the fragment with a little help from WinJS:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="586" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="584"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DemoNavigation&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="rem"&gt;&amp;lt;!-- WinJS references in default.html --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.0.6/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt; src=&lt;span class="str"&gt;"../../js/pageDefine.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;!-- DemoNavigation references --&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &amp;lt;link href=&lt;span class="str"&gt;"default.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"default.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="win-title"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;This is main page&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnLoad"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Load fragment&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="contentHost"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;table cellspacing="0" cellpadding="2" width="1025" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="1023"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;//default.js&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="str"&gt;"use strict"&lt;/span&gt;;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; app = WinJS.Application;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    app.onactivated = &lt;span class="kwrd"&gt;function&lt;/span&gt; (eventObject) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (eventObject.detail.previousExecutionState !== Windows.ApplicationModel.Activation.ApplicationExecutionState.terminated) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                &lt;span class="rem"&gt;// TODO: This application has been newly launched. Initialize &lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="rem"&gt;// your application here.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            } &lt;span class="kwrd"&gt;else&lt;/span&gt; {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="rem"&gt;// TODO: This application has been reactivated from suspension. &lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                &lt;span class="rem"&gt;// Restore application state here.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            }&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            WinJS.UI.processAll().then(&lt;span class="kwrd"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                WinJS.Utilities.id(&lt;span class="str"&gt;"btnLoad"&lt;/span&gt;).listen(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                    &lt;span class="rem"&gt;//Load fragment&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;var&lt;/span&gt; host=WinJS.Utilities.id(&lt;span class="str"&gt;"contentHost"&lt;/span&gt;)[0];&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    WinJS.UI.Pages.render(&lt;span class="str"&gt;"../fragments/pageFragment.html"&lt;/span&gt;, host, { data: &lt;span class="str"&gt;'data2share'&lt;/span&gt; });&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                });&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            }).done();&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        }&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    };    &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    app.start();&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;})();&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;In default.html I added a button and a “contentHost” div whose role is to be the container for for dynamically loaded content, default.js subscribes button’s click event (using &lt;strong&gt;WinJS.Utilities&lt;/strong&gt; methods) and invokes &lt;strong&gt;WinJS.Pages.render&lt;/strong&gt; method. 

  &lt;br /&gt;WinJS.Pages.render method accepts the uri of the fragment to load, the host element where fragment will be appended and optional data to pass to loaded fragment. 

  &lt;br /&gt;Here’s how I changed fragment’s code to handle passed parameter:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="400" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="400"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;reference path="//Microsoft.WinJS.0.6//js/base.js" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="str"&gt;'use strict'&lt;/span&gt;;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    WinJS.UI.Pages.define(&lt;span class="str"&gt;"../fragments/pageFragment.html"&lt;/span&gt;,&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            ready:&lt;span class="kwrd"&gt;function&lt;/span&gt;(element,options)&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; text = document.getElementById(&lt;span class="str"&gt;"txt"&lt;/span&gt;);&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                text.innerText = options.data;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            }        &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        });&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;}());&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;result, after clicking “Load fragment” button, is:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb10_2.png" rel="lightbox"&gt;&lt;img title="image_thumb10" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb10" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb10_thumb.png" width="494" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We now know how to dynamically load content into live DOM.&lt;/p&gt;

&lt;p&gt;About page navigation: the best way to include it in a Html5 Metro app is to start with the &lt;strong&gt;Navigation Application&lt;/strong&gt; template that creates all the infrastructure required to support navigating between pages while maintaining state, here’s what get’s created once you select the template:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb11_2.png" rel="lightbox"&gt;
    &lt;br /&gt;&lt;img title="image_thumb11" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb11" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb11_thumb.png" width="241" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="561" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="559"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre&gt;&lt;span class="lnum"&gt; &lt;/span&gt;&lt;/pre&gt;

          &lt;div class="csharpcode"&gt;
            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!--default.html--&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DemoNavigation2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="rem"&gt;&amp;lt;!-- WinJS references --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.0.6/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &amp;lt;!-- DemoNavigation2 references --&amp;gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;link href=&lt;span class="str"&gt;"/css/default.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"/js/default.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"/js/navigator.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="contenthost"&lt;/span&gt; &lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;="DemoNavigation2.PageControlNavigator"&lt;/span&gt; &lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;="{home: '/html/homePage.html'}"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;/pre&gt;

            &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

            &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
          &lt;/div&gt;
          &lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;&lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;As you can see homePage.html (the starting page) contains a &lt;strong&gt;PageControlNavigator&lt;/strong&gt; control that is defined inside &lt;strong&gt;navigator.js&lt;/strong&gt; that basically uses &lt;strong&gt;WinJS.Pages.render&lt;/strong&gt; to append other pages to &lt;em&gt;contenthost&lt;/em&gt; div and adds typical navigation features like backstack etc… the control is configured via &lt;strong&gt;data-win-options&lt;/strong&gt; to display &lt;strong&gt;homePage.html&lt;/strong&gt; as initial content. 

  &lt;br /&gt;To add a page that can be navigated, let’s add a new folder named &lt;strong&gt;details&lt;/strong&gt; and inside it a new Page control named &lt;strong&gt;details.html&lt;/strong&gt; (see below):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb14_2.png" rel="lightbox"&gt;&lt;img title="image_thumb14" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image_thumb14" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/000085578c57_14BCB/image_thumb14_thumb.png" width="204" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="569" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="567"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;//detail.js&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="str"&gt;"use strict"&lt;/span&gt;;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="rem"&gt;// This function is called whenever a user navigates to this page. It&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="rem"&gt;// populates the page elements with the app's data.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; ready(element, options) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;// TODO: Initialize the fragment here.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    }&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; updateLayout(element, viewState) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="rem"&gt;// TODO: Respond to changes in viewState.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    }&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    WinJS.UI.Pages.define(&lt;span class="str"&gt;"/html/details/details.html"&lt;/span&gt;, {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        ready: ready,&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        updateLayout: updateLayout&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    });&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;})();&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;p&gt;Adding a new page control results in three files: the html, the css and the javascript code behind that, as you see below, it includes the necessary define invocation so that, inside &lt;strong&gt;ready&lt;/strong&gt; handler, we can run page’s initialization code. 

  &lt;br /&gt;The only thing missing is triggering navigation from &lt;strong&gt;homePage.html&lt;/strong&gt; to &lt;strong&gt;details.html&lt;/strong&gt;, let’s assume this would happen, again, via a button:&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" width="585" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top" width="583"&gt;
        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;&amp;lt;!--homePage.html--&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;meta&lt;/span&gt; &lt;span class="attr"&gt;charset&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;homePage&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="rem"&gt;&amp;lt;!-- WinJS references --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;link&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/css/ui-dark.css"&lt;/span&gt; &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="stylesheet"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="//Microsoft.WinJS.0.6/js/base.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"//Microsoft.WinJS.0.6/js/ui.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;link href=&lt;span class="str"&gt;"/css/default.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &amp;lt;link href=&lt;span class="str"&gt;"/css/homePage.css"&lt;/span&gt; rel=&lt;span class="str"&gt;"stylesheet"&lt;/span&gt;&amp;gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"/js/homePage.js"&lt;/span&gt;&amp;gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="rem"&gt;&amp;lt;!-- The content that will be loaded and displayed. --&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="fragment homepage"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;header&lt;/span&gt; &lt;span class="attr"&gt;aria-label&lt;/span&gt;&lt;span class="kwrd"&gt;="Header content"&lt;/span&gt; &lt;span class="attr"&gt;role&lt;/span&gt;&lt;span class="kwrd"&gt;="banner"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="win-backbutton"&lt;/span&gt; &lt;span class="attr"&gt;aria-label&lt;/span&gt;&lt;span class="kwrd"&gt;="Back"&lt;/span&gt; &lt;span class="attr"&gt;disabled&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="titlearea win-type-ellipsis"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="pagetitle"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Welcome to DemoNavigation2!&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;header&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;section&lt;/span&gt; &lt;span class="attr"&gt;aria-label&lt;/span&gt;&lt;span class="kwrd"&gt;="Main content"&lt;/span&gt; &lt;span class="attr"&gt;role&lt;/span&gt;&lt;span class="kwrd"&gt;="main"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnLoad"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Details&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;section&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
        &lt;/div&gt;
        &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;style type="text/css"&gt;&lt;![CDATA[
















.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
    
  &lt;/table&gt;

&lt;table cellspacing="0" cellpadding="2" width="1248" border="0"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td width="1246"&gt;
        &lt;br /&gt;

        &lt;div class="csharpcode"&gt;
          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;//homePage.js&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="str"&gt;"use strict"&lt;/span&gt;;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="rem"&gt;// This function is called whenever a user navigates to this page. It&lt;/span&gt;&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="rem"&gt;// populates the page elements with the app's data.&lt;/span&gt;&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; ready(element, options) {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        document.getElementById(&lt;span class="str"&gt;"btnLoad"&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;"click"&lt;/span&gt;, &lt;span class="kwrd"&gt;function&lt;/span&gt; (e) {&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            WinJS.Navigation.navigate(&lt;span class="str"&gt;"/html/details/details.html"&lt;/span&gt;);&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    });&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; &lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    WinJS.UI.Pages.define(&lt;span class="str"&gt;"/html/homePage.html"&lt;/span&gt;, {&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        ready: ready&lt;/pre&gt;

          &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    });&lt;/pre&gt;

          &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;})();&lt;/pre&gt;
        &lt;/div&gt;
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;as you see, application navigation is handled globally through &lt;strong&gt;WinJS.Navigation&lt;/strong&gt; object that exposes methods like &lt;strong&gt;navigate&lt;/strong&gt; (together with &lt;strong&gt;back&lt;/strong&gt;, &lt;strong&gt;canGoBack&lt;/strong&gt;, &lt;strong&gt;canGoForward&lt;/strong&gt;…) that navigates (thus, loads page into default.html’s DOM) to details.html, this way, since default.html isn’t discarded, state is preserved and experience is similar to any other client application development. 

  &lt;br /&gt;

  &lt;br /&gt;Quite cumbersome to understand at the beginning, but easy to implement thanks to Visual Studio 11 templates&lt;/p&gt;

&lt;div id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:72530c4e-66c8-4f60-9add-61c6b845080c" class="class" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WinJS" rel="tag"&gt;WinJS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Navigation" rel="tag"&gt;Navigation&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100942.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/04/11/fragment-loading-and-navigation-in-html5-metro-applications.aspx</guid>
            <pubDate>Wed, 11 Apr 2012 00:38:04 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/04/11/fragment-loading-and-navigation-in-html5-metro-applications.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100942.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100942.aspx</trackback:ping>
        </item>
        <item>
            <title>WinJS namespaces and classes</title>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/03/21/winjs-namespaces-and-classes.aspx</link>
            <description>&lt;p&gt;In Javascript is extremely easy to write spaghetti code, when you write something like:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;var foo = 12;&lt;br /&gt;function log(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;    console.log(&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;



&lt;p&gt;both foo variable and log function become part of the global namespace, you can imagine what could happen when you add a new Javascript file that also includes a foo function.&lt;/p&gt;

&lt;p&gt;In .NET to better organize the code we have Namespaces that can be used to group types together and prevent naming collision, while Javascript misses this concept natively it can be simulated through objects and that’s what Microsoft did inside WinJS Library.
  &lt;br /&gt;Here’s how we can expose a ‘Logger’ object inside ‘MyLibrary’ namespace defined inside &lt;em&gt;myLibrary.js&lt;/em&gt; file.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;(function ()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Define the namespace&lt;/span&gt;&lt;br /&gt;    var myLib = WinJS.Namespace.define(&lt;span style="color: #006080"&gt;"MyLibrary"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #008000"&gt;//Adds a logger object to the namespace&lt;/span&gt;&lt;br /&gt;    myLib.Logger = {&lt;br /&gt;        log: function (text) {&lt;br /&gt;            console.log(text);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;})();&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;note that to also definition is self contained inside a self invoking function (very common patter in Javascript)&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Using the Logger object is even simpler:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #008000"&gt;//Log&lt;/span&gt;&lt;br /&gt;var logger = MyLibrary.Logger;&lt;br /&gt;logger.log(&lt;span style="color: #006080"&gt;"log this"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//Or simply...&lt;/span&gt;&lt;br /&gt;MyLibrary.Logger.log(&lt;span style="color: #006080"&gt;"loggin again"&lt;/span&gt;);&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;namespaces can be aggregated so if you add a new file &lt;em&gt;myUltraLibrary.js&lt;/em&gt; containing:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;(function () {&lt;br /&gt;    var myLib = WinJS.Namespace.define(&lt;span style="color: #006080"&gt;"MyLibrary"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    myLib.UltraLogger = {&lt;br /&gt;        log: function (text) {&lt;br /&gt;            console.log(&lt;span style="color: #006080"&gt;"ultra: "&lt;/span&gt; + text);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;})();&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;div&gt;you can now use the newly added UltraLogger object:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;
  &lt;div&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;MyLibrary.Logger.log(&lt;span style="color: #006080"&gt;"loggin again"&lt;/span&gt;);&lt;br /&gt;MyLibrary.UltraLogger.log(&lt;span style="color: #006080"&gt;"Ultra logging"&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;

  &lt;div&gt; &lt;/div&gt;

  &lt;div&gt;Nice, but now I’m using sort of static classes exposed from a namespace, what if I want something like real .NET classes? 
    &lt;br /&gt;You’re probably aware that using some patterns you can simulate classes in in a classless language like Javascript but ,again, thanks WinJS we can quickly have classes in Javascript too, here’s how:&lt;/div&gt;

  &lt;div&gt; &lt;/div&gt;

  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;(function () {&lt;br /&gt;    var myLib = WinJS.Namespace.define(&lt;span style="color: #006080"&gt;"MyLibrary"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    var multiLogger=WinJS.Class.define(function (loggerId) {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;._loggerId = loggerId;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;._textToLog = &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;    },&lt;br /&gt;    {&lt;br /&gt;        tag: &lt;span style="color: #006080"&gt;"multiLogger"&lt;/span&gt;,&lt;br /&gt;        id: {&lt;br /&gt;                get: function () { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;._loggerId },&lt;br /&gt;            },&lt;br /&gt;        text: {&lt;br /&gt;                get: function () { &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.textToLog },&lt;br /&gt;                set: function (&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;) { &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.textToLog = &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;; }&lt;br /&gt;              },&lt;br /&gt;        log: function () { console.log(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.textToLog) }&lt;br /&gt;    },&lt;br /&gt;    {&lt;br /&gt;        fastLog: function (text) { console.log(text) }&lt;br /&gt;    });&lt;br /&gt;&lt;br /&gt;    myLib.MultiLogger = multiLogger;&lt;br /&gt;    &lt;br /&gt;})();&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;

  &lt;div&gt;the code add a new class MultiLogger to MyLibrary namespace using &lt;strong&gt;WinJS.Class.define&lt;/strong&gt; method that accepts 3 parameters: a function representing class constructor (or null for an empty one) an object exposing instance properties (note that EcmaScript 5 allows definition of both get and set function associated to a property) and an optional object exposing static methods.&lt;/div&gt;

  &lt;div&gt; &lt;/div&gt;

  &lt;div&gt;How can we use the MultiLogger class? exactly as if it was a .NET class:&lt;/div&gt;

  &lt;div&gt; &lt;/div&gt;

  &lt;div id="codeSnippetWrapper"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #008000"&gt;//MultiLogger1&lt;/span&gt;&lt;br /&gt;var multiLogger1 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MyLibrary.MultiLogger(42);&lt;br /&gt;&lt;span style="color: #008000"&gt;// multiLogger1.id = 22;  //We can't since id is read onlt...&lt;/span&gt;&lt;br /&gt;var id = multiLogger1.id; &lt;span style="color: #008000"&gt;//returns 42&lt;/span&gt;&lt;br /&gt;multiLogger1.text = &lt;span style="color: #006080"&gt;"Text to log"&lt;/span&gt;;&lt;br /&gt;multiLogger1.log();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt;//MultiLogger2&lt;/span&gt;&lt;br /&gt;var multiLogger2 = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; MyLibrary.MultiLogger(43);&lt;br /&gt;multiLogger2.text = &lt;span style="color: #006080"&gt;"more text..."&lt;/span&gt;;&lt;br /&gt;multiLogger2.log();&lt;/pre&gt;

    &lt;br /&gt;&lt;/div&gt;

  &lt;div&gt;very nice isn’t it? :-)&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100882.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/03/21/winjs-namespaces-and-classes.aspx</guid>
            <pubDate>Wed, 21 Mar 2012 14:55:35 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/03/21/winjs-namespaces-and-classes.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100882.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100882.aspx</trackback:ping>
        </item>
        <item>
            <title>Available memory and Background agents in Windows Phone 7</title>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/03/15/available-memory-and-background-agents-in-windows-phone-7.aspx</link>
            <description>&lt;p&gt;When you create a background agent for Windows Phone 7 there are a couple of important details you must be aware of:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The total scheduled time for the agent to execute is 25 seconds, if you exceed it the agent will be killed by the scheduler.&lt;/li&gt;    &lt;li&gt;The max amount of memory available is &lt;strong&gt;6 MB&lt;/strong&gt;, if the agent allocates more the agent will be, again, killed.&lt;/li&gt;    &lt;li&gt;With Visual Studio debugger attached these limits are disabled.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;An agent is killed silently and after two killing operations the scheduler will automatically disable it and your user probably will start wondering why your wonderful tile doesn’t work as expected.&lt;/p&gt;  &lt;p&gt;The common problem I face when dealing with agents is that 6 MB of memory are a very strict constraint especially when you realize that the agent alone consumes more than 3 MB (in real cases I got more than 5 MB allocated at startup)   &lt;br /&gt;So what can you do do live in a such restrict space? along with optimizations (in some cases I ended up duplicating code in order to avoid to load some dependencies) my suggestion is: never trust the debugger, with it attached the allocated memory increases so you might end up with wrong measurements.    &lt;br /&gt;What I normally do is to write inside application tile what is the real amount of occupied memory so that I can quickly estimate how long I can go.    &lt;br /&gt;    &lt;br /&gt;Code is really straightforward:&lt;/p&gt;  &lt;div&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ScheduledAgent : ScheduledTaskAgent&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnInvoke(ScheduledTask task)&lt;br /&gt;        {&lt;br /&gt;            ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault();&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (tile != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                var current = DeviceStatus.ApplicationCurrentMemoryUsage;&lt;br /&gt;&lt;br /&gt;                ShellTileData data = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; StandardTileData&lt;br /&gt;                {&lt;br /&gt;                    Title = &lt;span style="color: #006080"&gt;"Occ:"&lt;/span&gt; + current.ToString(CultureInfo.InvariantCulture),&lt;br /&gt;                };&lt;br /&gt;&lt;br /&gt;                tile.Update(data);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            NotifyComplete();&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;And here are the differences between debug and standalone mode:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Available-memory-and-Background-agents-i_1094A/image_2.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Available-memory-and-Background-agents-i_1094A/image_thumb.png" width="244" height="129" /&gt;&lt;/a&gt; debugger attached&lt;/div&gt;

&lt;div&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Available-memory-and-Background-agents-i_1094A/image_4.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/Available-memory-and-Background-agents-i_1094A/image_thumb_1.png" width="244" height="128" /&gt;&lt;/a&gt;Standalone&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;Compared to overall 6MB, an important difference… &lt;/div&gt;

&lt;div /&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100865.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/03/15/available-memory-and-background-agents-in-windows-phone-7.aspx</guid>
            <pubDate>Thu, 15 Mar 2012 20:24:01 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/03/15/available-memory-and-background-agents-in-windows-phone-7.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100865.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100865.aspx</trackback:ping>
        </item>
        <item>
            <title>Win+X is your friend in Windows 8</title>
            <link>http://blogs.ugidotnet.org/corrado/archive/2012/03/06/winx-is-your-friend-in-windows-8.aspx</link>
            <description>&lt;p&gt;As advanced user I often need to reach areas like Control Panel, Event Viewer or the good old friend Command Prompt and you might imagine how happy I was to discover that using &lt;strong&gt;Win+X&lt;/strong&gt; you have access to a “developer menu” in lower left corner that give you access to OS’ hardcore areas &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/WinX-is-your-friend-in-Windows-8_8E3F/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/WinX-is-your-friend-in-Windows-8_8E3F/image_2.png" rel="lightbox"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.ugidotnet.org/images/blogs_ugidotnet_org/corrado/Windows-Live-Writer/WinX-is-your-friend-in-Windows-8_8E3F/image_thumb.png" width="178" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can also show the menu by pointing the mouse in lower left corner, wait for Start menu to appear then right clicking on it (but Win+X is a lot more faster…)&lt;/p&gt;  &lt;p&gt;BTW: I took the shot using Win+PrintScreen that now automatically saves the screenshot under User’s MyPicture&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e33f10e6-a709-4090-9053-89dbea640f77" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Win8" rel="tag"&gt;Win8&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/corrado/aggbug/100838.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Corrado Cavalli</dc:creator>
            <guid>http://blogs.ugidotnet.org/corrado/archive/2012/03/06/winx-is-your-friend-in-windows-8.aspx</guid>
            <pubDate>Tue, 06 Mar 2012 11:15:43 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/corrado/archive/2012/03/06/winx-is-your-friend-in-windows-8.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/corrado/comments/commentRss/100838.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/corrado/services/trackbacks/100838.aspx</trackback:ping>
        </item>
    </channel>
</rss>