<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.microsoft.co.il/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Shai Raiten&amp;#39;s Blog : Metro Style</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx</link><description>Tags: Metro Style</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Run Windows Store Apps From Desktop</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/07/run-windows-store-apps-from-desktop.aspx</link><pubDate>Thu, 07 Feb 2013 14:09:49 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1736848</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1736848</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/07/run-windows-store-apps-from-desktop.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2013/02/07/run-windows-store-apps-from-desktop.aspx" scrolling="no" frameborder="0" style="border:none;width:450px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;When customers ask me how they can run Windows Store app from Desktop usually the answer is – &lt;strong&gt;You Can’t, &lt;/strong&gt;but if you really want there is a way to do that.&lt;/p&gt;  &lt;p&gt;The reason I usually answer is You Can’t is because – In order to run Windows Store app from Desktop you need to install &lt;a href="http://msdn.microsoft.com/en-US/windows/apps/jj572486" target="_blank"&gt;Windows App Certification Kit&lt;/a&gt;, this pack contains “&lt;strong&gt;microsoft.windows.softwarelogo.appxlauncher.exe&lt;/strong&gt;” file that can run a Windows Store app by his application model id.&lt;/p&gt;  &lt;p&gt;So if you plan on publishing your app you can’t assume the ACK is installed on the client machine.&lt;/p&gt;  &lt;p&gt;Again, if you really want… Let me show you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_11119BD1.png"&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.microsoft.co.il/blogs/shair/image_thumb_75C91D02.png" width="907" height="538" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1736841/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Step 1: Getting Started&lt;/h2&gt;  &lt;p&gt;First create a WPF project and add the following reference:&lt;/p&gt;  &lt;p&gt;“C:\Program Files (x86)\Windows Kits\8.0\App Certification Kit\microsoft.windows.softwarelogo.shared.dll”&lt;/p&gt;  &lt;h2&gt;Step 2: Getting Windows App List&lt;/h2&gt;  &lt;p&gt;The reason you need to add reference to “Microsoft.Windows.Softwarelogo.Shared.dll” so we can receive the program inventory xml file, this file contains the complete list of all installed Windows Store apps.&lt;/p&gt;  &lt;p&gt;Under my PC here is the file location - &lt;u&gt;&amp;quot;C:\\Users\\Shai\\AppData\\Local\\Microsoft\\AppCertKit\\programinventory_e25bb752-e7cf-4fb2-8194-874ba9b91c7b.xml&amp;quot;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;As I said this file contains all Windows Store app installed on you machine, each Program element under that file will show all the information regarding that specific app.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_70B6B986.png"&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.microsoft.co.il/blogs/shair/image_thumb_268B88D4.png" width="924" height="357" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, how do you get the file location?&lt;/p&gt;  &lt;p&gt;It’s very simple, using &lt;strong&gt;GlobaldataAccessor&lt;/strong&gt; method from &lt;strong&gt;softwarelogo.shared.dll&lt;/strong&gt; you can get the Program Inventory Location string.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; itemValue = GlobalDataAccessor.GetItemValue(&lt;span class="str"&gt;&amp;quot;ProgramInventoryLocation&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PRE_PROCESS&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you got this file all you need is parsing the XML and create a collection on Apps.&lt;/p&gt;

&lt;p&gt;I’ve create a &lt;strong&gt;ProductInfo&lt;/strong&gt; class that will represent each Program in the file, as you can see from the code below I simply taking the attributes and elements from the Program element.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ProductInfo : INotifyPropertyChanged
    {
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;event&lt;/span&gt; PropertyChangedEventHandler PropertyChanged;

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; NotifyPropertyChanged(String propertyName = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)
        {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (PropertyChanged != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
            {
                PropertyChanged(&lt;span class="kwrd"&gt;this&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; PropertyChangedEventArgs(propertyName));
            }
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _Status;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Status
        {
            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; _Status; }
            set
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;value&lt;/span&gt; != &lt;span class="kwrd"&gt;this&lt;/span&gt;._Status)
                {
                    &lt;span class="kwrd"&gt;this&lt;/span&gt;._Status = &lt;span class="kwrd"&gt;value&lt;/span&gt;;
                    NotifyPropertyChanged(&lt;span class="str"&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;);
                }
            }
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; LogoUrl { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ProductName { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ProductVendor { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ProductLanguage { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; ProductVersion { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; RootDirPath { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Id { get; set; }
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; PackageFullName { get; set; }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; ProductInfo(XmlNode xNode)
        {
            var attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) ProductName = attrib.Value;

            attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;Version&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) ProductVersion = attrib.Value;

            attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;Language&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) ProductLanguage = attrib.Value;

            attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;Publisher&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) ProductVendor = attrib.Value;

            attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;RootDirPath&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) RootDirPath = attrib.Value;

            attrib = xNode.Attributes[&lt;span class="str"&gt;&amp;quot;Id&amp;quot;&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (attrib != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(attrib.Value)) Id = attrib.Value;

            var node = xNode.SelectSingleNode(&lt;span class="str"&gt;&amp;quot;/Log/ProgramList/Program[@Id=&amp;#39;&amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.Id + &lt;span class="str"&gt;&amp;quot;&amp;#39;]/Indicators/PackageManifestIndicator/Properties/Logo&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (node != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(node.InnerText))
            {
                var imgUrl = System.IO.Path.Combine(RootDirPath, node.InnerText);
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (File.Exists(imgUrl))
                    LogoUrl = imgUrl;
            }

            node = xNode.SelectSingleNode(&lt;span class="str"&gt;&amp;quot;/Log/ProgramList/Program[@Id=&amp;#39;&amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.Id + &lt;span class="str"&gt;&amp;quot;&amp;#39;]/Indicators/PackageManifestIndicator/PackageManifest&amp;quot;&lt;/span&gt;);
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (node != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(node.Attributes[&lt;span class="str"&gt;&amp;quot;PackageFullName&amp;quot;&lt;/span&gt;].InnerText))
            {
                PackageFullName = node.Attributes[&lt;span class="str"&gt;&amp;quot;PackageFullName&amp;quot;&lt;/span&gt;].InnerText;
            }
        }
    }&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;And now, let’s connect the two part together, the first thing is getting the &lt;strong&gt;ProgramInventorylocation&lt;/strong&gt; and after that just load that Xml file and parse it to objects with the information you want.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BuildAppsList()
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; itemValue = GlobalDataAccessor.GetItemValue(&lt;span class="str"&gt;&amp;quot;ProgramInventoryLocation&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;PRE_PROCESS&amp;quot;&lt;/span&gt;);

    XmlNodeList list = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
    var reportDoc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();
    reportDoc.Load(itemValue);
    ProductList = &lt;span class="kwrd"&gt;new&lt;/span&gt; ObservableCollection&amp;lt;ProductInfo&amp;gt;();

    list = reportDoc.GetElementsByTagName(&lt;span class="str"&gt;&amp;quot;Program&amp;quot;&lt;/span&gt;);
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (list.Count &amp;lt; 1)
    {
        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlException();
    }
    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlNode node &lt;span class="kwrd"&gt;in&lt;/span&gt; list)
    {
        ProductInfo item = &lt;span class="kwrd"&gt;new&lt;/span&gt; ProductInfo(node);
        ProductList.Add(item);
    }

    dbTable.ItemsSource = ProductList;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Step 3: Get App User Model Id&lt;/h2&gt;

&lt;p&gt;Now after you got all Windows Store app installed on your machine it’s time to run them. In order to run a Windows Store app you’ll need to obtain the &lt;strong&gt;AppUserModelId,&lt;/strong&gt; the reason you need to &lt;strong&gt;AppUserModelId &lt;/strong&gt;is because the &lt;u&gt;appxlauncher.exe&lt;/u&gt; needs this value in order to launch the application. (Package Name is not enough).&lt;/p&gt;

&lt;p&gt;After completing Step 2 we got the App Package Full Name, we need to use this value to find the &lt;strong&gt;AppUserModelId&lt;/strong&gt; from registry.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;HKEY_CURRENT_USER\Software\Classes\ActivatableClasses\Package\**PackageFullName**\Server&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_0811221E.png"&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.microsoft.co.il/blogs/shair/image_thumb_2F1BBB93.png" width="911" height="230" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So let’s add the following method, this method receive a &lt;strong&gt;packageFullName&lt;/strong&gt; string and perform a search in the registry for the &lt;strong&gt;AppUserModelId&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetAppUserModelId(&lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName)
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; str = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;
    &lt;span class="kwrd"&gt;using&lt;/span&gt; (RegistryKey key = Registry.CurrentUser.CreateSubKey(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;@&amp;quot;SOFTWARE\Classes\ActivatableClasses\Package\{0}\Server\&amp;quot;,&lt;br /&gt;                                                                               packageFullName)))
    {
        if (key == null) return str;

        var appKeys = from k in key.GetSubKeyNames()
                        where !k.StartsWith(&amp;quot;&lt;/span&gt;BackgroundTransferHost&lt;span class="str"&gt;&amp;quot;)
                        select k;

        foreach (var appKey in appKeys)
        {
            using (RegistryKey serverKey = key.OpenSubKey(appKey))
            {
                if (serverKey.GetValue(&amp;quot;&lt;/span&gt;AppUserModelId&lt;span class="str"&gt;&amp;quot;) != null)
                {
                    str = serverKey.GetValue(&amp;quot;&lt;/span&gt;AppUserModelId&amp;quot;).ToString();
                    serverKey.Close();
                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;
                }
            }
        }
    }

    &lt;span class="kwrd"&gt;return&lt;/span&gt; str;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Step 4: Running Windows Store App&lt;/h2&gt;

&lt;p&gt;After we have the &lt;strong&gt;AppUserModelId &lt;/strong&gt;string for a specific Windows Store app we can run it.&lt;/p&gt;

&lt;p&gt;You can test it by opening command line and write the following:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;C:\Program Files (x86)\Windows Kits\8.0\App Certification Kit\Microsoft.Windows.SoftwareLogo.AppxLauncher.exe &lt;strong&gt;&lt;u&gt;“AppUserModelId”&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Start App Button&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; StartApp_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var product = ((System.Windows.Controls.Button)sender).Tag &lt;span class="kwrd"&gt;as&lt;/span&gt; ProductInfo;
    var appUserModelId = Helpers.GetAppUserModelId(product.PackageFullName);

    var exec = &lt;span class="str"&gt;@&amp;quot;C:\Program Files (x86)\Windows Kits\8.0\App Certification Kit\Microsoft.Windows.SoftwareLogo.AppxLauncher.exe&amp;quot;&lt;/span&gt;;

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (!File.Exists(exec))
    {
        System.Windows.MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Please install Windows App Certification Kit for Windows RT&amp;quot;&lt;/span&gt;);
    }

    var processInfo = &lt;span class="kwrd"&gt;new&lt;/span&gt; ProcessStartInfo()
    {
        Arguments = appUserModelId,
        UseShellExecute = &lt;span class="kwrd"&gt;false&lt;/span&gt;,
        CreateNoWindow = &lt;span class="kwrd"&gt;true&lt;/span&gt;,
        FileName = exec
    };

    Process.Start(processInfo);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Step 5: Get Application Status&lt;/h2&gt;

&lt;p&gt;The last thing you might want is to know the App execution state, in order to do that you need to use &lt;strong&gt;IPackageDebugSettings - &lt;/strong&gt;Enables debugger developers control over the lifecycle of a Windows Store app, such as when it is suspended or resumed. (&lt;a title="http://msdn.microsoft.com/en-us/library/hh438393(v=vs.85).aspx" href="http://msdn.microsoft.com/en-us/library/hh438393(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh438393(v=vs.85).aspx&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt; for that create a &lt;strong&gt;PackageStatushelper&lt;/strong&gt; class with the following code:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PackageStatusHelper
{
    [ComImport, Guid(&lt;span class="str"&gt;&amp;quot;B1AEC16F-2383-4852-B0E9-8F0B1DC66B4D&amp;quot;&lt;/span&gt;)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; PackageDebugSettings
    {
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;enum&lt;/span&gt; PACKAGE_EXECUTION_STATE
    {
        PES_UNKNOWN,
        PES_RUNNING,
        PES_SUSPENDING,
        PES_SUSPENDED,
        PES_TERMINATED
    }

    [ComImport, Guid(&lt;span class="str"&gt;&amp;quot;F27C3930-8029-4AD1-94E3-3DBA417810C1&amp;quot;&lt;/span&gt;), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IPackageDebugSettings
    {
        &lt;span class="kwrd"&gt;int&lt;/span&gt; EnableDebugging([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName, [MarshalAs(UnmanagedType.LPWStr)]&lt;br /&gt;                                                              &lt;span class="kwrd"&gt;string&lt;/span&gt; debuggerCommandLine, IntPtr environment);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; DisableDebugging([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; Suspend([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; Resume([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; TerminateAllProcesses([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; SetTargetSessionId(&lt;span class="kwrd"&gt;int&lt;/span&gt; sessionId);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; EnumerageBackgroundTasks([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName, &lt;br /&gt;                                                      &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; taskCount, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; intPtr, [Out] &lt;span class="kwrd"&gt;string&lt;/span&gt;[] array);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; ActivateBackgroundTask(IntPtr something);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; StartServicing([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; StopServicing([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; StartSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName, &lt;span class="kwrd"&gt;uint&lt;/span&gt; sessionId);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; StopSessionRedirection([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; GetPackageExecutionState([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName,&lt;br /&gt;                                            &lt;span class="kwrd"&gt;out&lt;/span&gt; PACKAGE_EXECUTION_STATE packageExecutionState);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; RegisterForPackageStateChanges([MarshalAs(UnmanagedType.LPWStr)] &lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName, &lt;br /&gt;                               IntPtr pPackageExecutionStateChangeNotification, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;uint&lt;/span&gt; pdwCookie);
        &lt;span class="kwrd"&gt;int&lt;/span&gt; UnregisterForPackageStateChanges(&lt;span class="kwrd"&gt;uint&lt;/span&gt; dwCookie);
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; PACKAGE_EXECUTION_STATE GetPackageExecutionState(&lt;span class="kwrd"&gt;string&lt;/span&gt; packageFullName)
    {
        PACKAGE_EXECUTION_STATE packageExecutionState = PACKAGE_EXECUTION_STATE.PES_UNKNOWN;
        PackageDebugSettings settings = &lt;span class="kwrd"&gt;new&lt;/span&gt; PackageDebugSettings();
        IPackageDebugSettings settings2 = (IPackageDebugSettings)settings;
        &lt;span class="kwrd"&gt;try&lt;/span&gt;
        {
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (settings2.GetPackageExecutionState(packageFullName, &lt;span class="kwrd"&gt;out&lt;/span&gt; packageExecutionState) != 0)
            {
                System.Windows.MessageBox.Show(&lt;span class="str"&gt;&amp;quot;Failed to get package execution state.&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;GetPackageExecutionState&amp;quot;&lt;/span&gt;);
            }
        }
        &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
        {
            System.Windows.MessageBox.Show(ex.Message, &lt;span class="str"&gt;&amp;quot;GetPackageExecutionState&amp;quot;&lt;/span&gt;);
        }
        &lt;span class="kwrd"&gt;return&lt;/span&gt; packageExecutionState;
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;And from the application you can just call the GetPackageExecutionState passing the Package Full Name&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetAppStatus_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var btn = (System.Windows.Controls.Button)sender;
    var product = btn.Tag &lt;span class="kwrd"&gt;as&lt;/span&gt; ProductInfo;
    var status = PackageStatusHelper.GetPackageExecutionState(product.PackageFullName);

    &lt;span class="kwrd"&gt;switch&lt;/span&gt; (status)
    {
        &lt;span class="kwrd"&gt;case&lt;/span&gt; PackageStatusHelper.PACKAGE_EXECUTION_STATE.PES_RUNNING:
            btn.Foreground = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Green);
            btn.Content = &lt;span class="str"&gt;&amp;quot;Running&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
        &lt;span class="kwrd"&gt;case&lt;/span&gt; PackageStatusHelper.PACKAGE_EXECUTION_STATE.PES_SUSPENDED:
            btn.Foreground = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Orange);
            btn.Content = &lt;span class="str"&gt;&amp;quot;Suspended&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
        &lt;span class="kwrd"&gt;case&lt;/span&gt; PackageStatusHelper.PACKAGE_EXECUTION_STATE.PES_TERMINATED:
            btn.Foreground = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Red);
            btn.Content = &lt;span class="str"&gt;&amp;quot;Terminated&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
        &lt;span class="kwrd"&gt;default&lt;/span&gt;:
            btn.Foreground = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Gray);
            btn.Content = &lt;span class="str"&gt;&amp;quot;Unkown&amp;quot;&lt;/span&gt;;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1736841/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1736848" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/ITPRO/default.aspx">ITPRO</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4/default.aspx">.NET 4</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+Store/default.aspx">Windows Store</category></item><item><title>WinRT Toast Notification From Desktop Application</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2013/01/30/winrt-toast-notification-from-desktop-application.aspx</link><pubDate>Wed, 30 Jan 2013 18:33:04 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1715385</guid><dc:creator>shair</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1715385</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2013/01/30/winrt-toast-notification-from-desktop-application.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2013/01/30/winrt-toast-notification-from-desktop-application.aspx" scrolling="no" frameborder="0" style="border:none;width:450px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;The post title maintained &lt;strong&gt;Toast Notification&lt;/strong&gt; but after reading this post we&amp;#39;ll be able to perform API calls to &lt;strong&gt;WinRT&lt;/strong&gt; from your Desktop application.&lt;/p&gt;  &lt;p&gt;As you know WinRT exposing API’s for three developer languages: C#, C++ and JavaScript, this means that from each language you’ll be able to perform WinRT calls. The idea is based on &lt;u&gt;Windows Metadata File&lt;/u&gt; (winmd) that expose those APIs that can be consumed across a variety of technologies and languages.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_35625913.png"&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.microsoft.co.il/blogs/shair/image_thumb_659907FC.png" width="640" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1715377/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So why not using those calls from a desktop application? for example one of the great features of Windows 8 is &lt;strong&gt;Toast Notifications&lt;/strong&gt;, Toast is a super cool replacement for Message box dialog that block your screen and can be very enjoying…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;A toast notification is a transient message to the user that contains relevant, time-sensitive information and provides quick access to related content in an app. It can appear whether you are in another app, the Start screen, the lock screen, or on the desktop. Toasts should be viewed as an invitation to return to your app to follow up on something of interest. Toast notifications are an optional part of the app experience and are intended to be raised only when your app is not the active foreground app.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;let’s say that we want to send Toast from your Desktop application instead of displaying annoying message boxes, let’s see how you can do it.&lt;/p&gt;  &lt;h3&gt;Step 1: Getting Started With Windows.winmd&lt;/h3&gt;  &lt;p&gt;Let’s start with empty WPF application, let’s try to load &lt;strong&gt;Windows.winmd&lt;/strong&gt; file located here:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral\Windows.winmd&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;You’ll receive below error message saying this file isn&amp;#39;t compatible with your current project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_798274C5.png"&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.microsoft.co.il/blogs/shair/image_thumb_651CAF3A.png" width="638" height="337" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You need to edit your &lt;strong&gt;csproj &lt;/strong&gt;file and add &lt;span class="html"&gt;&lt;strong&gt;TargetPlatformVersion&lt;/strong&gt; element.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4BF12F35.png"&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.microsoft.co.il/blogs/shair/image_thumb_5812A95C.png" width="674" height="652" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Locate the &lt;strong&gt;PropertyGroup&lt;/strong&gt; and add additional element : &lt;font style="background-color:#ffff00;"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TargetPlatformVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;8.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TargetPlatformVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&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;Project&lt;/span&gt; &lt;span class="attr"&gt;ToolsVersion&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;4.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;DefaultTargets&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Build&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&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;Import&lt;/span&gt; &lt;span class="attr"&gt;Project&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Exists(&amp;#39;$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props&amp;#39;)&amp;quot;&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;PropertyGroup&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;Configuration&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; &amp;#39;$(Configuration)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Debug&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Configuration&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;Platform&lt;/span&gt; &lt;span class="attr"&gt;Condition&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot; &amp;#39;$(Platform)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;AnyCPU&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Platform&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;ProjectGuid&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;{20DAA4E0-DE45-4FB6-8650-44FFDBA78F25}&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProjectGuid&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;OutputType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;WinExe&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;OutputType&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;AppDesignerFolder&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Properties&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;AppDesignerFolder&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;RootNamespace&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DesktopAppNotificationDemo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;RootNamespace&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;AssemblyName&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;DesktopAppNotificationDemo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;AssemblyName&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;TargetFrameworkVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;v4.5&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TargetFrameworkVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;font style="background-color:#ffff00;"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TargetPlatformVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;8.0&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TargetPlatformVersion&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FileAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;512&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FileAlignment&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;ProjectTypeGuids&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProjectTypeGuids&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;WarningLevel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;4&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WarningLevel&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;PublishUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;publish\&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;PublishUrl&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now if you try to load &lt;strong&gt;Windows.winmd&lt;/strong&gt; you’ll success, using the Object Browser you can explore the different API’s available in WinRT.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_0C8355D8.png"&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.microsoft.co.il/blogs/shair/image_thumb_161B9E41.png" width="959" height="510" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Step 2: API Code Pack&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;In order to display toasts, a desktop application must have a shortcut on the Start menu. Also, an AppUserModelID must be set on that shortcut. 
    &lt;br /&gt;The shortcut should be created as part of the installer. The following code shows how to create a shortcut and assign an &lt;strong&gt;AppUserModelID&lt;/strong&gt; using Windows APIs.

    &lt;br /&gt; You must download and include the &lt;/em&gt;&lt;a href="http://archive.msdn.microsoft.com/WindowsAPICodePack"&gt;&lt;em&gt;Windows® API Code Pack for Microsoft® .NET Framework&lt;/em&gt;&lt;/a&gt;&lt;em&gt; to allow Toast Notification from desktop application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Windows® API Code Pack for Microsoft® .NET Framework&lt;/b&gt; provides a source code library that can be used to access some features of Windows 7 and Windows Vista from managed code. These Windows features are not available to developers today in the .NET Framework.&lt;/p&gt;

&lt;p&gt;First thing after the application is loaded you need to make sure the application has a shortcut under Start menu referring to your desktop AppUserModelID.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; String APP_ID = &lt;span class="str"&gt;&amp;quot;Shai Raiten - DesktopAppNotificationDemo&amp;quot;&lt;/span&gt;;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsAppLinkExists()
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; defaultPath = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;@&amp;quot;{0}\Microsoft\Windows\Start Menu\Programs\{1}.lnk&amp;quot;&lt;/span&gt;,
        Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
        APP_ID);

    &lt;span class="kwrd"&gt;return&lt;/span&gt; File.Exists(defaultPath) == &lt;span class="kwrd"&gt;false&lt;/span&gt; ? CreateApplicationShortcut(defaultPath) : &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;In case there is no shortcut you’ll need to create one:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; CreateApplicationShortcut(&lt;span class="kwrd"&gt;string&lt;/span&gt; defaultPath)
{
    &lt;span class="kwrd"&gt;string&lt;/span&gt; exePath = Process.GetCurrentProcess().MainModule.FileName;
    var newShortcut = (IShellLinkW)&lt;span class="kwrd"&gt;new&lt;/span&gt; CShellLink();

    &lt;span class="rem"&gt;// Create a shortcut to the exe&lt;/span&gt;
    ShellHelpers.ErrorHelper.VerifySucceeded(newShortcut.SetPath(exePath));
    ShellHelpers.ErrorHelper.VerifySucceeded(newShortcut.SetArguments(&lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;));

    &lt;span class="rem"&gt;// Open the shortcut property store, set the AppUserModelId property&lt;/span&gt;
    var newShortcutProperties = (IPropertyStore)newShortcut;

    &lt;span class="kwrd"&gt;using&lt;/span&gt; (PropVariant appId = &lt;span class="kwrd"&gt;new&lt;/span&gt; PropVariant(APP_ID))
    {
        ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutProperties.SetValue(SystemProperties.System.AppUserModel.ID, appId));
        ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutProperties.Commit());
    }

    &lt;span class="rem"&gt;// Commit the shortcut to disk&lt;/span&gt;
    var newShortcutSave = (IPersistFile)newShortcut;

    ShellHelpers.ErrorHelper.VerifySucceeded(newShortcutSave.Save(defaultPath, &lt;span class="kwrd"&gt;true&lt;/span&gt;));
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Step 3: Toast&lt;/h3&gt;

&lt;p&gt;If you not familiar with Toast under Windows 8 I’ll recommend you to read about the methods and events of &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.notifications.toastnotification.aspx" target="_blank"&gt;ToastNotification class (Windows)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;font style="font-weight:normal;"&gt;After completing all previous steps creating Toast is a simple task, all you need to do is create new Toast template using ToastNotificationManager and modify the Toast template xml with your data.&lt;/font&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnSend_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
{
    var toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText02);

    var textFields = toastXml.GetElementsByTagName(&lt;span class="str"&gt;&amp;quot;text&amp;quot;&lt;/span&gt;);
    textFields[0].AppendChild(toastXml.CreateTextNode(txtTitle.Text));
    textFields[1].AppendChild(toastXml.CreateTextNode(txtDescription.Text));

    String imagePath = &lt;span class="str"&gt;&amp;quot;file:///&amp;quot;&lt;/span&gt; + System.IO.Path.GetFullPath(&lt;span class="str"&gt;&amp;quot;me.png&amp;quot;&lt;/span&gt;);
    XmlNodeList imageElements = toastXml.GetElementsByTagName(&lt;span class="str"&gt;&amp;quot;image&amp;quot;&lt;/span&gt;);
    imageElements[0].Attributes.GetNamedItem(&lt;span class="str"&gt;&amp;quot;src&amp;quot;&lt;/span&gt;).NodeValue = imagePath;

    ToastNotification toast = &lt;span class="kwrd"&gt;new&lt;/span&gt; ToastNotification(toastXml);

    &lt;span class="kwrd"&gt;if&lt;/span&gt; (cal.SelectedDate != &lt;span class="kwrd"&gt;null&lt;/span&gt;)
        toast.ExpirationTime = cal.SelectedDate;

    &lt;span class="rem"&gt;// You must specifiy AppUserModelId == APP_ID to send toast notification.&lt;/span&gt;
    ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);

    lblStatus.Text = &lt;span class="str"&gt;&amp;quot;Toast Sent!&amp;quot;&lt;/span&gt;;
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2020199F.png"&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.microsoft.co.il/blogs/shair/image_thumb_62438222.png" width="506" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Step 4: Toast Events&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Toast&lt;/strong&gt; as we already understand is more than just a MessageBox, you’ll be able to send information to your users and get their response, for example in this demo if the user click on the Toast I’ll like to open the browser to that specific Uri.&lt;/p&gt;

&lt;p&gt;All you need to do is register to the Toast events before sending the toast.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;toast.Activated += toast_Activated;
toast.Dismissed += toast_Dismissed;
toast.Failed += toast_Failed;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; toast_Failed(ToastNotification sender, ToastFailedEventArgs args)
{
    Dispatcher.Invoke(() =&amp;gt;
    {
        lblStatus.Text = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;Toast Failed - Error Code: {0}&amp;quot;&lt;/span&gt;, args.ErrorCode.Message);
    });
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; toast_Dismissed(ToastNotification sender, ToastDismissedEventArgs args)
{
    Dispatcher.Invoke(() =&amp;gt;
    {
        lblStatus.Text = args.Reason.ToString();
    });
}

&lt;span class="kwrd"&gt;void&lt;/span&gt; toast_Activated(ToastNotification sender, &lt;span class="kwrd"&gt;object&lt;/span&gt; args)
{
    Dispatcher.Invoke(() =&amp;gt;
    {
        Activate();
        lblStatus.Text = &lt;span class="str"&gt;&amp;quot;Toast Activated&amp;quot;&lt;/span&gt;;
        Process.Start(&lt;span class="str"&gt;&amp;quot;http://tinyurl.com/shai-rai&amp;quot;&lt;/span&gt;);
    });
}&lt;/pre&gt;
&lt;/blockquote&gt;









&lt;h3&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Take Notice&lt;/font&gt; – You can use more WinRT API’s by adding Windows.winmd to your desktop application.&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1715377/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1715385" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/WPF/default.aspx">WPF</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Questions/default.aspx">Questions</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Native/default.aspx">Native</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Accelerometer/default.aspx">Accelerometer</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+Store/default.aspx">Windows Store</category></item><item><title>Windows Store App - Resize Image (JavaScript)</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/10/31/windows-store-app-resize-image-javascript.aspx</link><pubDate>Wed, 31 Oct 2012 19:05:21 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1397058</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1397058</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/10/31/windows-store-app-resize-image-javascript.aspx#comments</comments><description>&lt;div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:4px 0px 4px 0px;"&gt;&lt;iframe src="http://www.facebook.com/widgets/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/10/31/windows-store-app-resize-image-javascript.aspx" scrolling="no" frameborder="0" style="border:none;width:350px;height:80px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;In this post I’ll demonstrate how to change picture size using JavaScript while constraining the image proportions.&lt;/p&gt;  &lt;p&gt;Resize image functionality can be used in several scenarios in Windows Store app, for example: if your app allow the user to download images from the web you might want to resize the image to reduce space usage. Also if you whish to share this image using Roaming Storage you need to make sure the image size is small enough so the Roaming sync will not failed.&lt;/p&gt;  &lt;p&gt;The first steps for this demo is using FileOpenPicker to allow the user to choose what picture he want to resize.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1397052.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create new JavaScript Navigation app. &lt;/li&gt;    &lt;li&gt;Open &lt;strong&gt;package.appxmanifest&lt;/strong&gt; and add “&lt;u&gt;Pictures Library&lt;/u&gt;” capability. (We’ll use this later) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4F09438E.png"&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.microsoft.co.il/blogs/shair/image_thumb_026506EB.png" width="386" height="364" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open home.html file located under pages-&amp;gt;home and add the following code: &lt;/li&gt; &lt;/ul&gt;  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;   &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;     &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;preview&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;btnBrowse&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;btnBrowse&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Pick a Image&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;previewImage&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;img&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;previewImage&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;max-height: 400px&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;#&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;imageDetails&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;The above code added a button, img and div elements to home.html page, the button will invoke the FileOpenPicker, img element will display the selected image and the imageDetails div will display the image properties.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Open home.js and add the following code jus under the “&lt;strong&gt;use strict&lt;/strong&gt;” statement:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
    &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; $(query) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; document.querySelector(query);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; toDateTime(date) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; dateTime = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Date(Date.parse(date));&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (dateTime.getDate()) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; month = dateTime.getMonth() + 1;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; day = dateTime.getDate();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; year = dateTime.getFullYear();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; hours = dateTime.getHours();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; minutes = dateTime.getMinutes();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ampm = hours &amp;lt; 12 ? &lt;span style="color:#006080;"&gt;&amp;quot;am&amp;quot;&lt;/span&gt; : &lt;span style="color:#006080;"&gt;&amp;quot;pm&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;{0}/{1}/{2} {3}:{4} {5}&amp;quot;&lt;/span&gt;.format(month, day, year, hours &amp;lt; 10 ? &lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; + hours : hours, minutes &amp;lt; 10 ? &lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; + minutes : minutes, ampm);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; date;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;}&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;String.prototype.format = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; str = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; arguments.length; i++) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; reg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; RegExp(&lt;span style="color:#006080;"&gt;&amp;quot;\\{&amp;quot;&lt;/span&gt; + i + &lt;span style="color:#006080;"&gt;&amp;quot;\\}&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;gm&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        str = str.replace(reg, arguments[i]);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; str;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;};&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;Those functions are helpers for our project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Under ready function add the following code:&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;$(&lt;span style="color:#006080;"&gt;&amp;quot;#btnBrowse&amp;quot;&lt;/span&gt;).addEventListener(&lt;span style="color:#006080;"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.openFilePicker.bind(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;We’re adding event listener for click event on “btnBrowse” button, now let implement the FileOpenPicker.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Add the following code under the close statement of ready function:&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;selectedImage:&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;,&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;openFilePicker: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;// Create the picker object and set options&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fp = Windows.Storage.Pickers.FileOpenPicker();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;// Users expect to have a filtered view of their folders depending on the scenario.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#008000;"&gt;// For example, when choosing a documents folder, restrict the filetypes to documents for your application.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    fp.fileTypeFilter.replaceAll([&lt;span style="color:#006080;"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.bmp&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.jpeg&amp;quot;&lt;/span&gt;]);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    fp.suggestedStartLocation = Windows.Storage.KnownFolders.picturesLibrary;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    fp.commitButtonText = &lt;span style="color:#006080;"&gt;&amp;quot;Select&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    fp.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#008000;"&gt;// Open the picker for the user to pick a file&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    fp.pickSingleFileAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (file) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (file != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            that.selectedImage = file;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#previewImage&amp;quot;&lt;/span&gt;).src = URL.createObjectURL(file, { oneTimeOnly: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt; });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            file.properties.getImagePropertiesAsync().then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (imgProp) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                $(&lt;span style="color:#006080;"&gt;&amp;quot;#imageDetails&amp;quot;&lt;/span&gt;).innerHTML = &lt;span style="color:#006080;"&gt;&amp;quot;Width: {0}&amp;lt;br/&amp;gt;Height: {1}&amp;lt;br/&amp;gt;Date Taken: &amp;quot;&lt;/span&gt; +&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    &lt;span style="color:#006080;"&gt;&amp;quot;{2}&amp;lt;br/&amp;gt;Camera Model: {3}&amp;quot;&lt;/span&gt;.format(&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    imgProp.width, imgProp.height, toDateTime(imgProp.dateTaken), imgProp.cameraModel);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value = imgProp.width;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value = imgProp.height;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).disabled = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).textContent = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).textContent = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).disabled = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;},&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;Once you click on the “Pick a Image” button the file picker dialog will appear allowing you to select a single image. As pickSingleFileAsync return a promise, after the FileOpenPicker dialog is closed we received the file you pick. 
    &lt;br /&gt;First we assign the file to selectedImage object, using URL.createObjectURL we transform the file into blob and assign to the image.src property and finally we call – &lt;strong&gt;getImagePropertiesAsync&lt;/strong&gt; function to retrieve image properties so we can display them on the html page. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When if you run the application you can pick and image using the “Pick a Image” button and the result should be like that:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1FF6E1EA.png"&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.microsoft.co.il/blogs/shair/image_thumb_36698071.png" width="750" height="595" /&gt;&lt;/a&gt;&lt;/p&gt;





&lt;ul&gt;
  &lt;li&gt;Open home.html page and add the following code under the preview div element:&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;resizeOptions&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Max Width:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;input&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;number&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;width&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Max Height:&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;input&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;number&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;height&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;btnResize&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;disabled&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;disabled&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Resize Image&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;button&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;We add two input elements allowing you to define the desire size of the image and a button element to invoke the resize function.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Open home.js and add the following code under the $(&amp;quot;#btnBrowse&amp;quot;).addEventListener statement.&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;$(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).addEventListener(&lt;span style="color:#006080;"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.resizeImage.bind(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;We’re adding event listener for click event on “btnResize” button, now let implement the resizeImage function.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;We don’t want to change the original image in our case so the resizeImage will open the FileSavePicker allowing the user to choose where he want to save the resized image.&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;resizeImage: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; width = $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value != &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; ? parseInt($(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value) : 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; height = $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value != &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; ? parseInt($(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value) : 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (width === 0 || height === 0) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; msg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.UI.Popups.MessageDialog(&lt;span style="color:#006080;"&gt;&amp;quot;Please enter width and height values&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        msg.showAsync().done(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.Storage.Pickers.FileSavePicker();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    fs.suggestedStartLocation = Windows.Storage.KnownFolders.picturesLibrary;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    fs.defaultFileExtension = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    fs.fileTypeChoices.insert(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType, [&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType]);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    fs.suggestedFileName = &lt;span style="color:#006080;"&gt;&amp;quot;Resize Demo-&amp;quot;&lt;/span&gt; + &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.name;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    fs.pickSaveFileAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (targetFile) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#008000;"&gt;//copy selected image to new file&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        that.selectedImage.copyAndReplaceAsync(targetFile).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#008000;"&gt;//call resize function on the new file.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            that._resize(width, height, targetFile).done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; msg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.UI.Popups.MessageDialog(&lt;span style="color:#006080;"&gt;&amp;quot;File Resize Completed!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                msg.showAsync().done(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;},&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;The above code check is the input elements for width and height are not empty and then open the FileSavePicker, once the user choose a target file we’ll use the copyAndReplaceAsync function to copy the selected image to the target file the user has selected, finally we call the _resize function passing the width, height and the copied image object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Now to the final part, let’s implement the resize function, add the following code after resizeImage close statement:&lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;_resize: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (maxWidth, maxHeight, imgFile) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalWidth;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalHeight;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; encoder;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fileStream;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; count = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WinJS.Promise(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (complete) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; memStream = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.Storage.Streams.InMemoryRandomAccessStream();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        imgFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (stream) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fileStream = stream;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Windows.Graphics.Imaging.BitmapDecoder.createAsync(fileStream);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        }).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (decoder) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            that._scale(decoder, memStream, maxWidth, maxHeight).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#008000;"&gt;// Overwrite the contents of the file with the updated image stream.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                memStream.seek(0);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                fileStream.seek(0);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                fileStream.size = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Windows.Storage.Streams.RandomAccessStream.copyAsync(memStream, fileStream);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            })&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            .done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#008000;"&gt;// Finally, close each stream to release any locks.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                memStream &amp;amp;&amp;amp; memStream.close();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                fileStream &amp;amp;&amp;amp; fileStream.close();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        );&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;the _resize function calling the openAsync function on the target file to obtaint he file stream then creating stream decoder using Windows.Graphics.Imaging.BitmapDecoder. Once we have the image decoder we can scale the image (I’ll talk about that in the next code example), after the scale function has completed we copy the memoryStream (where we did the scale changes) into the fileStream (target file) after the copy is complete we close both streams. it’s important to close the streams otherwise those streams are locked for other processes. (unless you open the stream only for read).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;The last part and the most important one is _scale function, this function will change the image size based on use max-height and max-width while keeping the image proportion. &lt;/li&gt;
&lt;/ul&gt;

&lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
  &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;_scale: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (decoder, memStream, maxWidth, maxHeight) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WinJS.Promise(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (complete, error) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalHeight = decoder.pixelHeight;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalWidth = decoder.pixelWidth;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (originalHeight &amp;lt;= maxHeight || originalWidth &amp;lt;= maxWidth)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            complete();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            Windows.Graphics.Imaging.BitmapEncoder.createForTranscodingAsync(memStream, decoder).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (_encoder) {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; encoder = _encoder;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercent = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercentW = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercentH = 0;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                nPercentW = (maxWidth / originalWidth);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                nPercentH = (maxHeight / originalHeight);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (nPercentH &amp;lt; nPercentW)&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    nPercent = nPercentH;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    nPercent = nPercentW;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; destWidth = (originalWidth * nPercent);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; destHeight = (originalHeight * nPercent);&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                encoder.bitmapTransform.scaledWidth = destWidth;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                encoder.bitmapTransform.scaledHeight = destHeight;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#008000;"&gt;// Attempt to generate a new thumbnail to reflect any rotation operation.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                encoder.isThumbnailGenerated = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                encoder.flushAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    complete();&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                });&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            })&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    })&lt;/pre&gt;


    &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;},&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;blockquote&gt;
  &lt;p&gt;First we need to check the max-height or max-width are not smaller or equal to the original size.Before changing the image size we’ll use “&lt;strong&gt;createForTranscodingAsync&lt;/strong&gt;” function - creates a new BitmapEncoder and initializes it using data from an existing BitmapDecoder. We do some math to calculate the new image size and to set the new size we need to call the encoder and change the scaleWidth and scaleHeight properties located under bitmapTransform object.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5969CC14.png"&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.microsoft.co.il/blogs/shair/image_thumb_41EF17E3.png" width="732" height="450" /&gt;&lt;/a&gt;&lt;/p&gt;







&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2D1D1F63.png"&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.microsoft.co.il/blogs/shair/image_thumb_5959A647.png" width="315" height="428" /&gt;&lt;/a&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_7B62020D.png"&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.microsoft.co.il/blogs/shair/image_thumb_07837C35.png" width="315" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Code:&lt;/strong&gt;

  &lt;br /&gt;

  &lt;div id="codeSnippetWrapper" style="overflow:auto;cursor:text;font-size:8pt;border-top:silver 1px solid;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-right:silver 1px solid;border-bottom:silver 1px solid;padding-bottom:4px;direction:ltr;text-align:left;padding-top:4px;padding-left:4px;margin:20px 0px 10px;border-left:silver 1px solid;line-height:12pt;padding-right:4px;max-height:200px;width:97.5%;background-color:#f4f4f4;"&gt;
    &lt;div id="codeSnippet" style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;
      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#006080;"&gt;&amp;quot;use strict&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; $(query) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; document.querySelector(query);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; toDateTime(date) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; dateTime = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Date(Date.parse(date));&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (dateTime.getDate()) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; month = dateTime.getMonth() + 1;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; day = dateTime.getDate();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; year = dateTime.getFullYear();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; hours = dateTime.getHours();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; minutes = dateTime.getMinutes();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ampm = hours &amp;lt; 12 ? &lt;span style="color:#006080;"&gt;&amp;quot;am&amp;quot;&lt;/span&gt; : &lt;span style="color:#006080;"&gt;&amp;quot;pm&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#006080;"&gt;&amp;quot;{0}/{1}/{2} {3}:{4} {5}&amp;quot;&lt;/span&gt;.format(month, day, year, hours &amp;lt; 10 ? &lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; + hours :&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                hours, minutes &amp;lt; 10 ? &lt;span style="color:#006080;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; + minutes : minutes, ampm);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; date;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    String.prototype.format = &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; str = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; arguments.length; i++) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; reg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; RegExp(&lt;span style="color:#006080;"&gt;&amp;quot;\\{&amp;quot;&lt;/span&gt; + i + &lt;span style="color:#006080;"&gt;&amp;quot;\\}&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;gm&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            str = str.replace(reg, arguments[i]);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; str;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    };&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; ERR_OPERATION_UNSUPPORTED = -2003292287;  &lt;span style="color:#008000;"&gt;// The operation is unsupported&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;    WinJS.UI.Pages.define(&lt;span style="color:#006080;"&gt;&amp;quot;/pages/home/home.html&amp;quot;&lt;/span&gt;, {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        &lt;span style="color:#008000;"&gt;// This function is called whenever a user navigates to this page. It&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        &lt;span style="color:#008000;"&gt;// populates the page elements with the app&amp;#39;s data.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        ready: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (element, options) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnBrowse&amp;quot;&lt;/span&gt;).addEventListener(&lt;span style="color:#006080;"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.openFilePicker.bind(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).addEventListener(&lt;span style="color:#006080;"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.resizeImage.bind(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        },&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        selectedImage: &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;,&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        openFilePicker: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#008000;"&gt;// Create the picker object and set options&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fp = Windows.Storage.Pickers.FileOpenPicker();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#008000;"&gt;// Users expect to have a filtered view of their folders depending on the scenario.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#008000;"&gt;// For example, when choosing a documents folder, restrict the filetypes to documents for your application.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fp.fileTypeFilter.replaceAll([&lt;span style="color:#006080;"&gt;&amp;quot;.png&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.bmp&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;.jpeg&amp;quot;&lt;/span&gt;]);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            fp.suggestedStartLocation = Windows.Storage.KnownFolders.picturesLibrary;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fp.commitButtonText = &lt;span style="color:#006080;"&gt;&amp;quot;Select&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            fp.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#008000;"&gt;// Open the picker for the user to pick a file&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            fp.pickSingleFileAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (file) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (file != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    that.selectedImage = file;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    $(&lt;span style="color:#006080;"&gt;&amp;quot;#previewImage&amp;quot;&lt;/span&gt;).src = URL.createObjectURL(file, { oneTimeOnly: &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt; });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    file.properties.getImagePropertiesAsync().then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (imgProp) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        $(&lt;span style="color:#006080;"&gt;&amp;quot;#imageDetails&amp;quot;&lt;/span&gt;).innerHTML = &lt;span style="color:#006080;"&gt;&amp;quot;Width: {0}&amp;lt;br/&amp;gt;Height: {1}&amp;lt;br/&amp;gt;Date Taken: {2}&amp;lt;br/&amp;gt;Camera Model: {3}&amp;quot;&lt;/span&gt;.format(&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                            imgProp.width, imgProp.height, toDateTime(imgProp.dateTaken), imgProp.cameraModel);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value = imgProp.width;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value = imgProp.height;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).disabled = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    $(&lt;span style="color:#006080;"&gt;&amp;quot;#btnResize&amp;quot;&lt;/span&gt;).disabled = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        },&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        resizeImage: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; width = $(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value != &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; ? parseInt($(&lt;span style="color:#006080;"&gt;&amp;quot;#width&amp;quot;&lt;/span&gt;).value) : 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; height = $(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value != &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; ? parseInt($(&lt;span style="color:#006080;"&gt;&amp;quot;#height&amp;quot;&lt;/span&gt;).value) : 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (width === 0 || height === 0) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; msg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.UI.Popups.MessageDialog(&lt;span style="color:#006080;"&gt;&amp;quot;Please enter width and height values&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                msg.showAsync().done(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fs = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.Storage.Pickers.FileSavePicker();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fs.suggestedStartLocation = Windows.Storage.KnownFolders.picturesLibrary;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            fs.defaultFileExtension = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fs.fileTypeChoices.insert(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType, [&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.fileType]);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            fs.suggestedFileName = &lt;span style="color:#006080;"&gt;&amp;quot;Resize Demo-&amp;quot;&lt;/span&gt; + &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.selectedImage.name;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            fs.pickSaveFileAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (targetFile) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#008000;"&gt;//copy selected image to new file&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                that.selectedImage.copyAndReplaceAsync(targetFile).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    &lt;span style="color:#008000;"&gt;//call resize function on the new file.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    that._resize(width, height, targetFile).done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; msg = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.UI.Popups.MessageDialog(&lt;span style="color:#006080;"&gt;&amp;quot;File Resize Completed!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        msg.showAsync().done(&lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        },&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        _scale: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (decoder, memStream, maxWidth, maxHeight) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WinJS.Promise(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (complete, error) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalHeight = decoder.pixelHeight;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalWidth = decoder.pixelWidth;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (originalHeight &amp;lt;= maxHeight || originalWidth &amp;lt;= maxWidth)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    complete();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    Windows.Graphics.Imaging.BitmapEncoder.createForTranscodingAsync(memStream, decoder).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (_encoder) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; encoder = _encoder;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercent = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercentW = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; nPercentH = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        nPercentW = (maxWidth / originalWidth);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        nPercentH = (maxHeight / originalHeight);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (nPercentH &amp;lt; nPercentW)&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                            nPercent = nPercentH;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                            nPercent = nPercentW;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; destWidth = (originalWidth * nPercent);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; destHeight = (originalHeight * nPercent);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        encoder.bitmapTransform.scaledWidth = destWidth;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        encoder.bitmapTransform.scaledHeight = destHeight;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#008000;"&gt;// Attempt to generate a new thumbnail to reflect any rotation operation.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        encoder.isThumbnailGenerated = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;&amp;#160;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        encoder.flushAsync().done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                            complete();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    })&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            })&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;        },&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        _resize: &lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (maxWidth, maxHeight, imgFile) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalWidth;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; originalHeight;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; encoder;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; fileStream;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; count = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; that = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WinJS.Promise(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (complete) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; memStream = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Windows.Storage.Streams.InMemoryRandomAccessStream();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                imgFile.openAsync(Windows.Storage.FileAccessMode.readWrite).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (stream) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    fileStream = stream;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Windows.Graphics.Imaging.BitmapDecoder.createAsync(fileStream);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                }).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; (decoder) {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    that._scale(decoder, memStream, maxWidth, maxHeight).then(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#008000;"&gt;// Overwrite the contents of the file with the updated image stream.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        memStream.seek(0);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        fileStream.seek(0);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        fileStream.size = 0;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Windows.Storage.Streams.RandomAccessStream.copyAsync(memStream, fileStream);&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                    })&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    .done(&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt; () {&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        &lt;span style="color:#008000;"&gt;// Finally, close each stream to release any locks.&lt;/span&gt;&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                        memStream &amp;amp;&amp;amp; memStream.close();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                        fileStream &amp;amp;&amp;amp; fileStream.close();&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                    });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;                }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;                );&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;            });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;        }&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:white;"&gt;    });&lt;/pre&gt;


      &lt;pre style="border-top-style:none;overflow:visible;font-size:8pt;border-left-style:none;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;border-bottom-style:none;color:black;padding-bottom:0px;direction:ltr;text-align:left;padding-top:0px;border-right-style:none;padding-left:0px;margin:0em;line-height:12pt;padding-right:0px;width:100%;background-color:#f4f4f4;"&gt;})();&lt;/pre&gt;
&lt;/div&gt;
  &lt;/div&gt;
&lt;/p&gt;





&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/shair/entry1397052.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1397058" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/HTML+5/default.aspx">HTML 5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Windows 8 Metro – Code Behind</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/10/09/windows-8-metro-code-behind.aspx</link><pubDate>Tue, 09 Oct 2012 23:28:16 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1341712</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1341712</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/10/09/windows-8-metro-code-behind.aspx#comments</comments><description>&lt;p&gt;When I develop Windows 8 Metro App I usually use &lt;a href="http://code.msdn.microsoft.com/windowsapps/Windows-8-Modern-Style-App-Samples" target="_blank"&gt;Windows Store app samples&lt;/a&gt; to see code examples features but sometimes you want more…&lt;/p&gt;  &lt;p&gt;For example I really want to know how “Mail” metro app works: How getting access to other email account, sending email and more.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2083C3F4.png"&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.microsoft.co.il/blogs/shair/image_thumb_4FF232C0.png" width="244" height="121" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So in order to to that I had to gain access to “Mail” metro app…&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Let’s start the Hack:&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Problem: &lt;/strong&gt;WindowsApps folder is blocked and by default you can’t open this folder.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: First open Windows Explorer and navigate into “C:\Program Files\”, locate “WindowsApps” folder. (If you can’t see this folder make sure your you can see Hidden Files and Folders - &lt;a href="http://www.wikihow.com/Find-Hidden-Files-and-Folders-in-Windows"&gt;How to Find Hidden Files and Folders in Windows&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Right click on “WindowsApps” and select “Properties”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1CB5F957.png"&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.microsoft.co.il/blogs/shair/image_thumb_5A62E113.png" width="529" height="527" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Move to “&lt;strong&gt;Security&lt;/strong&gt;” tab and click on the “&lt;strong&gt;Advanced&lt;/strong&gt;” button.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_28A7C3BE.png"&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.microsoft.co.il/blogs/shair/image_thumb_2E163462.png" width="393" height="509" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click on the “&lt;strong&gt;Change&lt;/strong&gt;” button.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_246DC62C.png"&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.microsoft.co.il/blogs/shair/image_thumb_498B1098.png" width="639" height="430" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Add your user and click “OK”.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_0D7ECEE3.png"&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.microsoft.co.il/blogs/shair/image_thumb_7E67F008.png" width="504" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now when we try to open “&lt;strong&gt;WindowsApps&lt;/strong&gt;” folder we can get inside and browse the folder inside it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1C65FDFD.png"&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.microsoft.co.il/blogs/shair/image_thumb_3AD03EE6.png" width="510" height="759" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To get “Mail” metro app code let’s get inside “microsoft.windowscommunicationsapps” folder and open “ModernMail” folder, there you can find the entire Code.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_3AC01919.png"&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.microsoft.co.il/blogs/shair/image_thumb_2E51F5F0.png" width="775" height="296" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1341712" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>Windows 8 RTM JavaScript–Change Lock Screen Image</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/23/windows-8-javascript-change-lock-screen-image.aspx</link><pubDate>Sun, 23 Sep 2012 12:38:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1066388</guid><dc:creator>shair</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1066388</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/23/windows-8-javascript-change-lock-screen-image.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/16/windows-8-javascript-change-lock-screen-image.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/04/16/windows-8-javascript-change-lock-screen-image.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In the past couple of months I’ve worked a lot with Windows 8 JavaScript and C#, I’ve also wrote plenty of posts on that subject and there is much more stuff to talk about.&lt;/p&gt;  &lt;p&gt;In this post I’ll show two things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Using File Picker using JavaScript &lt;/li&gt;    &lt;li&gt;Change Windows 8 Lock Screen Image Programmatically &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6A51130F.png"&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.microsoft.co.il/blogs/shair/image_thumb_5000841E.png" width="756" height="571" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1066385/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1: Create Blank JavaScript Project&lt;/h3&gt;  &lt;p&gt;In the &lt;u&gt;app.onactivated&lt;/u&gt; function we add the following code to listen the Choose Picture button and calling the displayCurrentImg function.     &lt;br /&gt;When you click the Choose Picture button we call the openFilePicker function.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;app.onactivated = &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (eventObject) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font style="background-color:#ffff00;"&gt;$(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#btnBrowse&amp;quot;&lt;/font&gt;&lt;/span&gt;).addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;click&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;background-color:#ffff00;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; openFilePicker();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;background-color:#ffff00;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;background-color:#ffff00;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; displayCurrentLockImg();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.processAll();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;};&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 2: Find The Current Lock Screen Image&lt;a href="http://blogs.microsoft.co.il/blogs/shair/16-04-2012-15-40-25_017BCBE7.png"&gt;&lt;img title="16-04-2012 15-40-25" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;float:right;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="16-04-2012 15-40-25" align="right" src="http://blogs.microsoft.co.il/blogs/shair/16-04-2012-15-40-25_thumb_7264ED0C.png" width="159" height="177" /&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;You might notice that in the previous step I used $ char to find the button element, no I’m not using JQuery, I’ve just create a function that return the querySelector return value based on the value we pass. I said it before and I’ll say it again there is not need to add JQuery to Windows 8 Application everything you need is there!&lt;/p&gt;  &lt;p&gt;Now for getting the current Lock Screen Image we’ll use the WinRT UserProfile.    &lt;br /&gt;Windows.System.UserProfile.LockScreen has couple of interesting function you can use:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;getImgeStream – will return the current Lock Screen Image as Stream. &lt;/li&gt;    &lt;li&gt;originalImageFile – the current Image file object. &lt;/li&gt;    &lt;li&gt;setImageFileAsync – Set a new Image from File &lt;/li&gt;    &lt;li&gt;setImageStreamAsync – Set a new Image from Stream &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For now we just want to display the file path of the Lock Screen image.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; $(elementId) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; document.querySelector(elementId);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; displayCurrentLockImg() {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; lockScreenFile = $(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#lockScreenFile&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; lockScreenFile.innerHTML = Windows.System.UserProfile.LockScreen.originalImageFile.path;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 3: Using File Picker&lt;/h3&gt;  &lt;p&gt;File Picker is also a part of WinRT, the file picker allow us to brose through the user files.    &lt;br /&gt;First we need to create a new instance of FileOpenPicker from Windows.Storage.Pickers.&lt;/p&gt;  &lt;p&gt;After we have the picker object we can define the view mode – how we’ll see the files on the picker screen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;List &lt;/li&gt;    &lt;li&gt;Thumbnail &lt;/li&gt; &lt;/ul&gt;  &lt;p class="code"&gt;picker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;&lt;/p&gt;  &lt;p&gt;Now we can define the suggestedStartLocation object that will open our picker at a specific location.    &lt;br /&gt;&lt;br /&gt;&lt;span class="code"&gt;picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;&lt;/span&gt;     &lt;br /&gt;    &lt;br /&gt;Enum Windows.Storage.Pickers.PickerLocationId:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;computerFolder &lt;/li&gt;    &lt;li&gt;desktop &lt;/li&gt;    &lt;li&gt;documentsLibrary &lt;/li&gt;    &lt;li&gt;downloads &lt;/li&gt;    &lt;li&gt;homeGroup &lt;/li&gt;    &lt;li&gt;musicLibrary &lt;/li&gt;    &lt;li&gt;picturesLibrary &lt;/li&gt;    &lt;li&gt;videosLibrary &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We define the file filter to allow Images selection only by replacing all existing filters and adding new once.    &lt;br /&gt;    &lt;br /&gt;&lt;span class="code"&gt;picker.fileTypeFilter.replaceAll([&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpg&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpeg&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.png&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.bmp&amp;quot;&lt;/font&gt;&lt;/span&gt;]);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;Finally we call the pickSingleFileAsync to open the File Picker screen, you can also use pickMultipleFilesAsync for multiple file selection.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Full Code:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;div class="code"&gt;   &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; openFilePicker() {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; picker = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.Storage.Pickers.FileOpenPicker();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; picker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.picturesLibrary;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; picker.fileTypeFilter.replaceAll([&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpg&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpeg&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.png&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.bmp&amp;quot;&lt;/font&gt;&lt;/span&gt;]);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; picker.pickSingleFileAsync().then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (file) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 4: Set New Lock Screen Image&lt;/h3&gt;  &lt;p&gt;After we use the file picker to pick a new image the Lock Screen we just need to call setImageFileAsync function passing the file object from the picker and we’re Done!&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;picker.pickSingleFileAsync().then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (file) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (file) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt;// Application now has read/write access to the picked file, setting image to lockscreen.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Windows.System.UserProfile.LockScreen.setImageFileAsync(file).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (imageSet) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#lockImg&amp;quot;&lt;/font&gt;&lt;/span&gt;).src = URL.createObjectURL(file, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#lockImg&amp;quot;&lt;/font&gt;&lt;/span&gt;).style.display = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;block&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; displayCurrentLockImg();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (imageSet) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt;// Set Image promise failed.&amp;#160; Display failure message.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; showErr(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Setting the lock screen image failed.&amp;#160; Make sure your copy of Windows is activated.&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;},&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; (file) {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; showErr(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;File was not returned&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;});&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1066385/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1066388" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>Windows 8 RTM C# – Capture Media</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/23/windows-8-c-capture-media.aspx</link><pubDate>Sun, 23 Sep 2012 12:18:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1099184</guid><dc:creator>shair</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1099184</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/09/23/windows-8-c-capture-media.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/22/windows-8-c-capture-media.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/05/22/windows-8-c-capture-media.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;I left JavaScript and started to work on Windows 8 Metro using C# and XAML, in this post I’ll demonstrate how to use WinRT for Camera, File Picker and Audio Recording.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_281DC9E5.png"&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.microsoft.co.il/blogs/shair/image_thumb_26C90B39.png" width="744" height="420" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097568/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 1: Create Blank Metro Project and Initialize MediaCapture&lt;/h3&gt;  &lt;p&gt;Taking pictures using Camera or File Picker is pretty easy using WinRT, we going to use the MediaCapture class for Audio Recording, CameraCaptureUI for taking Picture from the built in Camera and FileOpenPicker for choosing pictures from local directories.&lt;/p&gt;  &lt;p&gt;The MediaCapture class will allow us to capture:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Video &lt;/li&gt;    &lt;li&gt;Media &lt;/li&gt;    &lt;li&gt;Audio &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But first we need to create our project resources and define the Application Capabilities to allow us using those features.&lt;/p&gt;  &lt;p&gt;Open &lt;strong&gt;Package.appmanifest&lt;/strong&gt; file located under the project and select the following:     &lt;br /&gt;Each of the below selections gives the application the needed permissions to work with those features.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2F1CBAC3.png"&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.microsoft.co.il/blogs/shair/image_thumb_58B085F6.png" width="257" height="494" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="code"&gt;   &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size:10pt;"&gt;MediaCapture&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; mediaCaptureMgr;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size:10pt;"&gt;StorageFile&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; recordStorageFile;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;bool&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; recording;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;&lt;font style="font-size:10pt;"&gt;DeviceInformationCollection&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; devInfoCollection;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; BlankPage()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.InitializeComponent();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; mediaCaptureMgr = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;MediaCapture&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#808080"&gt;&lt;font style="font-size:10pt;"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt;&lt;span&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#808080"&gt;&amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#808080"&gt;&lt;font style="font-size:10pt;"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt; Invoked when this page is about to be displayed in a Frame.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#808080"&gt;&lt;font style="font-size:10pt;"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt;&lt;span&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#808080"&gt;&lt;font style="font-size:10pt;"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt;&lt;span&gt;&lt;font color="#008000"&gt; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#808080"&gt;&amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt;Event data that describes how this page was reached.&amp;#160; The Parameter&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#808080"&gt;&lt;font style="font-size:10pt;"&gt;///&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt;&lt;span&gt;&lt;font color="#008000"&gt; property is typically used to configure the page.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#808080"&gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;protected&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;async&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;override&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; OnNavigatedTo(&lt;span&gt;&lt;font color="#2b91af"&gt;NavigationEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; EnumerateWebcamsAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; settings = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;MediaCaptureInitializationSettings&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; settings.StreamingCaptureMode = &lt;span&gt;&lt;font color="#2b91af"&gt;StreamingCaptureMode&lt;/font&gt;&lt;/span&gt;.Audio;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; mediaCaptureMgr.InitializeAsync(settings);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 2: EnumerateWebcamsAsync&lt;/h3&gt;  &lt;p&gt;The code below using &lt;strong&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;DeviceInformation&lt;/font&gt;&lt;/span&gt;.FindAllAsync &lt;/strong&gt;method to get all media devices on your machine, you can also use this to get specific devices such as AudioCapture, AudioRender, PortableStorageDevice or VideoCapture.&lt;/p&gt;  &lt;p&gt;Then we just add the name of each device found to a listbox.&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;async&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; EnumerateWebcamsAsync()&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; devInfoCollection = &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnumedDeviceList.Items.Clear();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; devInfoCollection = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;DeviceInformation&lt;/font&gt;&lt;/span&gt;.FindAllAsync(&lt;span&gt;&lt;font color="#2b91af"&gt;DeviceClass&lt;/font&gt;&lt;/span&gt;.All);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (devInfoCollection == &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt; || devInfoCollection.Count == 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.&lt;span&gt;&lt;font color="#2b91af"&gt;MessageDialog&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;No WebCams found.&amp;quot;&lt;/font&gt;&lt;/span&gt;).ShowAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;for&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;int&lt;/font&gt;&lt;/span&gt; i = 0; i &amp;lt; devInfoCollection.Count; i++)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; devInfo = devInfoCollection.ElementAt(i);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnumedDeviceList.Items.Add(devInfo.Name);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; EnumedDeviceList.SelectedIndex = 0;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.&lt;span&gt;&lt;font color="#2b91af"&gt;MessageDialog&lt;/font&gt;&lt;/span&gt;(e.Message).ShowAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 3: File Picker&lt;/h3&gt;  &lt;p&gt;File Picker is part of WinRT, allowing the user to choose files from local directories.&lt;/p&gt;  &lt;p&gt;In the code below we define new class of FileOpenPicker and set several options:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ViewMode&lt;/strong&gt; - Thumbnail or List &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SuggestedStartLocation – &lt;/strong&gt;Start Location &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;FileTypeFilter – &lt;/strong&gt;Supported file types &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Finally we call the PickMultipleFilesAsync to open the file picker and allowing the user to select multiple images. (You can also use PickSingleFileAsync for single image selection)&lt;/p&gt;  &lt;p&gt;When the user click select the desire images and click the OK button we get a IReadOnlyList of StorageFile, in order to show them on the screen we can get the stream from each item our we can copy those file to our local storage and then use the “ms-appdata:///Local/FileName” path to display those images from our local storage folder.&lt;/p&gt;  &lt;div class="code"&gt;   &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;async&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnFilePicker_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;FileOpenPicker&lt;/font&gt;&lt;/span&gt; openPicker = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;FileOpenPicker&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; openPicker.ViewMode = &lt;span&gt;&lt;font color="#2b91af"&gt;PickerViewMode&lt;/font&gt;&lt;/span&gt;.Thumbnail;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; openPicker.SuggestedStartLocation = &lt;span&gt;&lt;font color="#2b91af"&gt;PickerLocationId&lt;/font&gt;&lt;/span&gt;.PicturesLibrary;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; openPicker.FileTypeFilter.Add(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpg&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; openPicker.FileTypeFilter.Add(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpeg&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; openPicker.FileTypeFilter.Add(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.png&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;IReadOnlyList&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;StorageFile&lt;/font&gt;&lt;/span&gt;&amp;gt; files = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; openPicker.PickMultipleFilesAsync(); &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#008000"&gt;//PickSingleFileAsync&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (files.Count == 0)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.&lt;span&gt;&lt;font color="#2b91af"&gt;MessageDialog&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;No files were seleced!&amp;quot;&lt;/font&gt;&lt;/span&gt;).ShowAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; storage = Windows.Storage.&lt;span&gt;&lt;font color="#2b91af"&gt;ApplicationData&lt;/font&gt;&lt;/span&gt;.Current.LocalFolder;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; file &lt;span&gt;&lt;font color="#0000ff"&gt;in&lt;/font&gt;&lt;/span&gt; files)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; copiedFile = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; file.CopyAsync(storage, file.Name, &lt;span&gt;&lt;font color="#2b91af"&gt;NameCollisionOption&lt;/font&gt;&lt;/span&gt;.GenerateUniqueName);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; listImages.Items.Add(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.Format(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;ms-appdata:///Local/{0}&amp;quot;&lt;/font&gt;&lt;/span&gt;, copiedFile.Name));&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="background:white;margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 4: Camera Capture&lt;/h3&gt;  &lt;p&gt;Now it’s time to capture a image from the built in Camera, to do so we’ll use the &lt;span&gt;&lt;font color="#2b91af"&gt;CameraCaptureUI, &lt;/font&gt;&lt;font color="#000000"&gt;simply define what type of image you want to receive by defining the Format, size etc.. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;font color="#000000"&gt;After the user close the Camera dialog we check if the return file isn’t null and if it doesn&amp;#39;t we use OpenAsyc method to get the file stream and then using that stream we’ll create a new BitmapImage from that stream and assign it to the ImgCamera.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;async&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnCamera_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;CameraCaptureUI&lt;/font&gt;&lt;/span&gt; dialog = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;CameraCaptureUI&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;Size&lt;/font&gt;&lt;/span&gt; aspectRatio = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;Size&lt;/font&gt;&lt;/span&gt;(16, 9);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dialog.PhotoSettings.Format = &lt;span&gt;&lt;font color="#2b91af"&gt;CameraCaptureUIPhotoFormat&lt;/font&gt;&lt;/span&gt;.Png;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;StorageFile&lt;/font&gt;&lt;/span&gt; file = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; dialog.CaptureFileAsync(&lt;span&gt;&lt;font color="#2b91af"&gt;CameraCaptureUIMode&lt;/font&gt;&lt;/span&gt;.Photo);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (file != &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; stream = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; file.OpenAsync(Windows.Storage.&lt;span&gt;&lt;font color="#2b91af"&gt;FileAccessMode&lt;/font&gt;&lt;/span&gt;.Read);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; bmpimg = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#2b91af"&gt;BitmapImage&lt;/font&gt;&lt;/span&gt;();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bmpimg.SetSource(stream);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ImgCamera.Source = bmpimg;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.Dispose();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; ex)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.&lt;span&gt;&lt;font color="#2b91af"&gt;MessageDialog&lt;/font&gt;&lt;/span&gt;(ex.Message).ShowAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;h3&gt;Step 5: Audio Recording&lt;/h3&gt;  &lt;p&gt;No for the last part of application, Recording Audio, first we’ll create a StorageFile inside the Music Library, we’ll set the recording profile to create an M4a file type and just calling the &lt;strong&gt;StartRecordToStorageFileAsync &lt;/strong&gt;method of the &lt;span&gt;&lt;font color="#2b91af"&gt;MediaCapture&lt;/font&gt;&lt;font color="#000000"&gt; class passing the storageFile and the recording profile.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span&gt;&lt;font color="#000000"&gt;After the user click the stop button we call the &lt;strong&gt;StopRecordAsync&lt;/strong&gt; method, this will stop the recording and same as we did for the Camera, we open the file stream and assign the stream to the MediaPlayer source.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="code" style="background:white;"&gt;   &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:10pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:10pt;"&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;async&lt;/font&gt;&lt;/span&gt; &lt;span&gt;&lt;font color="#0000ff"&gt;void&lt;/font&gt;&lt;/span&gt; btnAudio_Click(&lt;span&gt;&lt;font color="#0000ff"&gt;object&lt;/font&gt;&lt;/span&gt; sender, &lt;span&gt;&lt;font color="#2b91af"&gt;RoutedEventArgs&lt;/font&gt;&lt;/span&gt; e)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;{&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#0000ff"&gt;try&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;/span&gt; fileName = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;AudioRecording.m4a&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (!recording)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recordStorageFile = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; Windows.Storage.&lt;span&gt;&lt;font color="#2b91af"&gt;KnownFolders&lt;/font&gt;&lt;/span&gt;.MusicLibrary.CreateFileAsync(fileName);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Windows.Media.MediaProperties.&lt;span&gt;&lt;font color="#2b91af"&gt;MediaEncodingProfile&lt;/font&gt;&lt;/span&gt; recordProfile = &lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recordProfile = Windows.Media.MediaProperties.&lt;span&gt;&lt;font color="#2b91af"&gt;MediaEncodingProfile&lt;/font&gt;&lt;/span&gt;.CreateM4a(Windows.Media.MediaProperties.&lt;span&gt;&lt;font color="#2b91af"&gt;AudioEncodingQuality&lt;/font&gt;&lt;/span&gt;.Auto);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recording = &lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnAudio.Content = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Stop Recording&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; mediaCaptureMgr.StartRecordToStorageFileAsync(recordProfile, recordStorageFile);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;span&gt;&lt;font style="font-size:10pt;" color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; mediaCaptureMgr.StopRecordAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnAudio.Content = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Start Recording&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; stream = &lt;span&gt;&lt;font color="#0000ff"&gt;await&lt;/font&gt;&lt;/span&gt; recordStorageFile.OpenAsync(Windows.Storage.&lt;span&gt;&lt;font color="#2b91af"&gt;FileAccessMode&lt;/font&gt;&lt;/span&gt;.Read);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; playbackElement.AutoPlay = &lt;span&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; playbackElement.SetSource(stream, recordStorageFile.FileType);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; playbackElement.Play();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recording = &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;catch&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#2b91af"&gt;Exception&lt;/font&gt;&lt;/span&gt; ex)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recording = &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.&lt;span&gt;&lt;font color="#2b91af"&gt;MessageDialog&lt;/font&gt;&lt;/span&gt;(ex.Message).ShowAsync();&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;font face="Consolas"&gt;&lt;font style="font-size:10pt;"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1097568/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1099184" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/SilverLight/default.aspx">SilverLight</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>How To: Bing Maps Custom Tile Overlay - Google Maps</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/24/how-to-bing-maps-custom-tile-overlay-google-maps.aspx</link><pubDate>Sun, 24 Jun 2012 20:39:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1130224</guid><dc:creator>shair</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1130224</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/24/how-to-bing-maps-custom-tile-overlay-google-maps.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/24/how-to-bing-maps-custom-tile-overlay-google-maps.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/24/how-to-bing-maps-custom-tile-overlay-google-maps.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;I got a question from a friend who wanted to replace &lt;u&gt;Bing Maps Tiles&lt;/u&gt; with &lt;u&gt;Google Maps Tiles&lt;/u&gt;.     &lt;br /&gt;You might ask yourself why? If you want Google Tiles just replace Bing Control and work with Google Maps…..&amp;#160; In this case I want to work with &lt;u&gt;Bing Map Control&lt;/u&gt; because the benefits I get in Metro Applications in Windows 8 for C#, C++, VB.NET and JavaScript.&amp;#160; &lt;br /&gt;And I also want Google Maps &lt;u&gt;&lt;strong&gt;language support&lt;/strong&gt;&lt;/u&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1130214/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Currently Bing Maps doesn&amp;#39;t support any language except English, and I want to display the map with the user natural language. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Google \ Bing Preview&lt;/strong&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;&lt;font size="2"&gt;Google - &lt;u&gt;Hebrew&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;font size="2"&gt;Google - &lt;u&gt;English&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;font size="2"&gt;Bing – &lt;u&gt;Only English&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;&lt;img src="https://mts0.google.com/vt/lyrs=m@177000000&amp;amp;hl=he&amp;amp;src=api&amp;amp;x=39101&amp;amp;s=&amp;amp;y=26596&amp;amp;z=16&amp;amp;s=" width="222" height="222" alt="" /&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;img src="https://mts0.google.com/vt/lyrs=m@177000000&amp;amp;hl=en&amp;amp;src=api&amp;amp;x=39101&amp;amp;s=&amp;amp;y=26596&amp;amp;z=16&amp;amp;s=" width="220" height="220" alt="" /&gt;&lt;/td&gt;        &lt;td valign="top"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2E4B76E9.png"&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.microsoft.co.il/blogs/shair/image_thumb_546D84A7.png" width="284" height="222" /&gt;&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Before we jump to the solution let’s talk about the common ground between Bing and Google Maps.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Each tile consists of 256 x 256 pixels&lt;/li&gt;    &lt;li&gt;Each succeeding zoom level divides the map into &lt;i&gt;4 N&lt;/i&gt; tiles, where &lt;i&gt;N&lt;/i&gt; refers to the zoom level. &lt;u&gt;For example&lt;/u&gt;:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;at zoom level 1,each map divides the world up into a 2x2 grid for a total of 4 tiles; &lt;/li&gt;      &lt;li&gt;at zoom level 2, each map divides up the world into a 4x4 grid for a total of 16 tiles, etc       &lt;br /&gt;&lt;/li&gt;      &lt;li&gt;(From “&lt;a href="https://developers.google.com/maps/documentation/javascript/v2/overlays"&gt;Tile Coordinates&lt;/a&gt;” Google API) – Zoom Level 2 (4x4)        &lt;br /&gt;&lt;img src="https://developers.google.com/maps/documentation/javascript/v2/images/tileCoordinates.png" alt="" /&gt;        &lt;br /&gt;&lt;/li&gt;      &lt;li&gt;(From “&lt;a href="http://msdn.microsoft.com/en-us/library/bb259689.aspx" target="_blank"&gt;Tile Coordinates and Quadkeys&lt;/a&gt;” MSDN) – Zoom Level 3 (8x8)&lt;img title="Bb259689.209e5af1-34c1-45f6-ba24-41df3e1a1b10(en-us,MSDN.10).jpg" alt="Bb259689.209e5af1-34c1-45f6-ba24-41df3e1a1b10(en-us,MSDN.10).jpg" src="http://i.msdn.microsoft.com/dynimg/IC5902.jpg" /&gt;&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;I order to replace the tile we need to have Google map url that will return the specific tile based on the X, Y, and Zoom level – and we have it here:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Google Maps&lt;/strong&gt; –&amp;gt; calling &amp;quot;&lt;a href="https://mts0.google.com/vt/hl=he&amp;amp;src=api&amp;amp;x=2&amp;amp;s=&amp;amp;y=1&amp;amp;z=3"&gt;https://mts0.google.com/vt/hl=he&amp;amp;src=api&amp;amp;x=2&amp;amp;s=&amp;amp;y=1&amp;amp;z=3&lt;/a&gt;” will return: (X = 2 , Y = 1 , Zoom = 3)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6A07BD44.png"&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.microsoft.co.il/blogs/shair/image_thumb_32ADBDE4.png" width="718" height="368" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;So what is the problem?&lt;/strong&gt;&lt;/font&gt; The problem is that in order to replace Tiles in &lt;u&gt;Bing Maps&lt;/u&gt; you need to pass the “&lt;strong&gt;QuadKey&lt;/strong&gt;” value. - &lt;a href="http://msdn.microsoft.com/en-us/library/hh846495.aspx"&gt;MapTileLayer Class&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;As you can see from the code example below the TileSource gets the url of the custom tile with a parameter called - &lt;strong&gt;{quadkey}&lt;/strong&gt;&lt;/p&gt;    &lt;h5&gt;C#&lt;/h5&gt;    &lt;blockquote&gt;     &lt;pre class="csharpcode"&gt;MapTileLayer tileLayer = &lt;span class="kwrd"&gt;new&lt;/span&gt; MapTileLayer();
tileLayer.TileSource = &lt;span class="str"&gt;&amp;quot;http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png&amp;quot;&lt;/span&gt;;
map.TileLayers.Add(tileLayer);&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;h5&gt;JavaScript&lt;/h5&gt;

  &lt;blockquote&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; addTileOverlay() {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; options = { uriConstructor: &lt;span class="str"&gt;&amp;quot;http://www.microsoft.com/maps/isdk/ajax/layers/lidar/{quadkey}.png&amp;quot;&lt;/span&gt;};
    &lt;span class="kwrd"&gt;var&lt;/span&gt; tileSource = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.TileSource(options);
    &lt;span class="kwrd"&gt;var&lt;/span&gt; tilelayer = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.TileLayer({ mercator: tileSource });
    map.entities.push(tilelayer);
}&lt;/pre&gt;
  &lt;/blockquote&gt;

  &lt;p&gt;&lt;u&gt;&lt;strong&gt;What is QuadKey? - A quadkey uniquely identifies single tiles at particular levels of detail&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

  &lt;p&gt;&lt;em&gt;To optimize the indexing and storage of tiles, the two-dimensional tile XY coordinates are combined into one-dimensional strings called quadtree keys, or “quadkeys” for short. Each quadkey uniquely identifies a single tile at a particular level of detail, and it can be used as an key in common database B-tree indexes. To convert tile coordinates into a quadkey, the bits of the Y and X coordinates are interleaved, and the result is interpreted as a base-4 number (with leading zeros maintained) and converted into a string. For instance, given tile XY coordinates of (3, 5) at level 3, the quadkey is determined as follows:&lt;/em&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;tileX = 3 = 011 2&lt;/em&gt;&lt;/li&gt;

  &lt;li&gt;&lt;em&gt;tileY = 5 = 101 2&lt;/em&gt;&lt;/li&gt;

  &lt;li&gt;&lt;em&gt;quadkey = 100111 2 = 213 4 = “213”&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Quadkeys have several interesting properties. First, the length of a quadkey (the number of digits) equals the level of detail of the corresponding tile. Second, the quadkey of any tile starts with the quadkey of its parent tile (the containing tile at the previous level). As shown in the example below, tile 2 is the parent of tiles 20 through 23, and tile 13 is the parent of tiles 130 through 133:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img title="Bb259689.5cff54de-5133-4369-8680-52d2723eb756(en-us,MSDN.10).jpg" alt="Bb259689.5cff54de-5133-4369-8680-52d2723eb756(en-us,MSDN.10).jpg" src="http://i.msdn.microsoft.com/dynimg/IC96238.jpg" width="713" height="418" /&gt;&lt;/p&gt;

&lt;p&gt;So now that we understand what is QuadKey we understand that we need to translate this value into Google Map X,Y and Zoom, we can use the following method to convert the QuadKey into x,y and level values.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; QuadKeyToTileXY(&lt;span class="kwrd"&gt;string&lt;/span&gt; quadKey, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; tileX, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; tileY, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; levelOfDetail)
{
    tileX = tileY = 0;
    levelOfDetail = quadKey.Length;
    &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = levelOfDetail; i &amp;gt; 0; i--)
    {
        &lt;span class="kwrd"&gt;int&lt;/span&gt; mask = 1 &amp;lt;&amp;lt; (i - 1);
        &lt;span class="kwrd"&gt;switch&lt;/span&gt; (quadKey[levelOfDetail - i])
        {
            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;&amp;#39;0&amp;#39;&lt;/span&gt;:
                &lt;span class="kwrd"&gt;break&lt;/span&gt;;
            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;:
                tileX |= mask;
                &lt;span class="kwrd"&gt;break&lt;/span&gt;;
            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;&amp;#39;2&amp;#39;&lt;/span&gt;:
                tileY |= mask;
                &lt;span class="kwrd"&gt;break&lt;/span&gt;;
            &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;&amp;#39;3&amp;#39;&lt;/span&gt;:
                tileX |= mask;
                tileY |= mask;
                &lt;span class="kwrd"&gt;break&lt;/span&gt;;
            &lt;span class="kwrd"&gt;default&lt;/span&gt;:
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentException(&lt;span class="str"&gt;&amp;quot;Invalid QuadKey digit sequence.&amp;quot;&lt;/span&gt;);
        }
    }
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;But you don’t need to do that because the &lt;strong&gt;quadkey&lt;/strong&gt; is automatically translated into those values, so instead of setting a static url for TileOverlay we will set a function called &lt;strong&gt;convert &lt;/strong&gt;that received the &lt;strong&gt;quadkey&lt;/strong&gt; object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font style="background-color:#ffff00;"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; convert(quadkey) {
    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;https://mts0.google.com/vt/hl=he&amp;amp;src=api&amp;amp;x=&amp;quot;&lt;/span&gt; + quadkey.x + &lt;span class="str"&gt;&amp;quot;&amp;amp;s=&amp;amp;y=&amp;quot;&lt;/span&gt; + quadkey.y + &lt;span class="str"&gt;&amp;quot;&amp;amp;z=&amp;quot;&lt;/span&gt; + quadkey.levelOfDetail;
}&lt;/font&gt;

&lt;span class="kwrd"&gt;function&lt;/span&gt; addTileOverlay() {
      &lt;span class="kwrd"&gt;var&lt;/span&gt; options = { uriConstructor: &lt;font style="background-color:#ffff00;"&gt;convert&lt;/font&gt; };
    &lt;span class="kwrd"&gt;var&lt;/span&gt; tileSource = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.TileSource(options);
    &lt;span class="kwrd"&gt;var&lt;/span&gt; tilelayer = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.TileLayer({ mercator: tileSource });
    map.entities.push(tilelayer);
}&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h3&gt;Bing Map &lt;u&gt;without&lt;/u&gt; Google Tiles:&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_349A4B46.png"&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.microsoft.co.il/blogs/shair/image_thumb_7232F936.png" width="907" height="561" /&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h3&gt;Bing Maps &lt;u&gt;with&lt;/u&gt; Google Tiles:&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_50630CA6.png"&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.microsoft.co.il/blogs/shair/image_thumb_24022629.png" width="919" height="572" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1130214/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1130224" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Bing/default.aspx">Bing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>How To: Bing Maps For Windows 8 Metro Apps - JavaScript</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/22/how-to-bing-maps-for-windows-8-metro-apps-javascript.aspx</link><pubDate>Fri, 22 Jun 2012 14:16:16 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1127292</guid><dc:creator>shair</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1127292</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/22/how-to-bing-maps-for-windows-8-metro-apps-javascript.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Arial"&gt;In my last post I talked about &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/17/how-to-bing-maps-for-windows-8-metro-apps.aspx"&gt;Bing Map for C#&lt;/a&gt;, but you can also do the same of JavaScript projects using Bing Maps SDK.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1127284/download.aspx"&gt;&lt;font face="Arial"&gt;Download Demo Project&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;font face="Arial"&gt;Step 1: Maps Developer Account&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;&lt;font face="Arial"&gt;Before you can use Bing Sdk from Windows 8 Metro App you need Maps Developer Account, open &lt;/font&gt;&lt;a href="http://www.bingmapsportal.com/"&gt;&lt;font face="Arial"&gt;http://www.bingmapsportal.com/&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;, create or enter with existing Windows Live account. Choose “&lt;/font&gt;&lt;a href="https://www.bingmapsportal.com/application"&gt;&lt;font face="Arial"&gt;Create or view keys&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt;” and create new Key for your application.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Arial"&gt;&lt;img alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_1CE519F1.png" /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Arial"&gt;&lt;img alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_09280A90.png" /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;&lt;font face="Arial"&gt;Step 2: Create Bing Maps Metro Application&lt;/font&gt;&lt;/h2&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font face="Arial"&gt;Download the latest bits - &lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=242709"&gt;&lt;font face="Arial"&gt;Bing Maps SDK for Metro style apps&lt;/font&gt;&lt;/a&gt;&lt;font face="Arial"&gt; &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font face="Arial"&gt;Open Visual Studio 2012 RC, and create JavaScript Blank Project. &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font face="Arial"&gt;“Add Reference” –&amp;gt; select “Bing Maps for JavaScript (Beta)….” and click OK. &lt;/font&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_1A7AB370.png"&gt;&lt;font face="Arial"&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.microsoft.co.il/blogs/shair/image_thumb_76FE0F0A.png" width="753" height="425" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&lt;font face="Arial"&gt;Step 3: Add Map Control&lt;/font&gt;&lt;/h2&gt;  &lt;p&gt;&lt;font face="Arial"&gt;Inside default.html we add a div element under the body, this will be the map holder.&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&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;=&amp;quot;mapdiv&amp;quot;&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;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre class="csharpcode"&gt;&lt;font size="3" face="Arial"&gt;Now we need to load the map into that control, be just before we need to load the map module, in order to &lt;br /&gt;do that we’ll call Maps.loadMoudle and set a callback to another method called – initMap.&lt;/font&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;app.onactivated = &lt;span class="kwrd"&gt;function&lt;/span&gt; (args) {
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (args.detail.kind === activation.ActivationKind.launch) {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
        } &lt;span class="kwrd"&gt;else&lt;/span&gt; {
        }
        args.setPromise(WinJS.UI.processAll().then(&lt;span class="kwrd"&gt;function&lt;/span&gt; () {
            &lt;font style="background-color:#ffff00;"&gt;Microsoft.Maps.loadModule(&lt;span class="str"&gt;&amp;#39;Microsoft.Maps.Map&amp;#39;&lt;/span&gt;, { callback: initMap });&lt;/font&gt;
        }));
    }
};&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Arial"&gt;After the Maps module is loaded the initMap function will place the Map into the mapdiv element, the function &lt;br /&gt;below defines several default values such as:&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Arial"&gt;Bing Map credentials&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="Arial"&gt;Center location&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="Arial"&gt;Map type&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="Arial"&gt;Zoom&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;font color="#000000" size="3" face="Arial"&gt;Finally we obtain the mapdiv element and define a new object called map defined from new Map that receive the &lt;br /&gt;div and the options.&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; initMap() {
    &lt;span class="kwrd"&gt;try&lt;/span&gt; {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; mapOptions =
        {
            credentials: &lt;span class="str"&gt;&amp;quot;AvOW5Fz4QTsubTTdmaVnseeZnAQ0JYwbx_6zdMdgHk6iF-pnoTE7vojUFJ1kXFTP&amp;quot;&lt;/span&gt;,
            center: &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Location(50, 50),
            mapTypeId: Microsoft.Maps.MapTypeId.road,
            zoom: 5
        };

        &lt;span class="kwrd"&gt;var&lt;/span&gt; mapDiv = document.querySelector(&lt;span class="str"&gt;&amp;quot;#mapdiv&amp;quot;&lt;/span&gt;);
        map = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Map(mapDiv, mapOptions);
    }
    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (e) {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; md = &lt;span class="kwrd"&gt;new&lt;/span&gt; Windows.UI.Popups.MessageDialog(e.message);
        md.showAsync();
    }
}&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_622C168A.png"&gt;&lt;font face="Arial"&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.microsoft.co.il/blogs/shair/image_thumb_7D611D33.png" width="772" height="477" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;&lt;font face="Arial"&gt;Step 4: Basics&lt;/font&gt;&lt;/h2&gt;

&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Arial"&gt;I’ve added couple of buttons on the right side to help us controlling the map view.&lt;/font&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Zoom&lt;/strong&gt; – The JS map control has built in Zoom in and Zoom out but you can still change the zoom from code:&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; zoomValue = map.getZoom();
map.setView({ zoom: zoomValue + 2 });&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Map Type -&lt;/strong&gt; there are 3 types of maps : Aerial, Road and Birdseye.&lt;/font&gt;&lt;/pre&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; changeMapType() {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; type = map.getMapTypeId();
    &lt;span class="kwrd"&gt;switch&lt;/span&gt; (type) {
        &lt;span class="kwrd"&gt;case&lt;/span&gt; Microsoft.Maps.MapTypeId.aerial:
            type = Microsoft.Maps.MapTypeId.road;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
        &lt;span class="kwrd"&gt;case&lt;/span&gt; Microsoft.Maps.MapTypeId.road:
            type = Microsoft.Maps.MapTypeId.birdseye;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
        &lt;span class="kwrd"&gt;default&lt;/span&gt;:
            type = Microsoft.Maps.MapTypeId.aerial;
            &lt;span class="kwrd"&gt;break&lt;/span&gt;;
    }
    map.setView({ center: map.getCenter(), mapTypeId: type });
}&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_148BD60B.png"&gt;&lt;font face="Arial"&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.microsoft.co.il/blogs/shair/image_thumb_3E5B62CC.png" width="774" height="479" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Set Current Location&lt;/strong&gt; – Using Geolocator to find current location, then using map SetView to center map based on the new location (Make sure you enable “Location” as application capability.)&lt;/font&gt;&lt;/li&gt;

  &lt;li&gt;&lt;font face="Arial"&gt;&lt;img alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_7D019093.png" /&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; centerPosition() {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; geolocator = &lt;span class="kwrd"&gt;new&lt;/span&gt; Windows.Devices.Geolocation.Geolocator();
    geolocator.getGeopositionAsync().then(&lt;span class="kwrd"&gt;function&lt;/span&gt; (loc) {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; mapCenter = map.getCenter();
        mapCenter.latitude = loc.coordinate.latitude;
        mapCenter.longitude = loc.coordinate.longitude;

        map.setView({ center: mapCenter, zoom: 18 });
    });
}&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h2&gt;&lt;font face="Arial"&gt;Step 5: Push Pin&lt;/font&gt;&lt;/h2&gt;

&lt;p&gt;&lt;font face="Arial"&gt;In step 4 we used “Geolocator” to find our current position, then we center the map based on the new position.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Arial"&gt;Instead of just centering the map we’ll like to add a PushPin directly on our location.&lt;/font&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; addPushPin(location) {
    map.entities.clear();       
    &lt;span class="kwrd"&gt;var&lt;/span&gt; pushpin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Pushpin(location, &lt;span class="kwrd"&gt;null&lt;/span&gt;);
    map.entities.push(pushpin);
}

&lt;span class="kwrd"&gt;function&lt;/span&gt; centerPosition() {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; geolocator = &lt;span class="kwrd"&gt;new&lt;/span&gt; Windows.Devices.Geolocation.Geolocator();
    geolocator.getGeopositionAsync().then(&lt;span class="kwrd"&gt;function&lt;/span&gt; (loc) {
        &lt;span class="kwrd"&gt;var&lt;/span&gt; mapCenter = map.getCenter();
        mapCenter.latitude = loc.coordinate.latitude;
        mapCenter.longitude = loc.coordinate.longitude;

        map.setView({ center: mapCenter, zoom: 15 });

       &lt;font style="background-color:#ffff00;"&gt; addPushPin(mapCenter);&lt;/font&gt;
    });
}&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;pre class="csharpcode"&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6A0B6B21.png"&gt;&lt;font face="Arial"&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.microsoft.co.il/blogs/shair/image_thumb_3120EB87.png" width="724" height="448" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/pre&gt;

&lt;h2&gt;&lt;font face="Arial"&gt;Step 6: Tap and Pin&lt;/font&gt;&lt;/h2&gt;

&lt;p&gt;&lt;font face="Arial"&gt;One more functionality I’ll would like to add is “Tap”, this mean the user click tap on the map (or mouse click) and this will place a Push Pin where the user clicked.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Arial"&gt;Instead of using the standard PushPin image I want to load my own image as pin, so I add a 
    &lt;br /&gt;“star.png” file to images folder.&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;&lt;font face="Arial"&gt;Also I add new event listener for click on the mapDiv element calling new function called – “&lt;strong&gt;tapped&lt;/strong&gt;”&lt;/font&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; mapDiv = document.querySelector(&lt;span class="str"&gt;&amp;quot;#mapdiv&amp;quot;&lt;/span&gt;);
&lt;font style="background-color:#ffff00;"&gt;mapDiv.addEventListener(&lt;span class="str"&gt;&amp;#39;click&amp;#39;&lt;/span&gt;, tapped, &lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/font&gt;
map = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Map(mapDiv, mapOptions);&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font face="Arial"&gt;When tapped event is fired we can use the tapped event arguments to get the relative position of the tap position by calling the &lt;strong&gt;tryPixelToLocation &lt;/strong&gt;method from the map control, then after we received the location where the user clicked we can add a push pin and center the map based on the the new location.&lt;/font&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="csharpcode"&gt;&lt;font face="Arial"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; tapped(location) {
    &lt;span class="kwrd"&gt;var&lt;/span&gt; mapCenter = map.getCenter();
    &lt;span class="kwrd"&gt;var&lt;/span&gt; pos = map.tryPixelToLocation(&lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Point(location.clientX, location.clientY),&lt;br /&gt;                                      Microsoft.Maps.PixelReference.control);
    mapCenter.latitude = pos.latitude;
    mapCenter.longitude = pos.longitude;
    map.setView({ center: mapCenter });

    &lt;span class="kwrd"&gt;var&lt;/span&gt; pin = &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Pushpin({ latitude: pos.latitude, longitude: pos.longitude }, {
        icon: &lt;span class="str"&gt;&amp;#39;/images/star.png&amp;#39;&lt;/span&gt;,
        anchor: &lt;span class="kwrd"&gt;new&lt;/span&gt; Microsoft.Maps.Point(8, 8)
    });

    map.entities.clear();
    map.entities.push(pin);
}&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6876D6E8.png"&gt;&lt;font face="Arial"&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.microsoft.co.il/blogs/shair/image_thumb_369B6DF9.png" width="713" height="441" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1127284/download.aspx"&gt;&lt;font face="Arial"&gt;Download Demo Project&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1127292" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Bing/default.aspx">Bing</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Upgrade Metro App From Beta To RC</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/03/upgrade-metro-app-from-beta-to-rc.aspx</link><pubDate>Sun, 03 Jun 2012 17:25:52 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1110620</guid><dc:creator>shair</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1110620</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/03/upgrade-metro-app-from-beta-to-rc.aspx#comments</comments><description>&lt;p&gt;In my previous post &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/03/convert-vs-11-beta-metro-projects-to-vs-2012-rc.aspx"&gt;Convert VS 11 Beta Metro Projects To VS 2012 RC&lt;/a&gt; I talked about upgrading the Project file from Beta to RC, in this post I’ll try to talk about all changes made from Beta to RC.&lt;/p&gt;  &lt;p&gt;I don’t know all the breaking changes in JavaScript and C# but I collect all the breaking changes from the application and games I develop and I’ll show them here.&lt;/p&gt;  &lt;h3&gt;JavaScript + HTML&lt;/h3&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="2"&gt;       &lt;tr style="background-color:#dcdcdc;"&gt;         &lt;td valign="top"&gt;Type&lt;/td&gt;          &lt;td valign="top"&gt;Old Value&lt;/td&gt;          &lt;td valign="top"&gt;New Value&lt;/td&gt;          &lt;td valign="top"&gt;Comment&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Event&lt;/td&gt;          &lt;td valign="top"&gt;MSGestureTap &lt;/td&gt;          &lt;td valign="top"&gt;onclick&lt;/td&gt;          &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Event&lt;/td&gt;          &lt;td valign="top"&gt;MSGestureHold&lt;/td&gt;          &lt;td valign="top"&gt;oncontextmenu&lt;/td&gt;          &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Method&lt;/td&gt;          &lt;td valign="top"&gt;getPointerList&lt;/td&gt;          &lt;td valign="top"&gt;Removed&lt;/td&gt;          &lt;td valign="top"&gt;use &lt;strong&gt;getIntermediatePoints &lt;/strong&gt;with the element you want to get the points from.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Event&lt;/td&gt;          &lt;td valign="top"&gt;MSGestureDoubleTap&lt;/td&gt;          &lt;td valign="top"&gt;double-click&lt;/td&gt;          &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Method&lt;/td&gt;          &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top"&gt;WinJS.strictProcessing();            &lt;br /&gt;            &lt;br /&gt;function Test()             &lt;br /&gt;{             &lt;br /&gt;&amp;#160;&amp;#160; //ToDo             &lt;br /&gt;}             &lt;br /&gt;test.supportedForProcessing = true;&lt;/td&gt;          &lt;td valign="top"&gt;           &lt;p&gt;Now, any function resolved for data-win-control or as a right-hand-side in data-win-options, or used as a binding initializer in data-win-bind, will require a property on the function definition.&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;Event&lt;/td&gt;          &lt;td valign="top"&gt;viewstatechanged&lt;/td&gt;          &lt;td valign="top"&gt;resize&lt;/td&gt;          &lt;td valign="top"&gt;function onResize()            &lt;br /&gt;myViewState = Windows.UI.ViewManagement.ApplicationView.value;&lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/p&gt;  &lt;h3&gt;C# + XAML&lt;/h3&gt;  &lt;p&gt;My first suggestion is – &lt;strong&gt;Start a new Project&lt;/strong&gt;, don’t try to fix all the errors because there are tons of changes, class such as “&lt;strong&gt;&lt;u&gt;LayoutAwarePage.cs&lt;/u&gt;” &lt;/strong&gt;has completely changed so just create a new project and start copying files.&lt;/p&gt;  &lt;p&gt;But after you copy your code you will still have changes to do, starting from simple class changes to Style changes.&lt;/p&gt;  &lt;p&gt;Below you can find a list of things that changed, just perform Find and Replace, I think 90% of the styles has changed just with “Theme” word before Brush, but some styles names also changed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr style="background-color:#dcdcdc;"&gt;       &lt;td valign="top"&gt;Type&lt;/td&gt;        &lt;td valign="top"&gt;Old Value&lt;/td&gt;        &lt;td valign="top"&gt;New Value&lt;/td&gt;        &lt;td valign="top"&gt;Comment&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Class&lt;/td&gt;        &lt;td valign="top"&gt;PointerEventArgs&lt;/td&gt;        &lt;td valign="top"&gt;PointerRoutedEventArgs&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;FocusVisualBlackStrokeBrush&lt;/td&gt;        &lt;td valign="top"&gt;FocusVisualBlackStrokeThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;FocusVisualWhiteStrokeBrush&lt;/td&gt;        &lt;td valign="top"&gt;FocusVisualWhiteStrokeThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationHoverTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationPointerOverForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationPressedTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationPressedForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ControlDisabledTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ButtonDisabledForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationSecondaryTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationSecondaryForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemForegroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemBackgroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemHoverBackgroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemPointerOverBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemHoverForegroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemPointerOverForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemForegroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemPressedForegroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemPressedForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemDisabledForegroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;AppBarItemDisabledForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonBackgroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonGlyphBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonPressedGlyphBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonPressedForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonHoverBackgroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonPointerOverBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonHoverGlyphBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonPointerOverForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonGlyphBrush&lt;/td&gt;        &lt;td valign="top"&gt;BackButtonForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemPlaceholderRectBrush&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemPlaceholderBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlayBackgroundBrush&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlayBackgroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlayTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlayForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Style&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlaySecondaryTextBrush&lt;/td&gt;        &lt;td valign="top"&gt;ListViewItemOverlaySecondaryForegroundThemeBrush&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Method&lt;/td&gt;        &lt;td valign="top"&gt;this.Dispatcher.InvokeAsync(&lt;/td&gt;        &lt;td valign="top"&gt;this.Dispatcher.RunAsync&lt;/td&gt;        &lt;td valign="top"&gt;can use the returned IAsyncAction object to set a completion routine to get the completion status.&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;Event&lt;/td&gt;        &lt;td valign="top"&gt;ApplicationView.GetForCurrentView().ViewStateChanged += ViewStateChanged&lt;/td&gt;        &lt;td valign="top"&gt;Window.Current.SizeChanged += WindowSizeChanged;&lt;/td&gt;        &lt;td valign="top"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1110620" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4+RC/default.aspx">.NET 4 RC</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Convert VS 11 Beta Metro Projects To VS 2012 RC</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/03/convert-vs-11-beta-metro-projects-to-vs-2012-rc.aspx</link><pubDate>Sun, 03 Jun 2012 16:16:55 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1110588</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1110588</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/06/03/convert-vs-11-beta-metro-projects-to-vs-2012-rc.aspx#comments</comments><description>&lt;p&gt;Over the last months I’ve worked a lot with Windows 8 Metro applications, from Consumer Preview to Preview 2 and now to RC. &lt;/p&gt;  &lt;p&gt;When working on Beta versions you know that you have to upgrade your app when RC or RTM versions will published, and sometime those upgrades can take a while…&lt;/p&gt;  &lt;p&gt;So this is the first part of upgrading your &lt;strong&gt;Project &lt;/strong&gt;from Visual Studio 11 Beta to Visual Studio 2012 RC, &lt;u&gt;&lt;strong&gt;in my next&lt;/strong&gt;&lt;/u&gt; &lt;u&gt;&lt;strong&gt;post I’ll talk&lt;/strong&gt;&lt;/u&gt; &lt;u&gt;&lt;strong&gt;about code Changes&lt;/strong&gt;&lt;/u&gt; from Beta to RC both for C# and JavaScript.&lt;/p&gt;  &lt;h3&gt;JavaScript&lt;/h3&gt;  &lt;p&gt;For JavaScript project this is pretty easy, just open the solution and change the WinRT version from 0.6 to 1.0.RC&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_52FE6D1B.png"&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.microsoft.co.il/blogs/shair/image_thumb_38BE03F7.png" width="237" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_23EC0B77.png"&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.microsoft.co.il/blogs/shair/image_thumb_13FCC6B3.png" width="541" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But if you have several projects you created in Consumer Preview you might want to go this way:&lt;/p&gt;  &lt;p&gt;I’ve download a “Find &amp;amp; Replace” tool (&lt;a href="http://www.divlocsoft.com/"&gt;&lt;strong&gt;DivlocSoft&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; - File Find and Replace Software) &lt;/strong&gt;allowing me to Search inside file content and replace – so you need to search for:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;SDKReference Include=&amp;quot;Microsoft.WinJS, Version=0.6&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and Replace with:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;SDKReference Include=&amp;quot;Microsoft.WinJS.1.0.RC, Version=1.0&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;same goes here, both Html and JavaScript files that have reference you should search for:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;//Microsoft.WinJS.0.6/&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and Replace with:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;//Microsoft.WinJS.1.0.RC/&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;C#&lt;/h3&gt;  &lt;p&gt;Nothing hard to do for converting the project to RC, this is because in C# projects a reference to the entire .Net Framework and Windows SDK are automatically included.&lt;/p&gt;  &lt;p&gt;This is just for upgrading the Project, for C# there is no chance your project will run, there is too many changes and I’ll talk about them in my next post.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1110588" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/RC/default.aspx">RC</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category></item><item><title>Window 8 JavaScript–Asynchronous Programming &amp; App Storage</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/07/window-8-javascript-asynchronous-programming-amp-app-storage.aspx</link><pubDate>Wed, 07 Mar 2012 12:33:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1028504</guid><dc:creator>shair</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1028504</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/07/window-8-javascript-asynchronous-programming-amp-app-storage.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/07/window-8-javascript-asynchronous-programming-amp-app-storage.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/07/window-8-javascript-asynchronous-programming-amp-app-storage.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In this post I’m going to talk about WinJS.xhr that makes an XMLHttpRequest as a Promise, and how to save and load images and from your local storage.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is a Promise?&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Promise&lt;/strong&gt; is a way for &lt;u&gt;Asynchronous Programming in JavaScript&lt;/u&gt;, Avoiding synchronous execution in single-threaded languages like JavaScript is necessary in order to create apps that are responsive and high performing. Windows Library for JavaScript provides a consistent and predictable mechanism called a Promise that simplifies asynchronous programming.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A promise implements a method for registering callbacks for state change notifications, named &lt;i&gt;&lt;strong&gt;&lt;u&gt;then&lt;/u&gt;&lt;/strong&gt;&lt;/i&gt;.&lt;/p&gt;  &lt;p&gt;Instead of writing a single get action that force your code to wait for response.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;var&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; result = myWebService.get(http:&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#006400"&gt;//www.contoso.com);&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font face="Verdana"&gt;Or if you think about writing more code like this:&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;myWebService.addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;#39;completed&amp;#39;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt;(result) &lt;br /&gt;                                              { &lt;span&gt;&lt;font color="#006400"&gt;/* do something */&lt;/font&gt;&lt;/span&gt;});&lt;br /&gt;myWebService.get(http:&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#006400"&gt;//www.contoso.com);&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;font face="Verdana"&gt;You should use WinJS Promise to create Asynchronous action using &lt;strong&gt;&lt;u&gt;then&lt;/u&gt;&lt;/strong&gt; method.&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;myWebService.get(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;http://www.contoso.com&amp;quot;&lt;/font&gt;&lt;/span&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .then(&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (result) { &lt;span&gt;&lt;font color="#006400"&gt;/* do something */&lt;/font&gt;&lt;/span&gt; },&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (error) { &lt;span&gt;&lt;font color="#006400"&gt;/* handle error */&lt;/font&gt;&lt;/span&gt; },&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (progress) { &lt;span&gt;&lt;font color="#006400"&gt;/* report progress */&lt;/font&gt;&lt;/span&gt; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; );&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;For this post I wrote a simple JavaScript Metro App that downloads web images and saves them to local storage and a gallery that display all images under App local storage.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2B30E479.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_474E76D9.png" width="757" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1028503/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Step 1: Create a new Windows 8 JavaScript Metro App&lt;/h3&gt;

&lt;p&gt;First create empty JavaScript project and add new js file called - &lt;strong&gt;imgDownloader&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will use this file to download and locate the local images.&lt;/p&gt;

&lt;h3&gt;Step 2: Asynchronous Image Download &lt;/h3&gt;

&lt;p&gt;We need to download the image asynchronously, then save the stream we get to a local file.&lt;/p&gt;

&lt;p&gt;The first thing is the folder location, Each application has three available folders under - Windows.Storage.ApplicationData.current - to save user data:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Local &lt;/li&gt;

  &lt;li&gt;Temp &lt;/li&gt;

  &lt;li&gt;Roaming &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now using WinJS.xhr we enter the image url and define the response type as “Blob”, again this is an Asynchronous method and we can use THEN in order to register a callback that will called when the request is finished.&lt;/p&gt;

&lt;p&gt;Once we get the result from Xhr we use the folder object to create new file with the name the user passed, again once the new file was created we open this file for editing and get the stream.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Code Flow:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;font size="2"&gt;Using Ajax get the image = WinJS.xhr({ url: imgUrl, responseType: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;blob&amp;quot;&lt;/font&gt;&lt;/span&gt; }).then &lt;/font&gt;&lt;/li&gt;

  &lt;li&gt;&lt;font size="2"&gt;After we received the image we create a new file = folder.createFileAsync(imgName,..).then &lt;/font&gt;&lt;/li&gt;

  &lt;li&gt;&lt;font size="2"&gt;Open our file for edit = file.openAsync(Windows.Storage.FileAccessMode.readWrite).then &lt;/font&gt;&lt;/li&gt;

  &lt;li&gt;&lt;font size="2"&gt;Copy the image content = copyAsync(blob.msDetachStream(), stream).then &lt;/font&gt;&lt;/li&gt;

  &lt;li&gt;&lt;span&gt;&lt;font color="#000000" size="2"&gt;Close stream = stream.flushAsync().then&lt;/font&gt;&lt;/span&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; download(imgUrl, imgName) {&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; WinJS.xhr({ url: imgUrl, responseType: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;blob&amp;quot;&lt;/font&gt;&lt;/span&gt; }).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; &lt;br /&gt;                                                            (result) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; blob = result.response;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; folder.createFileAsync(imgName, Windows.Storage.&lt;br /&gt;           CreationCollisionOption.replaceExisting).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (file){&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Open the returned file in order to copy the data&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; file.openAsync(Windows.Storage.FileAccessMode.readWrite).&lt;br /&gt;                                              then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (stream) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; Windows.Storage.Streams.RandomAccessStream.copyAsync&lt;br /&gt;                   (blob.msDetachStream(), stream).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Copy the stream from the blob to the File stream&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; stream.flushAsync().then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.close();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;}, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (e) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; msg = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.MessageDialog(e.message);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; msg.showAsync();&lt;br /&gt;});&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 3: Locate Local File&lt;/h3&gt;

&lt;p&gt;After the download has completed we want to locate the local file we just saved and return the file object, using the file object we can get the file type ,creation date and more.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Windows.Storage.ApplicationData.current.local.getFileAsync&lt;/strong&gt; (or Temp, Roaming&amp;quot;) , we can search for a specific file under that folder, if the file is found in the local folder we return the file, else return null. (File Not Found)&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; fileExists(fileName) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; folder.getFileAsync(fileName).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (file) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; file;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (err) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;&lt;font size="3"&gt;Step 4: Add imgDownloader Namespace&lt;/font&gt; &lt;/h3&gt;

&lt;p&gt;In order to call these methods from Default.js we need to add the namespace using the following methods:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;WinJS.Namespace.define(&lt;span&gt;&lt;font color="#800000"&gt;&amp;#39;imgDownloader&amp;#39;&lt;/font&gt;&lt;/span&gt;, {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; download: download,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; fileExists: fileExists&lt;br /&gt;});&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 5: Add page functionality&lt;/h3&gt;

&lt;p&gt;Now, when the user writes the image Uri and clicks the “Get Image” button we’ll call the getImage function.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;app.onactivated = &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (eventObject) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.&lt;br /&gt;                                                ActivationKind.launch) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#00008b"&gt;&lt;strong&gt;TODO: Initialize your application here.&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.processAll();&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#btnDownloadImg&amp;quot;&lt;/font&gt;&lt;/span&gt;).addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;click&amp;quot;&lt;br /&gt;      &lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; getImage();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; };&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;using querySelector we’ll take the Uri and File Name values, using the &lt;strong&gt;imgDownloader&lt;/strong&gt; namespace and call Download function using the user supplied values. Because the &lt;strong&gt;&lt;u&gt;download&lt;/u&gt;&lt;/strong&gt; function has a callback value we can use the &lt;strong&gt;&lt;u&gt;then&lt;/u&gt;&lt;/strong&gt; method. &lt;/p&gt;

&lt;p&gt;After the download operation has completed we call the &lt;strong&gt;fileExists&lt;/strong&gt; function to get the local file object.&lt;/p&gt;

&lt;p&gt;After getting the Image we demonstrate two options for displaying the image:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&amp;#160;&lt;strong&gt;ms-appdata://&lt;/strong&gt; protocol – Path To Local Folder &lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;URL.createObjectURL&lt;/strong&gt; – Converting the file to blob, you can choose to create permanent blob so you can use it again. &lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; getImage() {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; imgUrl = document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#txtUrl&amp;quot;&lt;/font&gt;&lt;/span&gt;).value;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; fileName = document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#txtFileName&amp;quot;&lt;/font&gt;&lt;/span&gt;).value;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; imgDownloader.download(imgUrl,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; fileName).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; imgDownloader.fileExists(fileName).then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (file) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#mainImg&amp;quot;&lt;/font&gt;&lt;/span&gt;).src = &lt;br /&gt;                                     URL.createObjectURL(file, &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// using the ms-appdata:// protocol.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#mainImg2&amp;quot;&lt;/font&gt;&lt;/span&gt;).src = &lt;br /&gt;                                    &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;ms-appdata:///Local/&amp;quot;&lt;/font&gt;&lt;/span&gt; + fileName;&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#filePath&amp;quot;&lt;/font&gt;&lt;/span&gt;).textContent = &lt;br /&gt;                                     &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Path: &amp;quot;&lt;/font&gt;&lt;/span&gt; + file.path;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#fileType&amp;quot;&lt;/font&gt;&lt;/span&gt;).textContent = &lt;br /&gt;                                     &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Display Type: &amp;quot;&lt;/font&gt;&lt;/span&gt; + file.displayType;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#dateCreated&amp;quot;&lt;/font&gt;&lt;/span&gt;).textContent = &lt;br /&gt;                                     &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Date Created: &amp;quot;&lt;/font&gt;&lt;/span&gt; + file.dateCreated;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; drawGallery();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (err) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; msg = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.MessageDialog&lt;br /&gt;                                                  (&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Picture Not Found&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; msg.showAsync();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;The last thing I want to do is locate all files under my local folder and display all image files.&lt;/p&gt;

&lt;p&gt;Again we’ll use Windows.Storage.ApplicationData.current.localFolder but now let’s call “&lt;strong&gt;getItemsAsync&lt;/strong&gt;” to get all files, then forEach over these items and make sure to handle only images, convert each file to a blob using createObjectURL and add the image to our gallery div.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; drawGallery() {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Windows.Storage.ApplicationData.current.localFolder.getItemsAsync().&lt;br /&gt;       then(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (items) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; div = document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#existingFiles&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; div.textContent =  &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; items.forEach(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (storageItem) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (storageItem.fileType === &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.png&amp;quot;&lt;/font&gt;&lt;/span&gt; || &lt;br /&gt;                storageItem.fileType === &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpg&amp;quot;&lt;/font&gt;&lt;/span&gt; || &lt;br /&gt;                storageItem.fileType === &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;.jpeg&amp;quot;&lt;/font&gt;&lt;/span&gt;) {&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; image = document.createElement(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;img&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; image.style.width = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;100px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; image.style.height = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;100px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; image.src = URL.createObjectURL(storageItem);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; image.alt = image.src;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; div.appendChild(image);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (e) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; msg = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; Windows.UI.Popups.MessageDialog(e);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; msg.showAsync();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; });&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1028503/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1028504" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>Windows 8 JavaScript – Pinch</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/05/windows-8-javascript-pinch.aspx</link><pubDate>Mon, 05 Mar 2012 15:55:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1026795</guid><dc:creator>shair</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1026795</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/05/windows-8-javascript-pinch.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;   &lt;div style="text-align:left;line-height:1em;padding-right:15px;font-family:arial, helvetica, sans-serif;float:left;font-size:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/05/windows-8-javascript-pinch.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;    &lt;div style="text-align:left;line-height:1em;padding-right:25px;font-family:arial, helvetica, sans-serif;float:left;font-size:14px;"&gt;&lt;script type="IN/Share"&gt;&lt;/script&gt;&lt;/div&gt;    &lt;div style="text-align:left;line-height:1em;font-family:arial, helvetica, sans-serif;float:left;font-size:14px;"&gt;&lt;iframe style="border-bottom:medium none;border-left:medium none;width:100px;height:21px;overflow:hidden;border-top:medium none;border-right:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/05/windows-8-javascript-pinch.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;    &lt;div style="text-align:left;line-height:1em;font-family:arial, helvetica, sans-serif;float:left;font-size:14px;"&gt;     &lt;div class="g-plusone"&gt;&lt;/div&gt;   &lt;/div&gt;    &lt;div&gt;     &lt;br /&gt;      &lt;br /&gt;&lt;/div&gt;    &lt;p&gt;Over the last posts I talked about basic features in Windows 8 Metro Apps in BLOCKED SCRIPT&lt;/p&gt;   &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx" target="_blank"&gt;     &lt;ul&gt;       &lt;li&gt;&lt;/li&gt;       &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx" target="_blank"&gt;Settings&lt;/a&gt; &lt;/ul&gt;      &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/02/windows-8-javascript-message-dialog.aspx" target="_blank"&gt;Message Dialog&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/04/windows-8-javascript-splash-screen.aspx" target="_blank"&gt;Splash Screen&lt;/a&gt; &lt;/a&gt;&lt;/li&gt;   &lt;/a&gt;&lt;/div&gt;  &lt;p&gt;The feature I’m going to show you now isn’t part of JavaScript Metro app and you need to write some code and use Metro Touch Event called – &lt;u&gt;&lt;strong&gt;MSPointerMove.&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The feature I’m going to simulate is Pinch -&lt;/p&gt;  &lt;p&gt;&lt;iframe height="349" src="http://www.youtube.com/embed/WAeC9E9h7xc?hl=en&amp;amp;fs=1" frameborder="0" width="425"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1026777/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this post I’ve created a Pinch functionality to increase and decrease zoom on specific item.&lt;/p&gt;  &lt;h3&gt;Step 1: Create JavaScript Metro Project&lt;/h3&gt;  &lt;p&gt;In the default.html page I’ve added a image (for our demo) and div element called output to display the touch output.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;body&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;output&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;style&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;text-align&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;center&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;vertical-align&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;middle&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;img&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;image&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;images/SelaLogo.png&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;style&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;zoom&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;; &lt;br /&gt;                        &lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;width&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;10%&lt;/span&gt;&lt;span&gt;; &lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;height&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;10%&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;/&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;body&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;Step 2: Register to Pointer Move Event&lt;/h3&gt;

&lt;p&gt;In the application activated event we get the image object from the UI and register to MSPointerMove event, this event will allow to receive Multi-touch pointers for more than one finger on the screen. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;var&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; img;&lt;br /&gt; &lt;br /&gt;app.onactivated = &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (eventObject) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.&lt;br /&gt;        ActivationKind.launch) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.processAll();&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; img = document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#image&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;MSPointerMove&amp;quot;&lt;/font&gt;&lt;/span&gt;, pointerMoveListener, &lt;br /&gt;                                                   &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;};&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 3: Distance Calculation Helpers&lt;/h3&gt;

&lt;p&gt;Now, before start handling the touch event I created a point class to obtain x, y, and the point id.&lt;/p&gt;

&lt;p&gt;beside that a simple math calculation to get the distance between two points.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Distance Formula:&lt;/b&gt; Given the two points (&lt;i&gt;x&lt;/i&gt;&lt;sub&gt;1&lt;/sub&gt;, &lt;i&gt;y&lt;/i&gt;&lt;sub&gt;1&lt;/sub&gt;) and (&lt;i&gt;x&lt;/i&gt;&lt;sub&gt;2&lt;/sub&gt;, &lt;i&gt;y&lt;/i&gt;&lt;sub&gt;2&lt;/sub&gt;), the distance between these points is given by the formula:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_7383B6B4.png"&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.microsoft.co.il/blogs/shair/image_thumb_5D4D9B62.png" width="197" height="61" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; point(x, y, id) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.id = id;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.x = x;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;this&lt;/font&gt;&lt;/span&gt;.y = y;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; distance;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; basePoint1, basePoint2;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; outID;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; calcDistance(point1, point2) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; x = Math.pow((point2.x - point1.x), 2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; y = Math.pow((point2.y - point1.y), 2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt; Math.ceil(Math.sqrt(x + y));&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 4: Calculate Distance Between Points&lt;/h3&gt;

&lt;p&gt;Now we ready to talk about the pointerMoveListener that gets the output from the MSPointerMove event, first we’ll use the getPointerList function to receive all recognize points on the screen, in my demo I want to handle only two points no less and no more.&lt;/p&gt;

&lt;p&gt;If basePoint1,2 are undefined we define those objects for the current output and calculate the current distance between those points.&lt;/p&gt;

&lt;p&gt;Once the event will raise again we call the cangeRatio method that will calculate the new distance between the points.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; pointerMoveListener(event) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; pointerList = event.getPointerList(event.pointerId);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (pointerList.length !== 2) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; clearTimeout(outID);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; outID = setTimeout(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; basePoint1 = basePoint2 = distance = undefined;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }, 100);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; currentPoint1 = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; point(pointerList[0].clientX, &lt;br /&gt;        pointerList[0].clientY, pointerList[0].pointerId);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; currentPoint2 = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; point(pointerList[1].clientX, &lt;br /&gt;        pointerList[1].clientY, pointerList[1].pointerId);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (basePoint1 === undefined || basePoint2 === undefined || &lt;br /&gt;        distance === undefined) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; basePoint1 = currentPoint1;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; basePoint2 = currentPoint2;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; distance = calcDistance(basePoint1, basePoint2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (basePoint1.id === currentPoint1.id &amp;amp;&amp;amp; basePoint2.id&lt;br /&gt;                           === currentPoint2.id ||&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; basePoint1.id === currentPoint2.id &amp;amp;&amp;amp; basePoint2.id &lt;br /&gt;                      === currentPoint1.id) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; changeRatio(currentPoint1, currentPoint2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;h3&gt;Step 5: Change Ratio&lt;/h3&gt;

&lt;p&gt;Finally we have two distances, we just need to subtract both to find the delta between the first and the seconds, using this value I’ll increase or decrease the zoom attribute of the picture. &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; changeRatio(p1, p2) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; delta = 0;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; Seconddistance = calcDistance(p1, p2);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; delta = (Seconddistance - distance) / 10;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#output&amp;quot;&lt;/font&gt;&lt;/span&gt;).textContent = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Point 1 - x: &amp;quot;&lt;/font&gt;&lt;/span&gt; + p1.x&lt;br /&gt;        + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot; y: &amp;quot;&lt;/font&gt;&lt;/span&gt; + p1.y + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot; - &amp;quot;&lt;/font&gt;&lt;/span&gt; + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Point 2 - x: &amp;quot;&lt;/font&gt;&lt;/span&gt; + p2.x + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot; y: &amp;quot;&lt;/font&gt;&lt;/span&gt; &lt;br /&gt;        + p2.y + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot; Delta: &amp;quot;&lt;/font&gt;&lt;/span&gt; + delta;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (delta &amp;lt; 0) &lt;span&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (delta &amp;gt; 10)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#image&amp;quot;&lt;/font&gt;&lt;/span&gt;).style.zoom = 10;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#image&amp;quot;&lt;/font&gt;&lt;/span&gt;).style.zoom = delta;&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1026777/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1026795" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Video/default.aspx">Video</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>Windows 8 JavaScript–Splash Screen</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/04/windows-8-javascript-splash-screen.aspx</link><pubDate>Sun, 04 Mar 2012 16:09:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1025780</guid><dc:creator>shair</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1025780</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/04/windows-8-javascript-splash-screen.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/04/windows-8-javascript-splash-screen.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/04/windows-8-javascript-splash-screen.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;When creating an Win 8 Metro App you define splash screen with a single image, what if you want to do more… For example show some animations, load your resources before the application loads and more.&lt;/p&gt;  &lt;p&gt;In this post I’ll show you how to create custom Splash Screen and control the load event so you know when the loading is over and your user can start using the application.&lt;/p&gt;  &lt;p&gt;In my demo I’ll display some canvas animation and a timer (from 10s) until going to the main page.&lt;/p&gt;  &lt;p&gt;&lt;iframe height="349" src="http://www.youtube.com/embed/F2-9BMFrb3g?hl=en&amp;amp;fs=1" frameborder="0" width="425"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1025799/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Step 1: Create Navigation Metro App (JavaScript)&lt;/h3&gt;  &lt;p&gt;Add the following files:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;css\splash.css &lt;/li&gt;    &lt;li&gt;html\splash.html &lt;/li&gt;    &lt;li&gt;js\splash.js &lt;/li&gt;    &lt;li&gt;js\shadebob.js &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Step 2: Define Startup Page&lt;/h3&gt;  &lt;p&gt;When you start your application the first thing the user will see is this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4D066706.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_728FE467.png" width="244" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are two ways to remove it before we can set our custom splash screen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4A110253.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_243ADBF0.png" width="717" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Because you can’t remove the splash image (it’s required), you can replace the image with your own empty image. &lt;/li&gt;    &lt;li&gt;The second option is to define the background color to white – this will show an white page with not clock. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After we remove the default splash image we want to define our Splash.html page as startup page as follow:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_45D704C1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_382448B9.png" width="715" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Step 3: Splash.html&lt;/h3&gt;  &lt;p&gt;Our splash page will contain a screen div and holder div.&lt;/p&gt;  &lt;p&gt;The Screen div will contain a canvas that will display the animations.&lt;/p&gt;  &lt;p&gt;The holder will contain the timer div that will display the remaining seconds from the timer.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;&amp;lt;!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt;&lt;span&gt;&lt;font color="#800000"&gt;DOCTYPE&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;html&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;html&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;meta&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;charset&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;Splash&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;title&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;&amp;lt;!-- WinJS references --&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;//Microsoft.WinJS.0.6/css/ui-dark.css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;//Microsoft.WinJS.0.6/js/base.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;//Microsoft.WinJS.0.6/js/ui.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/css/default.css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;link&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;href&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/css/splash.css&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;rel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/js/splash.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;src&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;/js/shadebob.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;script&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;head&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;body&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;onload&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;resize()&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;screen&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;style&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;display&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;none&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;canvas&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;shadebob&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;canvas&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;holder&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; This is my Custom Splash...&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;h1&lt;/font&gt;&lt;/span&gt;&amp;#160;&lt;span&gt;&lt;font color="#ff0000"&gt;id&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;timer&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;h1&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#800000"&gt;div&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;body&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#800000"&gt;html&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="font-size:12pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;h3&gt;Step 4: Splash.css&lt;/h3&gt;

&lt;p&gt;The first thing we want is to place our custom splash in the center of the screen, so I’ve defined our holder div to absolute position, I’ve also centered the timer div.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#800000"&gt;&lt;font style="font-size:12pt;"&gt;#body&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;position&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;absolute&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;top&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;0%&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;left&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;0%&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;height&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;100%&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;width&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;100%&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;margin&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;0px&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;padding&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;0px&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#800000"&gt;#holder&lt;/font&gt;&lt;/span&gt; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;position&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;absolute&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span&gt;&lt;font color="#800000"&gt;h1&lt;/font&gt;&lt;/span&gt; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;font-size&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;180px&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;font-weight&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;600&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span&gt;&lt;font color="#800000"&gt;#timer&lt;/font&gt;&lt;/span&gt; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#ff0000"&gt;text-align&lt;/font&gt;&lt;/span&gt;: &lt;span&gt;&lt;font color="#0000ff"&gt;center&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;}&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;

&lt;h3&gt;Step 5: Splash.js&lt;/h3&gt;

&lt;p&gt;Because we changed the startup page we now need to set the splash.js to start the application, this allows us to hook the onactivated event from he application.&lt;/p&gt;

&lt;p&gt;You can see the onactivated is fired you get the eventObject that has the splashScreen object inside detail.&lt;/p&gt;

&lt;p&gt;From the splash object we take the imageLocation to get the x,y width and height of the original splash screen, the reason for doing that is to set our canvas and timer display in the center exactly where the splash should be, you don’t have to do that you can also calculate based on the document width and height.&lt;/p&gt;

&lt;p&gt;After we obtain those values we set our holder div at the same position and size as the original splash screen, and we start the timer by calling setInterval to call countDown function.&lt;/p&gt;

&lt;p&gt;The countDown function reduce 1 from the waitFor object until is reached to 0 and then he will redirect the page to homePage.&lt;/p&gt;

&lt;p&gt;Now to the important part the dismissed event, as you can see I’ve register to the dismissed event from the splash screen so I can know when the splash has dismissed, in my demo this event is not relevant because my splash is dismissed the second I place the image on the screen but for you it can be loading event are something else.&lt;/p&gt;

&lt;p&gt;&lt;font style="font-size:12pt;"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;(&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;use strict&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; waitFor = 10;&lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; app = WinJS.Application;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#006400"&gt;// This function responds to all application activations.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;app.onactivated = &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (eventObject) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.Activation.&lt;br /&gt;                                    ActivationKind.launch) {&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Retrieve splash screen object&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; splash = eventObject.detail.splashScreen;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Retrieve the window coordinates of the splash screen image.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; coordinates = splash.imageLocation;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Position the extended splash screen image in the same location &lt;br /&gt;        // as the splash screen image.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt;&lt;/span&gt; holder = document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#holder&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; holder.style.left = coordinates.x + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; holder.style.top = coordinates.y + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; holder.style.height = coordinates.height + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; holder.style.width = coordinates.width + &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;px&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; countDown();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; setInterval(countDown, 1000);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Register an event handler to be executed when the splash screen&lt;br /&gt;        // has been dismissed.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; splash.addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;dismissed&amp;quot;&lt;/font&gt;&lt;/span&gt;, onSplashScreenDismissed, &lt;br /&gt;                                                                   &lt;span&gt;&lt;font color="#0000ff"&gt;false&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.processAll();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;};&lt;br /&gt; &lt;br /&gt;app.start();&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; countDown() {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; waitFor = waitFor - 1;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (waitFor &amp;lt;= 0) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; location.href = &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/html/homePage.html&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#timer&amp;quot;&lt;/font&gt;&lt;/span&gt;).innerHTML = waitFor;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; onSplashScreenDismissed() {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// Include code to be executed when the system has transitioned&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#006400"&gt;// from the splash screen to the application&amp;#39;s first view.&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;})();&lt;/font&gt;&lt;/pre&gt;
 &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1025799/download.aspx"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1025780" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>Windows 8 JavaScript – Settings</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx</link><pubDate>Thu, 01 Mar 2012 13:13:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1023457</guid><dc:creator>shair</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=1023457</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;WIDTH:100px;HEIGHT:21px;OVERFLOW:hidden;BORDER-TOP:medium none;BORDER-RIGHT:medium none;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2012/03/01/windows-8-javascript-settings.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:Arial, Helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;In my previous post I talked about &lt;a href="http://blogs.microsoft.co.il/blogs/shair/archive/2012/02/29/windows-8-javascript-metro-application-getting-started.aspx" target="_blank"&gt;Windows 8 JavaScript Metro App Basics&lt;/a&gt;, and some getting started with the new Metro Apps.&lt;/p&gt;  &lt;p&gt;In order to help you get inside Windows 8 Metro Apps I’ll start writing on specific features in Metro Apps, starting from &lt;u&gt;&lt;strong&gt;Settings.&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_292E26BB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" align="right" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2E30646A.png" width="208" height="302" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;As you build your Metro App you probably need to let the user to change some settings in the application, you don’t need to write any things special for that because Win8 comes with integrated Settings Pane allow you to add your own settings.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1023454/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a very simple task, just define your settings as Pages, for example:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Help Page &lt;/li&gt;    &lt;li&gt;About &lt;/li&gt;    &lt;li&gt;Dummy 1 &lt;/li&gt;    &lt;li&gt;etc… &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;(&lt;strong&gt;Remember&lt;/strong&gt; – Each page should have it’s own CSS and JS file, don’t be lazy!) &lt;/p&gt;  &lt;p&gt;before we can get started you need to build new JavaScript application, the second part is getting inside the &lt;strong&gt;default.js&lt;/strong&gt; file and register to &lt;strong&gt;onsettings&lt;/strong&gt; event:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;app.onactivated = &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (eventObject) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (eventObject.detail.kind === Windows.ApplicationModel.&lt;br /&gt;                             Activation.ActivationKind.launch) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.processAll();&lt;br /&gt;      // app.addEventListener(&amp;quot;settings&amp;quot;, function (e) { Load Settings });&lt;br /&gt;      // OR&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;      &lt;strong&gt;&lt;u&gt;app.onsettings =&lt;/u&gt;&lt;/strong&gt; &lt;u&gt;&lt;strong&gt;loadSettings&lt;/strong&gt;&lt;/u&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;};&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;I’ve created a new folder in my project called – “Settings”, inside I’ve create 2 pages – Help and About.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_339ED50E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_2487F634.png" width="202" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, you need to register those pages to the application onsettings event, and make sure to use the flyout control to populate those setting.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:12pt;"&gt;function&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:12pt;"&gt; loadSettings(e) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; e.detail.applicationcommands =&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Help&amp;quot;&lt;/font&gt;&lt;/span&gt;:&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; title: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Help&amp;quot;&lt;/font&gt;&lt;/span&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; href: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/Settings/Help.html&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;About&amp;quot;&lt;/font&gt;&lt;/span&gt;:&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; title: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;About Me&amp;quot;&lt;/font&gt;&lt;/span&gt;,&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; href: &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/Settings/About.html&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; };&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#0000ff"&gt;WinJS.UI.SettingsFlyout.populateSettings(e);&lt;/font&gt;&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;Now, how can I see my settings? There are three ways to see them:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;User perform a proper gesture to open the setting page. 
    &lt;br /&gt;&lt;/li&gt;

  &lt;li&gt;Call the Setting Pane using SettingsPane 
    &lt;br /&gt;&lt;em&gt;Windows.UI.ApplicationSettings.SettingsPane.show(); 
      &lt;br /&gt;&lt;/em&gt;&lt;/li&gt;

  &lt;li&gt;Call specific page using SettingsFlyout&amp;#160; (using id and path) 
    &lt;br /&gt;&lt;em&gt;WinJS.UI.SettingsFlyout.showSettings(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Help&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/Settings/Help.html&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;/em&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;pre class="code"&gt;&lt;font style="font-size:12pt;"&gt;document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#btnShowSettings&amp;quot;&lt;/font&gt;&lt;/span&gt;).addEventListener&lt;br /&gt;(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;click&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; (e) {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Windows.UI.ApplicationSettings.SettingsPane.show();&lt;br /&gt;});&lt;br /&gt; &lt;br /&gt;document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#btnHelp&amp;quot;&lt;/font&gt;&lt;/span&gt;).addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;click&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.SettingsFlyout.showSettings(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;Help&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/Settings/Help.html&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;});&lt;br /&gt; &lt;br /&gt;document.querySelector(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;#btnAbout&amp;quot;&lt;/font&gt;&lt;/span&gt;).addEventListener(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;click&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#0000ff"&gt;function&lt;/font&gt;&lt;/span&gt; () {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WinJS.UI.SettingsFlyout.showSettings(&lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;About&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#800000"&gt;&amp;quot;/Settings/About.html&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;});&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_7B9CE12A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_6084121C.png" width="752" height="565" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/1023454/download.aspx" target="_blank"&gt;Download Demo Project&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1023457" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/JavaScript/default.aspx">JavaScript</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro/default.aspx">Metro</category></item><item><title>My First Metro Application – Metro Puzzle</title><link>http://blogs.microsoft.co.il/blogs/shair/archive/2011/10/01/my-first-metro-application-metro-puzzle.aspx</link><pubDate>Sat, 01 Oct 2011 07:23:00 GMT</pubDate><guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:907451</guid><dc:creator>shair</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.microsoft.co.il/blogs/shair/rsscomments.aspx?PostID=907451</wfw:commentRss><comments>http://blogs.microsoft.co.il/blogs/shair/archive/2011/10/01/my-first-metro-application-metro-puzzle.aspx#comments</comments><description>&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:15px;FONT-FAMILY:arial, helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;a class="twitter-share-button" href="http://twitter.com/share?url=http://blogs.microsoft.co.il/blogs/shair/archive/2011/10/01/my-first-metro-application-metro-puzzle.aspx"&gt;Tweet&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;PADDING-RIGHT:25px;FONT-FAMILY:arial, helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;script type="IN/Share"&gt;&lt;/script&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:arial, helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;&lt;iframe style="WIDTH:100px;HEIGHT:21px;" src="http://www.facebook.com/plugins/like.php?href=http://blogs.microsoft.co.il/blogs/shair/archive/2011/10/01/my-first-metro-application-metro-puzzle.aspx&amp;amp;send=false&amp;amp;layout=button_count&amp;amp;width=450&amp;amp;show_faces=false&amp;amp;action=like&amp;amp;colorscheme=light&amp;amp;font=segoe+ui&amp;amp;height=21&amp;amp;appId=184186808308137" scrolling="no" frameborder="0" style="border:none;overflow:hidden;width:450px;height:21px;"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="share-buttons"&gt;
&lt;div style="TEXT-ALIGN:left;LINE-HEIGHT:1em;FONT-FAMILY:arial, helvetica, sans-serif;FLOAT:left;FONT-SIZE:14px;"&gt;
&lt;div class="g-plusone"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="share-buttons"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Last week me and other 20 guys from Sela Group were in the Build Conference where we first saw the new Windows 8 operation system and many cool things coming from Microsoft in the new release.&lt;/p&gt;
&lt;p&gt;I have much to say about new things regarding ALM, Metro but as always I prefer to start with building something with the new technology instead of talking about it….&lt;/p&gt;
&lt;p&gt;So now I’ll talk about my first Metro Application for Windows 8 called – &lt;strong&gt;&lt;u&gt;Metro Puzzle&lt;/u&gt;&lt;/strong&gt; based on Puzzle 15 also called the &lt;a href="http://en.wikipedia.org/wiki/N-puzzle" target="_blank"&gt;N-Puzzle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_6952FB04.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;MARGIN:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_4A6C6159.png" width="212" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Step 1: Prepare your environment&lt;/h3&gt;
&lt;p&gt;To Get started with Metro Applications you need Windows 8 Developer Preview installed with Developer Tools – &lt;a href="http://msdn.microsoft.com/en-us/windows/apps/br229516" target="_blank"&gt;Download Here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Windows Developer Preview works great on the same hardware that powers Windows Vista and Windows 7:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 gigahertz (GHz) or faster 32-bit (x86) or 64-bit (x64) processor &lt;/li&gt;
&lt;li&gt;1 gigabyte (GB) RAM (32-bit) or 2 GB RAM (64-bit) &lt;/li&gt;
&lt;li&gt;16 GB available hard disk space (32-bit) or 20 GB (64-bit) &lt;/li&gt;
&lt;li&gt;DirectX 9 graphics device with WDDM 1.0 or higher driver &lt;/li&gt;
&lt;li&gt;Taking advantage of touch input requires a screen that supports multi-touch &lt;/li&gt;
&lt;li&gt;To run Metro style Apps, you need a screen resolution of 1024 X 768 or greater &lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Step 2: Create Project&lt;/h3&gt;
&lt;p&gt;With the new Developer Tools you’ll be able to create Windows Metro Style applications in C#, Visual Basic, C++ and JavaScript.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_530CB9E5.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_22498C6D.png" width="736" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are very cool templates for getting started with Metro application, Grid and Split but from my puzzle I’ve created new Application Project.&lt;/p&gt;
&lt;h3&gt;Step 3: Add Metro Application Bar&lt;/h3&gt;
&lt;p&gt;Because Windows 8 should support Touch systems Microsoft create the ApplicationBar object to allow users without Mouse to perform Right Click operation just by sliding the finger from the bottom of the screen up.&lt;/p&gt;
&lt;p&gt;Of course if you do working with Mouse you can just right click and the application bar will appear.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_2E9763FC.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_11BDA34D.png" width="749" height="597" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;So How?&lt;/h4&gt;
&lt;p&gt;Just add the ApplicationBar control just before the end of the XAML file and make sure the ApplicationBar height is 88 (Metro Standard).&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;ApplicationBar&lt;/span&gt;&lt;span&gt; Grid.ColumnSpan&lt;/span&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;9&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;Height&lt;/span&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;88&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Grid.Row&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;9&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;span&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;                VerticalAlignment&lt;/span&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;Bottom&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;StackPanel&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Orientation&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;Horizontal&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;Exit&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Style&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;{&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;StaticResource&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; BackButtonStyle&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff0000"&gt; x&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;btnBack&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;btnBack_Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt; /&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;Button&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Content&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;New Game&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; &lt;br /&gt;                Style&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;=&amp;quot;{&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;StaticResource&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; RefreshButtonStyle&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#ff0000"&gt; x&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;:&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;Name&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;btnnewGame&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt; Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;btnnewGame_Click&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;quot;&lt;/span&gt;&lt;span&gt;/&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;StackPanel&lt;/font&gt;&lt;/span&gt;&lt;font color="#0000ff"&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;ApplicationBar&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span&gt;&lt;font style="FONT-SIZE:12pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BORDER-BOTTOM-STYLE:none;PADDING-BOTTOM:0px;LINE-HEIGHT:normal;BACKGROUND-COLOR:transparent;BORDER-LEFT-STYLE:none;PADDING-LEFT:0px;PADDING-RIGHT:0px;BORDER-TOP-STYLE:none;BORDER-RIGHT-STYLE:none;PADDING-TOP:0px;" class="code"&gt;&lt;span&gt;&lt;font color="#0000ff" size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h3&gt;Step 4: Add Toast&lt;/h3&gt;
&lt;p&gt;Toast is the way to notify your user about something, instead of using the annoying Message Box you now Toast the user.&lt;/p&gt;
&lt;p&gt;The toast will appear on the right bottom and will not prevent from the user to continue working, the toast will disappear after couple of seconds.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_4B9CC06C.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_22A18596.png" width="755" height="599" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Toast API have couple of default templates as you can see from the enum below.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;public&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#0000ff"&gt;enum&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;ToastTemplateType&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastImageAndText01 = 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastImageAndText02 = 1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastImageAndText03 = 2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastImageAndText04 = 3,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastSmallImageAndText01 = 4,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastSmallImageAndText02 = 5,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastSmallImageAndText03 = 6,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastSmallImageAndText04 = 7,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastText01 = 8,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastText02 = 9,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastText03 = 10,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ToastText04 = 11,&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;Before you can call the Toast from your code you need to make sure the “Toast Capable” is set to Yes in your “Package.appxmanifest” file.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_5C80A2B5.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_4499BB8F.png" width="739" height="498" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The below code define a Toast template with Image and Text.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt; DisplayToastWithImage()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// GetTemplateContent returns a Windows.Data.Xml.Dom.XmlDocument &lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// object containing the toast XML&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;XmlDocument&lt;/font&gt;&lt;/span&gt; toastXml = &lt;span&gt;&lt;font color="#4f81bd"&gt;ToastNotificationManager&lt;/font&gt;&lt;/span&gt;.&lt;br /&gt;           GetTemplateContent(&lt;span&gt;&lt;font color="#4f81bd"&gt;ToastTemplateType&lt;/font&gt;&lt;/span&gt;.ToastImageAndText01);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// You can use the methods from the XML document to specify all of the&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// required parameters for the toast&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;XmlNodeList&lt;/font&gt;&lt;/span&gt; imageElements = toastXml.&lt;span&gt;&lt;font color="#000000"&gt;GetElementsByTagName&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;image&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;XmlElement&lt;/font&gt;&lt;/span&gt; imageElement = (&lt;span&gt;&lt;font color="#4f81bd"&gt;XmlElement&lt;/font&gt;&lt;/span&gt;)imageElements.&lt;span&gt;&lt;font color="#000000"&gt;Item&lt;/font&gt;&lt;/span&gt;(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageElement.&lt;span&gt;&lt;font color="#000000"&gt;SetAttribute&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;src&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;package://images\\Winner.png&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageElement.&lt;span&gt;&lt;font color="#000000"&gt;SetAttribute&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;alt&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Placeholder image&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;XmlNodeList&lt;/font&gt;&lt;/span&gt; textElements = toastXml.&lt;span&gt;&lt;font color="#000000"&gt;GetElementsByTagName&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;text&amp;quot;&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;for&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#0000ff"&gt;uint&lt;/font&gt;&lt;/span&gt; i = 0; i &amp;lt; textElements.&lt;span&gt;&lt;font color="#000000"&gt;Length&lt;/font&gt;&lt;/span&gt;; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; textElements.&lt;span&gt;&lt;font color="#000000"&gt;Item&lt;/font&gt;&lt;/span&gt;(i).AppendChild&lt;br /&gt;             (toastXml.&lt;span&gt;&lt;font color="#000000"&gt;CreateTextNode&lt;/font&gt;&lt;/span&gt;(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Congratulations You Won&amp;quot;&lt;/font&gt;&lt;/span&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// Create a toast from the Xml, then create a ToastNotifier object &lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// to show the toast&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;ToastNotification&lt;/font&gt;&lt;/span&gt; toast = &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#4f81bd"&gt;ToastNotification&lt;/font&gt;&lt;/span&gt;(toastXml);&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// If you have other applications in your package, you can specify &lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#008000"&gt;// the AppId of the app to create a ToastNotifier for that application&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#4f81bd"&gt;ToastNotificationManager&lt;/font&gt;&lt;/span&gt;.CreateToastNotifier().Show(toast);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;
&lt;h3&gt;Step 5: Add Share Support&lt;/h3&gt;
&lt;p&gt;One of the coolest things in Metro Application is the Contracts API, the Contracts allow you to work with the shell and with other apps using the WinRT.&lt;/p&gt;
&lt;p&gt;For Example: if you want to select a local file, or Tweet something you just need to use the Contracts to send the other program the object you want to share.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_09C1ECEC.png"&gt;&lt;img style="BACKGROUND-IMAGE:none;BORDER-RIGHT-WIDTH:0px;PADDING-LEFT:0px;PADDING-RIGHT:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;PADDING-TOP:0px;" title="image" border="0" alt="image" src="http://blogs.microsoft.co.il/blogs/shair/image_thumb_27AFD513.png" width="698" height="557" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So first, create an instance of &lt;span&gt;&lt;font color="#2b91af"&gt;DataTransferManager&lt;/font&gt;&lt;/span&gt; and implement the DataRequested event.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;private&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;DataTransferManager&lt;/font&gt;&lt;/span&gt; _dataTransferManager;&lt;br /&gt; &lt;br /&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;public&lt;/font&gt;&lt;/span&gt; MainPage()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _dataTransferManager = &lt;span&gt;&lt;font color="#2b91af"&gt;DataTransferManager&lt;/font&gt;&lt;/span&gt;.GetForCurrentView();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _dataTransferManager.DataRequested +=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;span&gt;&lt;font color="#2b91af"&gt;TypedEventHandler&lt;/font&gt;&lt;/span&gt;&amp;lt;&lt;span&gt;&lt;font color="#2b91af"&gt;DataTransferManager&lt;/font&gt;&lt;/span&gt;, &lt;span&gt;&lt;font color="#2b91af"&gt;DataRequestedEventArgs&lt;/font&gt;&lt;/span&gt;&amp;gt;&lt;br /&gt;        (_dataTransferManager_DataRequested);&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;In the DataRequested just define what you want to send to the Share Application, you can also send Bitmap and other stuff depends on your application. &lt;/p&gt;
&lt;p&gt;In the below example if the user want to share and is still playing I’ll send the application download link, but if the user won the game I’ll send his score.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#0000ff"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;void&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt; _dataTransferManager_DataRequested(&lt;span&gt;&lt;font color="#2b91af"&gt;DataTransferManager&lt;/font&gt;&lt;/span&gt; sender, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#2b91af"&gt;DataRequestedEventArgs&lt;/font&gt;&lt;/span&gt; args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.&lt;span&gt;&lt;font color="#000000"&gt;Request&lt;/font&gt;&lt;/span&gt;.Data.Properties.Title = &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Metro Puzzle&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;if&lt;/font&gt;&lt;/span&gt; (&lt;span&gt;&lt;font color="#ff0000"&gt;_&lt;/font&gt;&lt;font color="#000000"&gt;timer&lt;/font&gt;&lt;/span&gt;.IsEnabled) &lt;span&gt;&lt;font color="#008000"&gt;// If the user didn&amp;#39;t finish the game &lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.&lt;span&gt;&lt;font color="#000000"&gt;Request&lt;/font&gt;&lt;/span&gt;.Data.Properties.Description = &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Share Metro Application&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.&lt;span&gt;&lt;font color="#000000"&gt;Request&lt;/font&gt;&lt;/span&gt;.Data.SetText(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Got Windows 8? You Should Download&amp;quot;&lt;/font&gt;&lt;/span&gt; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot; Metro Puzzle – &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot; &lt;/font&gt;&lt;/span&gt;+ &lt;font color="#4f81bd"&gt;Const&lt;/font&gt;.DownloadLink&lt;/font&gt;&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.&lt;span&gt;&lt;font color="#000000"&gt;Request&lt;/font&gt;&lt;/span&gt;.Data.Properties.Description = &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Share Win&amp;quot;&lt;/font&gt;&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; args.&lt;span&gt;&lt;font color="#000000"&gt;Request&lt;/font&gt;&lt;/span&gt;.Data.SetText(&lt;span&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;/span&gt;.Format(&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;I&amp;#39;ve just finish Metro &amp;quot;&lt;/font&gt;&lt;/span&gt;+&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;Puzzle in &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#3cb371"&gt;{0}&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt; moves in &lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#3cb371"&gt;{1}&lt;/font&gt;&lt;font color="#c0504d"&gt;, think you can beat me? {2}&lt;/font&gt;&lt;/span&gt;&lt;span&gt;&lt;font color="#a31515"&gt;&amp;quot;&lt;/font&gt;&lt;/span&gt;, &lt;br /&gt;            &lt;span&gt;&lt;font color="#000000"&gt;txtMoves&lt;/font&gt;&lt;/span&gt;.Text, &lt;span&gt;&lt;font color="#000000"&gt;txtTime&lt;/font&gt;&lt;/span&gt;.Text, &lt;font color="#4f81bd"&gt;Const&lt;/font&gt;.DownloadLink));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;You can also force the Share UI to appear on demand using the following method:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span&gt;&lt;font color="#2b91af"&gt;&lt;font style="FONT-SIZE:12pt;"&gt;DataTransferManager&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="FONT-SIZE:12pt;"&gt;.ShowShareUI();&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/files/folders/907449/download.aspx" target="_blank"&gt;Download Metro Puzzle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How To Deploy It:&lt;/p&gt;
&lt;p&gt;Open the solution in Visual Studio and Compile it, or click the Deploy.bat file.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/shair/image_20ECA5C3.png"&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.microsoft.co.il/blogs/shair/image_thumb_7216C753.png" width="753" height="391" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=907451" width="1" height="1"&gt;</description><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Development/default.aspx">Development</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/TECH/default.aspx">TECH</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/DEV/default.aspx">DEV</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Metro+Style/default.aspx">Metro Style</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/Visual+Studio+11/default.aspx">Visual Studio 11</category><category domain="http://blogs.microsoft.co.il/blogs/shair/archive/tags/.NET+4.5/default.aspx">.NET 4.5</category></item></channel></rss>