<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Devosaure</title><link>http://blogs.msdn.com/b/devosaure/</link><description /><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Création d’un package APPX Windows 8 via les APIs C++</title><link>http://blogs.msdn.com/b/devosaure/archive/2013/04/26/cr-233-ation-d-un-package-appx-windows-8-via-les-apis-c.aspx</link><pubDate>Fri, 26 Apr 2013 13:23:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10414227</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10414227</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2013/04/26/cr-233-ation-d-un-package-appx-windows-8-via-les-apis-c.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Dans mon précédant billet &lt;a href="http://blogs.msdn.com/b/devosaure/archive/2013/04/19/d-233-ploiement-d-une-application-windows-8-interface-moderne-en-entreprise.aspx"&gt;Déploiement d’une application Windows 8 (Interface Moderne) en entreprise&lt;/a&gt;, j’expliquais qu’il était possible de créer un Package de 3 manières différentes.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Via l’outil MAKEAPPX.EXE, via Visual Studio 2012, et enfin &lt;a href="http://msdn.microsoft.com/en-us/library/hh446671(v=vs.85).aspx"&gt;via des APIs C++.&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Dans ce billet, je vais me concentrer sur la création d’un package &lt;a href="http://msdn.microsoft.com/en-us/library/hh446671(v=vs.85).aspx"&gt;avec les APIs C++&lt;/a&gt; , afin de pouvoir “scripter” via des commandes &lt;strong&gt;Powershell&lt;/strong&gt; (sans passer par des outils du Kit de développement Windows 8 donc), la création du package.&lt;/font&gt;&lt;/p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;p&gt;&lt;font size="2"&gt;L’architecture de la solution se décline de la manière suivante : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="https://skydrive.live.com/?cid=9607F0BF305F86D2&amp;amp;id=9607F0BF305F86D2%21971"&gt;Télécharger la solution&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Une librairie C++/CLI&amp;#160; (&lt;strong&gt;PowerShellAppxPackage&lt;/strong&gt;), qui est une extension à Powershell une &lt;strong&gt;CmdLet&lt;/strong&gt; que je nomme &lt;strong&gt;New-AppxPackage&lt;/strong&gt;. Je ne rentre pas dans les détails de création d’une CmdLet ici, mais vous retrouverez les bases de création d’une CmdLet en C# en VB.NET ou en C++/CLI, sur mon article &lt;a href="http://msdn.microsoft.com/fr-fr/visualc/bb906067.aspx#5"&gt;Développer une extension à Powershell&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2989e9e6-9b4f-4c25-ba5e-8775a84b5169" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;#include&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;..&amp;#92;NativeAppxPackage&amp;#92;NativeAppxPackage.h&amp;quot;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;#include&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;lt;memory&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;#include&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;lt;msclr&amp;#92;marshal.h&amp;gt;&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System::Management::Automation;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System::Configuration::Install;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System::Configuration;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System::ComponentModel;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; msclr::interop;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; PowerShellAppxPackage {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    [Cmdlet(VerbsCommon::New,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;AppxPackage&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)]&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NewAppPackage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PSCmdlet&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        NewAppPackage()&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            _native=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NativeAppxPackage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (_native==&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                CheckAndThrowError(&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;S_FALSE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Could not instanciate the NativeAppxPackage class&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorCategory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;InvalidOperation&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);            &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            CheckAndThrowError(_native-&amp;gt;ComInitialize(),&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Could not instanciate COM&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorCategory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;InvalidOperation&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);            &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        ~NewAppPackage()&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (_native!=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;delete&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _native;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NativeAppxPackage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;* _native;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; CheckAndThrowError(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HRESULT&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;hr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;error&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorCategory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;category&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;errorId&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FAILED&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(hr))&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    System::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ exception=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;gcnew&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; System::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;error&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorRecord&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ record=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;gcnew&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorRecord&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(exception,&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;errorId&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;category&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    ThrowTerminatingError(record);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                }    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;protected&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ProcessRecord() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;marshal_context&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ctx;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppxProfile&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; appxProfile;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        appxProfile.OutPutAppxPackageFile= ctx.marshal_as&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LPCWSTR&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(_outPutAppxPackageFile);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        appxProfile.InputDirectory=ctx.marshal_as&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LPCWSTR&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(_inputDirectory);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        appxProfile.Hash=ctx.marshal_as&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LPCWSTR&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(_hash);&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        CheckAndThrowError(_native-&amp;gt;CreateAppxPackage(appxProfile),&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Creating Package Failed!&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ErrorCategory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;NotSpecified&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;2&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);                                                                        &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        WriteObject(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Create package succeeded!&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);        &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;: &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ _hash;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ _outPutAppxPackageFile;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ _inputDirectory;&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        [Parameter(Position=0)]&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ Hash&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() {&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _hash;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; set (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;) { _hash=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        [Parameter(Position=1)]&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ InputDirectory&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() {&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _inputDirectory;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; set (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;) { _inputDirectory=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        [Parameter(Position=2)]&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ OutPutAppxPackageFile&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() {&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _outPutAppxPackageFile;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; set (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;) { _outPutAppxPackageFile=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    };&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    [RunInstaller(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;true&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)]&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NewAppxPackageSnapIn&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PSSnapIn&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ Name&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;PowershellAppxPackage&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ Vendor&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Eric Verni&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ VendorResource&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;PowershellAppxPackage&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ Description&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;This CmdLet create an AppxPackage&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ DescriptionResource&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get() &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Check my blog http:///blogs.msdn.com//b/devosaure&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    };&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;En résumé, notre code CmdLet, possède deux classes&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;L’une &lt;strong&gt;NewAppPackage&lt;/strong&gt;, qui définie notre CmdLet. Elle dérive de &lt;strong&gt;PSCmdlet&lt;/strong&gt;, et surcharge la méthode &lt;strong&gt;ProcessRecord&lt;/strong&gt; qui sera appelée lors de l’exécution de la commande &lt;strong&gt;New-AppXPackage          &lt;br /&gt;&lt;/strong&gt;De plus elle expose 3 paramètres&lt;/font&gt;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Hash&lt;/strong&gt; pour l’algorithme de Hashage à utiliser&lt;/font&gt;&lt;/li&gt;      &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;InputDirectory&lt;/strong&gt;, qui sera le chemin d’accès aux fichiers de l’application à packager&lt;/font&gt;&lt;/li&gt;      &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;OutPutAppxPackageFile&lt;/strong&gt;, Nom du fichier Appx.&lt;/font&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;font size="2"&gt;La seconde classe &lt;strong&gt;NewAppxPackageSnapin&lt;/strong&gt; qui dérive de la classe &lt;strong&gt;PSSnapin&lt;/strong&gt;, permettra d’enregistrer la commande. Cette classe expose entre autre la propriété &lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;Name&lt;/strong&gt; qui est à utiliser lors de l’enregistrement du Snapin. (Dans notre exemple le nom c’est &lt;strong&gt;PowershellAppxPackage)&lt;/strong&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Une librairie .LIB en ISO C++ (&lt;strong&gt;NativeAppxPackage&lt;/strong&gt;), qui utilise les APIs de création de package et qui sera liée statiquement à notre librairie Powershell.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour cette librairie, je suis partie de l’exemple &lt;a href="http://msdn.microsoft.com/en-us/library/hh446616(VS.85).aspx"&gt;How to create an app package&lt;/a&gt;,&amp;#160; que j’ai légèrement modifié, pour parcourir de manière dynamique la liste des fichiers et des répertoires à incorporer dans&amp;#160; le package. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;En résumé, p&lt;/font&gt;&lt;font size="2"&gt;our créer un package il faut : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;- &lt;strong&gt;Créer une fabrique de package &lt;em&gt;IAppxFactory&lt;/em&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:94bdb69b-bc48-4aa9-9c2e-2831ae4e17db" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CComPtr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IAppxFactory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; PackageFactory;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    hr=PackageFactory.CoCreateInstance(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;__uuidof&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AppxFactory&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;),&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;CLSCTX_INPROC_SERVER&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;-&lt;strong&gt;Créer le PackageWriter via la fabrique&lt;/strong&gt; &lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f446ba99-74d2-4afd-9864-97b9008995e2" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div style="background-color: #ffffff; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CComPtr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IAppxPackageWriter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; PackageWriter;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CComPtr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IStream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; OutPutStream;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;APPX_PACKAGE_SETTINGS&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; PackageSettings={0};&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    hr=SHCreateStreamOnFileEx(&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;appxprofile&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.OutPutAppxPackageFile,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_CREATE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; | &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_WRITE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; | &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_SHARE_EXCLUSIVE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            0,    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;TRUE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,  &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;NULL&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,  &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &amp;amp;OutPutStream);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FAILED&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(hr))&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    }&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    PackageSettings.hashMethod=HashMethod;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    PackageSettings.forceZip32=&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;TRUE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    hr = PackageFactory-&amp;gt;CreatePackageWriter(&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                OutPutStream,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &amp;amp;PackageSettings,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &amp;amp;PackageWriter);&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font size="2"&gt;-&lt;strong&gt; Enfin ajouter les fichiers au PackageWriter via la méthode AddPayloadFile&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4812580d-780d-49b8-9dd1-840fd7768dd1" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px; white-space: nowrap"&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HRESULT&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr=&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;S_OK&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FileInfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ManifestInfo;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; VectorFileInfo=_vectorfiles.get();&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    std::for_each(VectorFileInfo-&amp;gt;begin(),VectorFileInfo-&amp;gt;end(),[&amp;amp;](&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FileInfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;fileinfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)-&amp;gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HRESULT&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;fileinfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.IsManifest()==&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HRESULT&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr=&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;S_OK&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//TODO: quit the loop&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CComPtr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IStream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; FileStream=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                hr = SHCreateStreamOnFileEx(&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;fileinfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.GetCurrentPath().c_str(),&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_READ&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; | &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_SHARE_EXCLUSIVE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                            0,      &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FALSE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,  &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                            &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;NULL&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,   &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                            &amp;amp;FileStream);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FAILED&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(hr))&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    }            &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//TODO: Get The Type of the file&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;hr=packagewriter-&amp;gt;AddPayloadFile(&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;fileinfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.GetFileName().c_str(),&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                                            L&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Text/html&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                                            &lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;APPX_COMPRESSION_OPTION_NORMAL&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                                            FileStream);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FAILED&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(hr))&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                    }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;            &lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;ManifestInfo=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;fileinfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        }&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    });&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CComPtr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IStream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; manifestStream = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    hr = SHCreateStreamOnFileEx(ManifestInfo.GetCurrentPath().c_str(),&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_READ&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; | &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;STGM_SHARE_EXCLUSIVE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                0,      &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;FALSE&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,  &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                &lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;NULL&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,   &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;                                &amp;amp;manifestStream);&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#6f008a"&gt;SUCCEEDED&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(hr))&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    {&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;        hr = &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;packagewriter&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Close(manifestStream);&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    }&lt;/span&gt;&lt;br&gt; &lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; hr;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Vous trouverez également dans la solution, une troisième librairie réservée aux tests (Cela permet d’éviter de repasser dans l’environnement Powershell pour tester la création du Package).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Une fois la solution compilée, il faut installer notre extension Powershell.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;1. Lancez Powershell en mode Administrateur&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;2. Utilisez l’utilitaire INSTALLUTIL.EXE, pour inscrire l’extension. (se trouve dans les répertoires      &lt;br /&gt;C:\Windows\Microsoft.NET\Framework64\v4.0.30319 ou C:\Windows\Microsoft.NET\Framework\v4.0.30319)&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;PS: &lt;strong&gt;Installutil.exe PowerShellAppxPackage.dll&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;3. Ensuite il faut enregistrer le snapin contenu dans notre extension      &lt;br /&gt;PS: &lt;strong&gt;Add-PssnapIn PowershellAppxPackage&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;4. Il est possible de vérifier sa présence      &lt;br /&gt;&lt;/font&gt;&lt;font size="2"&gt;PS: &lt;strong&gt;Get-PSSnapin&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : PowershellAppxPackage    &lt;br /&gt;PSVersion&amp;#160;&amp;#160; : 3.0     &lt;br /&gt; Description : This CmdLet create an AppxPackage&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;5. D’invoquer notre extension avec les bons paramètres&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;PS:&lt;strong&gt; New-AppxPackage -Hash shA256 -OutPutAppxPackageFile c:\temp\TestDeploiement.appx -InputDirectory c:\temp\manuel&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Create Package succeeded !&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;Note&lt;/strong&gt; : C:\temp\manuel doit contenir une arborescence valide, comme je le précise dans mon précédant billet&amp;#160; &lt;a href="http://blogs.msdn.com/b/devosaure/archive/2013/04/19/d-233-ploiement-d-une-application-windows-8-interface-moderne-en-entreprise.aspx"&gt;Déploiement d’une application Windows 8 (Interface Moderne) en entreprise&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="https://skydrive.live.com/?cid=9607F0BF305F86D2&amp;amp;id=9607F0BF305F86D2%21971"&gt;Télécharger la solution&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Dans un prochain article nous détaillerons la manière de signer ce package à l’aide d’API.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Eric Vernié&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10414227" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Powershell/">Powershell</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/D_E900_ploiement/">Déploiement</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/AppxPackage/">AppxPackage</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/AddPayloadFile/">AddPayloadFile</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/CmdLet/">CmdLet</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/IAppxFactory/">IAppxFactory</category></item><item><title>Déploiement d’une application Windows 8 (Interface Moderne) en entreprise</title><link>http://blogs.msdn.com/b/devosaure/archive/2013/04/19/d-233-ploiement-d-une-application-windows-8-interface-moderne-en-entreprise.aspx</link><pubDate>Fri, 19 Apr 2013 15:19:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10412600</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10412600</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2013/04/19/d-233-ploiement-d-une-application-windows-8-interface-moderne-en-entreprise.aspx#comments</comments><description>&lt;p&gt;Table des matières&lt;/p&gt;  &lt;p&gt;Etapes pour le déploiement d’une application.&lt;/p&gt;  &lt;p&gt;Création d’un package.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Création du package : Utilisation de MAKEAPPX.EXE.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Signature du package : Utilisation de SIGNTOOL.EXE, MAKECERT.EXE et PVK2PFX.EXE. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Déploiement du package. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Installation du certificat : Utilisation de CERTUTIL.EXE. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Déploiement du package via script Powershell &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;Activation des appareils avec une clé de sideloading. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Conclusion. &lt;/p&gt;  &lt;p&gt;Déploiement avec Windows Intune. (Future)&lt;/p&gt;  &lt;p&gt;Déploiement avec SCCM 2012 SP1. (Future)&lt;/p&gt;  &lt;p&gt;Ressources complémentaires : &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Windows 8 est désormais disponible depuis quelques mois, et c’est vrai que nous avons concentré pas mal d’efforts sur les applications grand publique installables à partir du &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/windows/apps/br229512"&gt;&lt;font size="2"&gt;Windows Store&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. Dans cet article, nous souhaitons approfondir les différentes étapes à suivre pour déployer &lt;b&gt;une application d’entreprise&lt;/b&gt; &lt;b&gt;sans passer par le Windows Store&lt;/b&gt;. Bien que la majorité des détails illustrés ici ne sont pas nécessaire à connaitre pour pouvoir déployer une application Windows 8, il nous semblait judicieux de vous en donner la teneur, afin que vous soyez à même de mieux comprendre ce que des logiciels d’administration tels que &lt;/font&gt;&lt;a href="http://www.microsoft.com/fr-fr/windows/windowsintune/pc-management.aspx"&gt;&lt;font size="2"&gt;Windows Intune&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, ou &lt;/font&gt;&lt;a href="http://www.microsoft.com/france/serveur-cloud/system-center/default.aspx"&gt;&lt;font size="2"&gt;SCCM 2012&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, ont besoin comme ressources et informations pour déployer correctement une application Windows 8. Enfin, si vous utilisez d’autres solutions logicielles, vous pourrez utiliser le modèle de script &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/visualc/bb906067.aspx"&gt;&lt;font size="2"&gt;Powershell&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; décrit dans cet article pour déployer vos applications.&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc354146657"&gt;Etapes pour le déploiement d’une application.&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour qu’un déploiement d’une application Windows 8 (Interface Moderne) se passe correctement, il faut suivre 3 étapes indispensables.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;1. Créer un &lt;b&gt;package&lt;/b&gt; qui contiendra les fichiers nécessaires au bon fonctionnement de l’application.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;2. Signer ce package avec un &lt;b&gt;certificat valide&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;3. &lt;b&gt;Préparer le poste cible&lt;/b&gt;, afin que l’application puisse se déployer correctement.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;o Déployer le certificat&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;o Déployer une licence pour les applications ou &lt;b&gt;&lt;a href="http://blogs.technet.com/b/wintunefr/archive/2013/02/26/windows-intune-et-sideloading.aspx"&gt;clé de sideloading&lt;/a&gt;&lt;/b&gt;. Comme nous le verrons par la suite, selon les cas, il sera nécessaire ou pas d’acquérir cette clé de sideloading.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Nous précisons interface moderne, par opposition à des applications Windows 8 de bureau, qui s’installent de manière traditionnelle et qui ne rentrent pas dans le cadre de cet article.&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc354146658"&gt;Création d’un package&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Comme indiqué dans la documentation &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx"&gt;&lt;font size="2"&gt;Packages et déploiement d’applications (applications du Windows Store)&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, un package, est un conteneur ayant l’extension &lt;b&gt;.appx&lt;/b&gt;, incluant les fichiers de l’application et les dépendances. Il est basé sur la &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/magazine/cc163372.aspx"&gt;&lt;font size="2"&gt;norme OPC&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, norme utilisé entre autre par les applications Office. Pour notre compréhension, nous avons seulement besoin de retenir que ce package n’est ni plus ni moins qu’un fichier &lt;b&gt;zippé&lt;/b&gt;.       &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;Note&lt;/strong&gt; : en le renommant avec extension .zip, vous avez accès directement à son contenu. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;     &lt;br /&gt;Pour créer un package, vous avez 3 solutions.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· En utilisant &lt;b&gt;des APIS C++&lt;/b&gt; dont vous trouverez la documentation &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hh446616(VS.85).aspx"&gt;&lt;font size="2"&gt;ici&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· En utilisant directement &lt;b&gt;Visual Studio 2012&lt;/b&gt;       &lt;br /&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/hh454036.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/hh454036.aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;      &lt;br /&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/hh975357.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/hh975357.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· En utilisant &lt;b&gt;des&lt;/b&gt; &lt;b&gt;outils du &lt;/b&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/windows/hardware/hh852363.aspx"&gt;&lt;font size="2"&gt;Kit de développement Windows 8&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note :&lt;/b&gt; Dans cet article nous détaillons les étapes nécessaires à la création et à la signature d’un package pour qu’il puisse s’installer correctement. Néanmoins, sachez qu’il n’est pas forcément nécessaire de le faire, car &lt;b&gt;Visual Studio 2012 peut créer et signer ce package automatiquement&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc354146659"&gt;Création du package : Utilisation de MAKEAPPX.EXE.&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;font size="2"&gt;On considère que vous avez déjà créé et compilé l’application. Vous devez donc vous retrouver avec une arborescence comme sur la figure suivante : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8244.img1_5F00_419C361D.png"&gt;&lt;img title="img1" style="display: inline; background-image: none;" border="0" alt="img1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/3365.img1_5F00_thumb_5F00_7F2C2497.png" width="300" height="271" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Néanmoins dans cette arborescence, il manque un élément qui décrit l’identité de l’application, l’OS sur lequel tourne l’application, les ressources de l’application, les capacités de l’application, ainsi que les dépendances de l’application. Cet élément, est le fichier manifeste &lt;b&gt;AppxManifest.xml &lt;/b&gt;qui est essentiel pour la création du package.&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:996dff9b-b74f-482e-9754-53a4278237d2" class="wlWriterSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;&lt;/div&gt;      &lt;div style="background: rgb(255, 255, 255); overflow: auto; max-height: 300px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;xml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;1.0&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;encoding&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;utf-8&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Identity&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;b5c68d7e-ad25-40ea-b70e-667e7fb08c4d&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Publisher&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;CN=ericv&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;1.0.0.0&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;ProcessorArchitecture&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;neutral&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Properties&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;DisplayName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;TestDeploiement&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;DisplayName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;PublisherDisplayName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;ericv&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;PublisherDisplayName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Logo&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;Assets\StoreLogo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Logo&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Properties&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Prerequisites&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;OSMinVersion&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;6.2.1&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;OSMinVersion&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;OSMaxVersionTested&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;6.2.1&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;OSMaxVersionTested&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Prerequisites&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Resources&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Resource&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Language&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;EN-US&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Resources&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Applications&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Application&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Id&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;App&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Executable&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement.exe&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;EntryPoint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement.App&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;VisualElements&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;DisplayName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Logo&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\Logo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;SmallLogo&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\SmallLogo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Description&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;ForegroundText&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;light&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;BackgroundColor&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;#464646&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;DefaultTile&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;ShowName&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;allLogos&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;SplashScreen&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Image&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\SplashScreen.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;VisualElements&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Application&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Applications&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Capabilities&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Capability&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;internetClient&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Capabilities&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Metadata&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TargetFrameworkMoniker&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;.NETCore,Version=v4.5&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;VisualStudio&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;11.0&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;OperatingSystem&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;6.2.9200.16384 (win8_rtm.120725-1247)&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Microsoft.Build.AppxPackage.dll&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;11.0.50727.1&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Microsoft.Windows.UI.Xaml.Build.Tasks.dll&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;11.0.50727.1&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Item&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;MakePri.exe&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Version&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;6.2.9200.16384 (win8_rtm.120725-1247)&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;build:Metadata&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Package&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt; &lt;font size="2"&gt;   &lt;br /&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Remarque&lt;/b&gt; : Nous reviendrons plus tard sur la propriété de &lt;b&gt;Publisher=&amp;quot;CN=ericv&amp;quot;&lt;/b&gt;, car elle aura son importance lors de la signature de l’application.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Vous pouvez construire manuellement ce fichier en suivant les instructions dans l’aide en ligne &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/br211476.aspx"&gt;&lt;font size="2"&gt;How to create a package manifest manually&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, néanmoins dans un 1&lt;sup&gt;er&lt;/sup&gt; temps il est plus judicieux de le récupérer à partir du répertoire &lt;b&gt;\bin\release&lt;/b&gt;. En effet, après compilation de l’application, Visual Studio 2012 le génère automatiquement. Copiez-le alors dans l’arborescence de votre projet, comme indiqué sur la figure suivante :&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;     &lt;br /&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;   &lt;p&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/5826.img2_5F00_081BB6D7.png"&gt;&lt;img title="img2" style="display: inline; background-image: none;" border="0" alt="img2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/2451.img2_5F00_thumb_5F00_2A07195B.png" width="267" height="290" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;font size="2"&gt;Pour créer un package de l’application, il faut utiliser l’outil &lt;strong&gt;MAKEAPPX.EXE&lt;/strong&gt; de la manière suivante : &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&amp;amp; '..\Program Files (x86)\Windows Kits\8.0\bin\x86\makeappx.exe' pack /v /h SHA256 /d &amp;quot;C:\temp\manuel&amp;quot; /p TestDeploiement.appx&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;Remarque&lt;/b&gt; : Nous utilisons dans cet article, des scripts &lt;b&gt;&lt;a href="http://technet.microsoft.com/fr-fr/scriptcenter/powershell.aspx"&gt;Powershell&lt;/a&gt;&lt;/b&gt; pour exécuter nos commandes. &lt;/p&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;pack&lt;/b&gt; : Permet de créer un package (par opposition à la commande &lt;b&gt;unpack&lt;/b&gt;, qui permet de dé zipper)&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;/v&lt;/b&gt; : affiche les messages (verbose)&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;/h &lt;/b&gt;: Créé un fichier Block Map (&lt;b&gt;AppxBlockMap.xml&lt;/b&gt;) qui contient un hash &lt;b&gt;SHA256&lt;/b&gt; de tous les fichiers contenus dans le répertoire. Le fait de hacher les fichiers, empêchera quiconque d’altérer le package. Ici nous utilisons SHA256, mais il possible d’utiliser d’autres algorithmes (SHA384, SHA512).       &lt;br /&gt;&lt;b&gt;Note&lt;/b&gt; : Retenez bien l’algorithme de hachage que vous utilisez, car il faudra le reprendre pour le certificat, ainsi que pour la signature du package.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;/d :&lt;/b&gt; Chemin d’accès l’arborescence des fichiers&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;/p &lt;/b&gt;: Non du fichier appx de destination.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Pour de plus amples informations sur les paramètres et l’utilisation de MAKEAPPX, reportez-vous à l’aide en ligne: &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/hh446767(v=vs.85).aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/hh446767(v=vs.85).aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Le fichier &lt;b&gt;TestDeploiement.appx, &lt;/b&gt;est créé et en le dé-zippant comme nous pouvons le voir sur la figure suivante :&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/4034.img3_5F00_44D33F67.png"&gt;&lt;img title="img3" style="display: inline; background-image: none;" border="0" alt="img3" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8231.img3_5F00_thumb_5F00_0D8CB82C.png" width="270" height="340" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;MAKEAPPX a créé un fichier &lt;b&gt;AppxBlockMap.xml&lt;/b&gt; qu’il a inclus dans le package. Ce fichier contient la liste des fichiers qui ont été hachés.&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:c178375c-e0e9-449c-ba95-af2cb115797d" class="wlWriterSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div style="background: rgb(255, 255, 255); overflow: auto; max-height: 500px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;BlockMap&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;xmlns&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;http://schemas.microsoft.com/appx/2010/blockmap&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;HashMethod&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;http://www.w3.org/2001/04/xmlenc#sha256&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\DarkGray.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;560&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;49&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;U4fpsAY9b4tSDh0bv0V0bXG/CNdjhP6wqQBd5Qa/nUI=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\LightGray.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;560&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;50&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;DV0Yg6Jx0cm9SpEe3WvEeOEpiKnTQPPNMdQ8rExT2cE=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\MediumGray.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;561&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;51&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;C8gMoc/xDtxoIJOG04Vw/EcxxvqtugqB54lCl3vsUco=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\Logo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;801&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;45&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;VL6ArkjkJC1WFwJI5zD/rGCigo0HJgoEjirA/WI4YjQ=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\SmallLogo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;329&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;50&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;NoVfu8bClyI81EmmfQL5yXbdPkMsmQW0/8avjx7sR6k=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\SplashScreen.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;2146&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;53&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Hbz7CYy7sz2pSm9MKPLegtlySyhUtVmaefln93bw/jY=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Assets\StoreLogo.png&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;429&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;50&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;3IJfy5T/YdOzk2jCfTEb33RzDl6pJERy5b/lEaEiS0M=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Common\StandardStyles.xaml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;119067&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;56&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;Q03txv1/VSMxbYtxUBObzX4ZBYb6zIAU1Cj8nCPvo7U=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;5206&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;91O3FnJf9yOWG5zuBHiJS/OewSKS80AAylVNBMWENbI=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;4383&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;App.xaml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;926&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;38&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;n+b5r2Rxv1vGwQ57fzziYTkGx9RhenbyCFAcrVFJMt8=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;370&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;GroupDetailPage.xaml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;7675&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;50&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;bhYCLR56sIQNyEv9K8BI3o/YK97VFVdMFxlRk1gb7Qc=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;1770&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;GroupedItemsPage.xaml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;9233&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;51&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;yO5Sa/SVI7Fqa9dgqDjkW2zy0JTNzaJJCiKURC/BPd8=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;1934&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ItemDetailPage.xaml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;10986&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;49&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;z5U+e+hHIGqsBOyYlVvFYLrO+Nk5URj9Dbiyylxn6oo=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;2216&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;DataModel\SampleDataSource.cs&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;30555&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;59&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;FtFQmlKIL4x+vTBuVUSBSAcZIlzs+bcgCBsDu9MjNiQ=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;3471&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement.pdb&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;118272&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;49&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;PQUVHs5sUJAUaw9cj290Zer4izUz7gZiM73Dwc9pieI=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;12884&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;1LzNNNR0EWMBPh4wLPD2371f5pHMDS9J70c/vO/ro6w=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;14084&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;TestDeploiement.exe&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;52736&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;49&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;js9b7xhjwvJq7EnEoSDLHGVHes2Of+8NIVVlOFmsxvE=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;21944&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;resources.pri&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;2608&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;43&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;H+N2TIRqlaCDzwWwmH/tYLu0nLQA201cAVsHvh0yOeQ=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;767&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Name&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;AppxManifest.xml&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;2116&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;LfhSize&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;46&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;Block&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Hash&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;aZ6ujWLP7cPC5HIaRkITZYJRyGaHyFqslmlt/g72j7Y=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(255, 0, 0);"&gt;Size&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;=&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;970&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;File&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;BlockMap&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc354146660"&gt;Signature du package : Utilisation de SIGNTOOL.EXE, MAKECERT.EXE et PVK2PFX.EXE&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;font size="2"&gt;Une fois le package créé, il faut le signer, deux cas de figure s’offrent à vous :&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· &lt;b&gt;Vous n’avez pas de certificat valide&lt;/b&gt;, dans ce cas il faudra créer un certificat auto signé à des &lt;b&gt;fins de tests&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· &lt;b&gt;Vous avez un certificat valide d’entreprise&lt;/b&gt;, cas que nous traiterons par la suite, car il faudra alors modifier la propriété &lt;b&gt;Publisher&lt;/b&gt; dans le fichier manifeste.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour notre démonstration à des fins de tests, nous allons créer un certificat auto-signé à l’aide de l’outil &lt;b&gt;MAKECERT.EXE.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Encore une fois cet outil n’est à utiliser qu’à &lt;b&gt;des fins de tests&lt;/b&gt;, dans une organisation digne de confiance, il vous faudra impérativement utiliser un certificat valide et non auto-signé.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&amp;amp; '..\Program Files (x86)\Windows Kits\8.0\bin\x86\makecert.exe' -a SHA256 -n CN=ericv /r /sv testDeploiement.pvk /h 0 /eku &amp;quot;1.3.6.1.5.5.7.3.3&amp;quot; /e &amp;quot;05/17/2013&amp;quot; TestDeploiement.cer&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;MAKECERT demande un mot de passe afin de protéger efficacement la clé privée. Pour notre exemple nous choisirons &amp;quot;TestDeploiement!&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0211.img4_5F00_043383A9.png"&gt;&lt;img title="img4" style="display: inline; background-image: none;" border="0" alt="img4" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6661.img4_5F00_thumb_5F00_5B2B755D.png" width="502" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;ré-utilisez le même mot de passe.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0218.img5_5F00_213C3271.png"&gt;&lt;img title="img5" style="display: inline; background-image: none;" border="0" alt="img5" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6574.img5_5F00_thumb_5F00_4A46D16D.png" width="436" height="275" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Plusieurs choses à noter :&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Il faut utiliser le même algorithme de hachage que celui utilisé pour la création du package &lt;b&gt;/a SHA256&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Il faut utiliser le même nom de &lt;b&gt;Publisher&lt;/b&gt; que celui indiqué dans le manifeste &lt;b&gt;–n CN=ericv&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Pour le paramètre &lt;b&gt;/eku&lt;/b&gt;, il faut utiliser au minimum la suite &lt;b&gt;1.3.6.1.5.5.7.3.3, &lt;/b&gt;qui indique que le certificat sera utilisé pour de la signature de code.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Il faut définir une date de validité du certificat &lt;b&gt;/e&lt;/b&gt;.       &lt;br /&gt;Pour ce dernier paramètre, évitez de mettre une date de validité trop longue.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Pour plus d’informations sur MAKECERT reportez-vous à l’aide en ligne. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/bfsktky3(v=VS.80).aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/bfsktky3(v=VS.80).aspx&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; et pour création d’un certificat auto signé c’est ici. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/desktop/jj835832(v=vs.85).aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/windows/desktop/jj835832(v=vs.85).aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Néanmoins, pour signer le package, le certificat seul ne suffit pas, il faut un fichier au format &lt;b&gt;.pfx&lt;/b&gt; (&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/hardware/ff549703(v=vs.85).aspx"&gt;&lt;font size="2"&gt;Personal Information Exchange&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;) qui contiendra les clés privée et publique. Pour créer ce fichier nous allons utiliser l’utilitaire &lt;b&gt;PVK2PFX&lt;/b&gt; qui prend en entrée le fichier &lt;b&gt;TestDeploiement.pvk&lt;/b&gt; et &lt;b&gt;TestDeploiement.cer&lt;/b&gt; que nous venons de créer, en précisant le même mot de passe à l’aide du paramètre &lt;b&gt;/pi&lt;/b&gt;, et en sortie le fichier &lt;b&gt;TestDeploiement.pfx.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff"&gt;&amp;amp; '..\Program Files (x86)\Windows Kits\8.0\bin\x86\pvk2pfx.exe' /pvk TestDeploiement.pvk /pi TestDeploiement! /spc TestDeploiement.cer /pfx TestDeploiement.pfx&lt;/font&gt; &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Enfin nous allons signer le package avec l’outil &lt;b&gt;SIGNTOOL &lt;/b&gt;qui prend en entrée le fichier &lt;b&gt;TestDeploiement.pfx&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&amp;amp; '..\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe' sign /a /v /fd SHA256 /f TestDeploiement.pfx /p TestDeploiement! TestDeploiement.appx&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;The following certificate was selected:&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Issued to: ericv&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Issued by: ericv&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Expires: Fri May 17 00:00:00 2013&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;SHA1 hash: 2394E7E30496BB2C06FE2A1BAC3DF8DEDDB2CCF8&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Done Adding Additional Store&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Successfully signed: TestDeploiement.appx&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Number of files successfully Signed: 1&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Number of warnings: 0&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;Number of errors: 0&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;A noter, que nous utilisons une nouvelle fois le même algorithme de hachage &lt;b&gt;SHA256&lt;/b&gt;, et que nous précisons encore une fois le mot de passe &lt;/font&gt;&lt;font size="2"&gt;&lt;b&gt;/p TestDeploiement!        &lt;br /&gt;&lt;/b&gt;D’autre part SIGNTOOL possède un autre paramètre &lt;b&gt;/u&lt;/b&gt; (non utilisé ici), et qui permet de spécifier l’utilisation avancée de la clé (eku). Par défaut eku est à Signature du code (1.3.6.1.5.5.7.3.3), nous n’avons donc pas besoin de le préciser dans la commande.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Si vous obtenez l’erreur suivante avec SIGNTOOL, vérifiez la date de validité de votre certificat.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000" size="2"&gt;&lt;strong&gt;signtool.exe : SignTool Error: No certificates were found that met all the given criteria.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000" size="2"&gt;&lt;strong&gt;Au caractère Ligne:8 : 1&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000" size="2"&gt;&lt;strong&gt;+ &amp;amp; '..\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe' sign /a /v /fd ...&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000" size="2"&gt;&lt;strong&gt;+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000" size="2"&gt;&lt;strong&gt;+ CategoryInfo : NotSpecified: (SignTool Error:...given criteria.:String) [], RemoteException&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;strong&gt;&lt;font color="#ff0000" size="2"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ff0000"&gt;&lt;strong&gt;+ FullyQualifiedErrorId : NativeCommandError&lt;/strong&gt;&lt;/font&gt; &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Pour de plus amples information sur SIGNTOOL, reportez-vous à la documentation en ligne.       &lt;br /&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/8s9b9yaz%28v=VS.80%29.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/8s9b9yaz%28v=VS.80%29.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;SIGNTOOL a ajouté le fichier &lt;b&gt;AppxSignature.p7x&lt;/b&gt; de signature numérique au package comme illustré sur la figure suivante : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/2451.img6_5F00_213EC322.png"&gt;&lt;img title="img6" style="display: inline; background-image: none;" border="0" alt="img6" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/7658.img6_5F00_thumb_5F00_5506B973.png" width="259" height="396" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note :&lt;/b&gt; Pour en savoir plus sur le contenu du package signé vous pouvez consulter l’aide en ligne. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Si vous avez déjà un certificat valide d’entreprise, il n’est bien évidement pas nécessaire de créer le certificat, et seule les étapes de création et de signature du package seront obligatoire. Mais vous devrez être attentif à bien indiquer dans le manifeste au niveau de la propriété &lt;b&gt;Publisher&lt;/b&gt;, la bonne chaine de caractères. &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Par exemple &lt;b&gt;Publisher&lt;/b&gt;=OID.0.9.120.167788.100.1.1=2536363, CN=MASOCIETE, OU=MASOCIETE. (Cette chaine provient de votre certificat, ici elle est bidon)       &lt;br /&gt;Si tel n’est pas le cas, lors de la signature vous obtiendrez une erreur du type &lt;b&gt;signtool error 0x8007000b&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note : ¨&lt;/b&gt;Pour déboguer cette erreur, il vous suffit d’aller voir dans le journal des évènements.       &lt;br /&gt;&lt;b&gt;Journaux des applications et des services\Microsoft\Windows\AppxPackagingOM&lt;/b&gt;\       &lt;br /&gt;l’erreur qui est générée. Elle devrait vous donner la bonne chaine du Publisher.       &lt;br /&gt;En règle générale, SIGNTOOL, logue toutes ces erreurs dans ce journal. Pour de plus amples informations sur la manière de résoudre des problèmes, reportez-vous à la section &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-gb/library/windows/apps/jj835836.aspx"&gt;&lt;font size="2"&gt;How to troubleshoot app package signature errors &lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Remarque&lt;/b&gt; : Si vous ne souhaitez pas manipuler les outils du SDK pour créer et signer le package de l’application avec votre certificat d’entreprise, vous pouvez utiliser directement Visual Studio 2012 en lui précisant le certificat à utiliser.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;1. En indiquant directement dans Visual Studio 2012, qu’il faut utiliser votre certificat.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6177.img7_5F00_799AD7A8.png"&gt;&lt;img title="img7" style="display: inline; background-image: none;" border="0" alt="img7" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8712.img7_5F00_thumb_5F00_744BF0F7.png" width="644" height="263" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;2. Puis créer le package et la signature automatiquement      &lt;br /&gt;&lt;/font&gt;&lt;b&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/4812.img8_5F00_661008B8.png"&gt;&lt;img title="img8" style="display: inline; background-image: none;" border="0" alt="img8" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/3022.img8_5F00_thumb_5F00_357C8B00.png" width="644" height="411" /&gt;&lt;/a&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h4&gt;&lt;a name="_Toc354146661"&gt;Déploiement du package&lt;/a&gt;&lt;/h4&gt;  &lt;p&gt;&lt;font size="2"&gt;Il existe 3 manières de déployer une application Windows 8.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Via script Powershell, comme nous le détaillerons ici&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Via Microsoft SCCM 2012 SP1&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Via Microsoft Windows Intune &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;·&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : En fait, il existe d’autres méthodes de déploiement de package via l’outil &lt;/font&gt;&lt;a href="http://technet.microsoft.com/fr-fr/library/dd744256(v=ws.10).aspx"&gt;&lt;font size="2"&gt;de gestion et maintenance des images de déploiement&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, ou même via &lt;/font&gt;&lt;a href="http://blogs.flexerasoftware.com/installtalk/2012/10/delivering-windows-8-apps-to-the-enterprisepart-2-by-debbie-urman-in-delivering-windows-8-apps-to-the-enterprisepart-1.html"&gt;&lt;font size="2"&gt;InstallShield&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, mais que nous n’aborderons pas dans cet article.&lt;/font&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc354146662"&gt;Installation du certificat : Utilisation de CERTUTIL.EXE&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;font size="2"&gt;Avant de déployer notre package, il faut installer le certificat. Soit vous utilisez un certificat d’entreprise, dans ce cas-là, il y a de fortes chances pour qu’il soit déjà installé sur votre poste d’entreprise via des stratégies de groupe mis en place par votre IT interne, soit l’installer à l’aide de l’outil &lt;b&gt;CERTUTIL.EXE&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;certutil -addstore trustedpeople .\TestDeploiement.cer      &lt;br /&gt;      &lt;br /&gt;trustedpeople &amp;quot;Personnes autorisées&amp;quot;       &lt;br /&gt;La signature correspond à la clé publiquet d       &lt;br /&gt;Le certificat &amp;quot;CN=ericv&amp;quot; a été ajouté au magasin.&lt;/font&gt;&lt;/p&gt; &lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff" size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff"&gt;CertUtil: -addstore La commande s’est terminée correctement.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour vérifier si le certificat est dans le bon magasin, lancez l’outil &lt;b&gt;CERTMGR.EXE&lt;/b&gt;, choisissez le &lt;b&gt;magasin Personnes autorisées&lt;/b&gt;, comme indiqué sur la figure suivante : &lt;/font&gt;&lt;b&gt;&lt;font size="2"&gt;       &lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0383.img9_5F00_297D2B7D.png"&gt;&lt;img title="img9" style="display: inline; background-image: none;" border="0" alt="img9" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/5657.img9_5F00_thumb_5F00_21F44CC1.png" width="644" height="294" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/b&gt;&lt;font size="2"&gt;On voit bien ici que le certificat auto signé, délivré à ericv par ericv, sa date d’expiration et l’eku (Enhanced Key usage), qui est bien sur &lt;b&gt;signature de code&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note&lt;/b&gt; : Pour de plus amples informations sur les certificats, reportez-vous à l’aide en ligne &lt;/font&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc700805.aspx"&gt;&lt;font size="2"&gt;http://technet.microsoft.com/en-us/library/cc700805.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc354146663"&gt;Déploiement du package via script Powershell&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour déployer l’application, nous utiliserons la commande Powershell &lt;b&gt;Add-AppxPackage&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#ffffff"&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);"&gt;Add-AppxPackage .\TestDeploiement.appx&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/4405.img10_5F00_7813D88B.png"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/1362.img10_5F00_0F41E3BB.png"&gt;&lt;img title="img10" style="display: inline; background-image: none;" border="0" alt="img10" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0383.img10_5F00_thumb_5F00_35A3C706.png" width="644" height="39" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Le déploiement est réussi, mais &lt;b&gt;la question essentielle&lt;/b&gt; qui se pose, est-ce que l’installation réussira sur toutes les configurations ?&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Cela dépend de certains facteurs que nous allons détailler maintenant.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Dans notre cas de figure, nous sommes&lt;b&gt; sur un poste du développeur&lt;/b&gt;, c’est-à-dire que Visual Studio 2012 est installé, et &lt;b&gt;particularité&lt;/b&gt;, pour développer des applications Windows 8 (Interface Moderne), il demande &lt;b&gt;une clé de licence développeur. &lt;/b&gt;Cette clé est obtenue en se connectant avec un &lt;/font&gt;&lt;a href="http://windows.microsoft.com/fr-FR/windows-live/sign-up-create-account-how"&gt;&lt;font size="2"&gt;Compte Microsoft&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. Comme illustré sur la figure suivante :&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8713.img11_5F00_17591010.png"&gt;&lt;img title="img11" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="img11" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/4571.img11_5F00_thumb_5F00_6DE4CECF.png" width="674" height="765" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6153.img12_5F00_725DE047.png"&gt;&lt;img title="img12" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="img12" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0602.img12_5F00_thumb_5F00_3B17590C.png" width="522" height="355" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;em&gt;Clé de licence développeur renouvelable tous les mois.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note &lt;/b&gt;: Le &lt;/font&gt;&lt;a href="http://windows.microsoft.com/fr-FR/windows-live/sign-up-create-account-how"&gt;&lt;font size="2"&gt;Compte Microsoft&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; qui n’est ni plus ni moins qu’un LIVE ID, que nous mentionnons plus haut &lt;b&gt;n’est pas le &lt;a href="http://blogs.msdn.com/b/eternalcoding/archive/2012/09/10/pas-224-pas-comment-d-233-ployer-une-application-sur-le-store-windows-8.aspx"&gt;compte développeur&lt;/a&gt;&lt;/b&gt; qui est nécessaire pour le déploiement via le Windows Store. Ce Compte Microsoft, est uniquement nécessaire pour développer des applications Windows 8 avec Visual Studio 2012, mais n’est pas nécessaire pour le déploiement d’une application d’entreprise. Il n’est à utiliser qu’a des fins de tests.      &lt;br /&gt;Pour résumé. Le Compte Microsoft est nécessaire pour développer des applications Windows 8 Interface Moderne, le Compte Développeur est nécessaire pour pouvoir publier des applications dans le Windows Store.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Le déploiement de l’application aboutit car la commande &lt;b&gt;Add-AppxPackage&lt;/b&gt; se base sur cette clé de licence développeur pour déployer l’application.       &lt;br /&gt;Si vous souhaitez tester votre déploiement sur d’autres postes &lt;strong&gt;qui ne possèderaient pas une licence développeur&lt;/strong&gt;, vous pouvez à l’aide de la commande &lt;strong&gt;Show-WindowsDeveloperLicenseRegistration, &lt;/strong&gt;en demander une et en entrant vos informations de compte Microsoft.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Remarque&lt;/b&gt; : Si vous avez créé le package avec Visual Studio 2012, comme nous l’avons déjà vu plus haut, Visual Studio créé également un script d’installation Powershell (&lt;b&gt;Add-AppDevPackage.ps1&lt;/b&gt;) que vous pouvez utiliser pour tester le déploiement de l’application sur d’autres postes. Si la licence développeur n’existe pas sur le poste cible, il vous la demandera automatiquement. D’ailleurs, en analysant ce script vous retrouverez certaines étapes de cet article. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Le script Add-AppDevPackage.ps1 : &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Vérifie si le package est bien signé. (Get-AuthenticodeSignature)&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Test la présence du certificat dans le répertoire courant et vérifie son format, sa date d’expiration et la signature de code pour l’eku.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Vérifie que le package a bien été signé avec ce certificat. (Get-PfxCertificate).&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Vérifie que le certificat développeur est bien présent (Get-WindowsDeveloperLicence), si non demande à l’utilisateur de l’obtenir (Show-windowsDeveloperLicenseRegistration)&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;· Enfin, installe le package (Add-appxPackage).      &lt;br /&gt;      &lt;br /&gt;Il existe d’autres commandes powershell que vous pouvez utiliser, pour tester et débuguer le déploiement d’un package.       &lt;br /&gt;Get-AppxLastError pour obtenir la liste des erreurs lors du déploiement       &lt;br /&gt;Get-AppxLog, pour obtenir le log du déploiement d’un package       &lt;br /&gt;Remove-AppxPackage, pour désinstaller un package&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;b&gt;Note : &lt;/b&gt;Vous pouvez utiliser l’outil&lt;b&gt; powershell_ise.exe, &lt;/b&gt;éditeur de script PowerShell pour écrire, déboguer ou exécuter des commandes Powershell.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8371.img13_5F00_1CCCA216.png"&gt;&lt;img title="img13" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="img13" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6131.img13_5F00_thumb_5F00_23160955.png" width="644" height="270" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Cette clé de licence développeur est à utiliser lorsque vous souhaitez, non pas tester le déploiement, mais tester si l’application fonctionne correctement sur tous types de configurations. Elle fausse totalement le déploiement de l’application en entreprise, il est donc judicieux de s’assurer qu’elle ne soit plus présente sur les postes cibles.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Sur notre poste de développement, nous allons donc la retirer à l’aide de la commande &lt;/font&gt;&lt;font size="2"&gt;&lt;b&gt;Unregister-WindowsDeveloperLicense.        &lt;br /&gt;&lt;/b&gt;      &lt;br /&gt;Notre poste se retrouve alors vierge de toute licence, néanmoins, il faut au préalable désinstaller l’ancienne installation de notre package, soit vous le faite manuellement, soit vous utilisez la commande suivante : &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff"&gt;Get-AppxPackage -name b5c68d7e-ad25-40ea-b70e-667e7fb08c4d | Remove-AppxPackage&lt;/font&gt; &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Ou le GUID correspond au nom de l’application que l’on retrouve dans le fichier manifeste à la propriété &lt;b&gt;Identity&lt;/b&gt;       &lt;br /&gt;&amp;lt;Identity Name=&amp;quot;b5c68d7e-ad25-40ea-b70e-667e7fb08c4d&amp;quot;…&lt;b&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Ensuite on relance le déploiement avec la commande Add-AppxPackage, &lt;b&gt;qui réussit&lt;/b&gt;, car notre poste dispose des caractéristiques suivantes : &lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font size="2"&gt;· C’est un poste &lt;b&gt;Windows 8 Entreprise&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;   &lt;font size="2"&gt;&lt;/font&gt;    &lt;li&gt;&lt;font size="2"&gt;· Il est inscrit dans &lt;b&gt;le domaine de l’entreprise&lt;/b&gt;&lt;/font&gt;&lt;/li&gt;   &lt;font size="2"&gt;&lt;/font&gt;    &lt;li&gt;&lt;font size="2"&gt;· La stratégie de groupe &lt;b&gt;Autoriser l’installation des applications approuvées&lt;/b&gt;, est activée, comme indiqué sur la figure suivante :&lt;/font&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/2018.img14_5F00_1BF95D8E.png"&gt;&lt;img title="img14" style="display: inline; background-image: none;" border="0" alt="img14" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/5657.img14_5F00_thumb_5F00_36C5839A.png" width="626" height="584" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="2"&gt;Ce dernier cas de figure est le plus simple, car le poste est inscrit et géré par l’entreprise. En effet, &lt;b&gt;Windows 8 Entreprise&lt;/b&gt; inscrit dans un domaine, possède des fonctionnalités internes qui permettent de déployer les applications sans obtenir de clé de sideloading.&lt;/font&gt;&lt;/p&gt; &lt;font size="2"&gt;&lt;/font&gt;  &lt;p&gt;&lt;a name="_Toc354146664"&gt;&lt;font size="2"&gt;Activation des appareils avec une clé de sideloading&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;      &lt;br /&gt;&lt;b&gt;Mais quand est-il lorsque le poste n’est pas un inscrit dans un domaine et que nos appareils n’utilisent pas Windows 8 Entreprise ?&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Si nous essayons de déployer notre package sur des appareils &lt;b&gt;Windows RT&lt;/b&gt;, &lt;b&gt;Windows 8 Pro&lt;/b&gt;, et &lt;b&gt;Windows 8 Entreprise&lt;/b&gt; &lt;b&gt;hors domaine&lt;/b&gt;, la commande &lt;b&gt;Add-AppxPackage&lt;/b&gt; retournera une erreur. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/2844.img15_5F00_187ACCA4.png"&gt;&lt;font size="2"&gt;&lt;img title="img15" style="display: inline; background-image: none;" border="0" alt="img15" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8371.img15_5F00_thumb_5F00_7F155A1A.png" width="701" height="169" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Le message est explicite&lt;b&gt;, il vous faut une licence valide&lt;/b&gt;, c’est-à-dire une clé de &lt;/font&gt;&lt;a href="http://technet.microsoft.com/en-us/library/hh852635.aspx"&gt;&lt;font size="2"&gt;Sideloading&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; pour activer vos appareils.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;L’obtention d’une telle clé est hors scope, néanmoins, je vous encourage à télécharger le document &lt;/font&gt;&lt;a href="http://download.microsoft.com/download/9/4/3/9439A928-A0D1-44C2-A099-26A59AE0543B/Windows_8_Licensing_Guide.pdf"&gt;&lt;font size="2"&gt;Volume Licensing Guide for Windows 8 and Windows RT&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; si vous souhaitez en savoir plus.      &lt;br /&gt;Pour obtenir des clés de SideLoading vous pouvez également allez à la section &lt;/font&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=264711"&gt;&lt;font size="2"&gt;Product Activation Key Information&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Une fois que vous avez en poche cette fameuse clé de sideloading, qui permet d’activer l’appareil et ceci pour toutes les applications Windows 8 (Interface Moderne) qui y seront déployées, il faut la déployer.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Pour c faire nous&amp;#160; allons utiliser l’outil &lt;/font&gt;&lt;font size="2"&gt;&lt;b&gt;SLMGR.EXE        &lt;br /&gt;&lt;/b&gt;      &lt;br /&gt;Une 1&lt;sup&gt;ere&lt;/sup&gt; fois avec le paramètre &lt;b&gt;/ipk&lt;/b&gt; avec la clé elle-même.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff"&gt;slmgr /ipk &amp;lt;Clé de licence&amp;gt;&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Une seconde fois avec le paramètre &lt;b&gt;/ato&lt;/b&gt; et un numéro d’identification unique qui sera toujours le même afin d‘activer la licence.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;font style="background-color: rgb(0, 0, 255);" color="#ffffff"&gt;slmgr /ato ec67814b-30e6-4a50-bf7b-d55daf729d1e&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Ensuite, vous pouvez déployer l’application normalement.&lt;/font&gt;&lt;/p&gt;  &lt;h5&gt;&lt;a name="_Toc354146665"&gt;Conclusion&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;font size="2"&gt;Comme vous pouvez le constater, il est possible de déployer des applications Windows 8 sans passer par le Windows Store, il suffit alors de créer un script Powershell adéquate et l’utiliser avec vos propres méthodes de déploiements.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Néanmoins, Microsoft propose des logiciels d’administration, tels que &lt;/font&gt;&lt;a href="http://www.microsoft.com/fr-fr/windows/windowsintune/pc-management.aspx"&gt;&lt;font size="2"&gt;Windows Intune&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, ou &lt;/font&gt;&lt;a href="http://www.microsoft.com/france/serveur-cloud/system-center/default.aspx"&gt;&lt;font size="2"&gt;SCCM 2012 SP1&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, qui vous aiderons : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· A déployer facilement vos packages d’applications, qu’elle que soit leur méthode de création, que ce soit à l’aide d’outils du Kit de développement Windows 8 comme nous venons le voir, ou tout simplement à l’aide de Visual Studio 2012.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· A mettre à disposition aux utilisateurs les applications, via un Store privé d’entreprise.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;En résumé, avant de déployer son application d’entreprise, il suffit de vérifier : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· Que le package est bien valide.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· Que le package est bien signé avec le bon certificat.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· Que le certificat est bien déployé sur les postes clients.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;· Que vous avez besoin ou pas de clés de sideloading.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Dans un prochain article, nous reviendrons sur Windows Intune et sur SCCM 2012 SP1.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Eric Vernié&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;&lt;a name="_Toc354146668"&gt;&lt;font size="2"&gt;Ressources complémentaires :&lt;/font&gt;&lt;/a&gt;&lt;/h3&gt;  &lt;p&gt;&lt;font size="2"&gt;Création de package &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh975356(v=vs.110).aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/windows/apps/hh975356(v=vs.110).aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Signature d’un package : &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/br230260.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/windows/apps/br230260.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Packages et déploiement d’application : &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/windows/apps/hh464929.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Empaquetage de votre application du Windows Store à l'aide de Visual Studio 2012&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/library/hh454036.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/library/hh454036.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Comment ajouter et supprimer des applications : &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/fr-fr/library/hh852635.aspx"&gt;&lt;font size="2"&gt;http://technet.microsoft.com/fr-fr/library/hh852635.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;How to troubleshoot app package signature errors : &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-gb/library/windows/apps/jj835836.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/en-gb/library/windows/apps/jj835836.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Windows Intune : &lt;/font&gt;&lt;a href="http://www.microsoft.com/fr-fr/windows/windowsintune/pc-management.aspx"&gt;&lt;font size="2"&gt;http://www.microsoft.com/fr-fr/windows/windowsintune/pc-management.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Introduction au développement PowerShell, Part I. &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/visualc/bb906067.aspx"&gt;&lt;font size="2"&gt;http://msdn.microsoft.com/fr-fr/visualc/bb906067.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://download.microsoft.com/download/9/4/3/9439A928-A0D1-44C2-A099-26A59AE0543B/Windows_8_Licensing_Guide.pdf"&gt;&lt;font size="2"&gt;Volume Licensing Guide for Windows 8 and Windows RT&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10412600" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Powershell/">Powershell</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Sideloading/">Sideloading</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/D_E900_ploiement/">Déploiement</category></item><item><title>Développer un composant WinRT en C++ : Part I</title><link>http://blogs.msdn.com/b/devosaure/archive/2013/03/26/d-233-velopper-un-composant-winrt-en-c-part-i.aspx</link><pubDate>Tue, 26 Mar 2013 13:13:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10405398</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10405398</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2013/03/26/d-233-velopper-un-composant-winrt-en-c-part-i.aspx#comments</comments><description>&lt;p&gt;Un composant WinRT, c'est un composant développé en C++, C# ou VB.NET et qui peut être ré-utilisé par une application Windows Store développée en Javascript, en C++, en VB.NET ou en C#.&lt;/p&gt;  &lt;p&gt;Pourquoi développer un composant WinRT en C++ ? &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Pour réutiliser de l'existant.      &lt;br /&gt;Vous avez depuis des années un composant, qui rempli sont rôle, que vous avez éprouvé, testé, et approuvé, pourquoi réinventer la roue ? &lt;/li&gt;    &lt;li&gt;Pour palier à des manques      &lt;br /&gt;La plate-forme WinRT a été conçue, pour être la plus légère qui soit. Il est donc possible qu'un certain nombre de &amp;quot;fonctionnalités&amp;quot; soient manquantes. &lt;/li&gt;    &lt;li&gt;Impossibilité technique, ou difficulté accrue dans un langage.      &lt;br /&gt;Si vous souhaitez manipuler des APIs du système qui sont difficile, voir même impossible à utiliser dans un langage. &lt;/li&gt;    &lt;li&gt;Performance      &lt;br /&gt;Désormais, développer une application Windows 8, c'est cibler des &amp;quot;appareils&amp;quot; qui n'ont pas forcement le même niveau de performances, que votre PC de développement.       &lt;br /&gt;Pas de SSD, moins de RAM, un processeur différent que le core I7-3770 à 3.4 GHz, comme les processeurs ARM par exemple (même si les prochaines générations de Tegra et Snapdragon qui arrivent, vont relever la barre.) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;   &lt;br /&gt;Pour développer un Composant WinRT en C++, vous avez à votre disposition deux modèles.     &lt;br /&gt;Le modèle pur Windows Store, c'est à dire en utilisant l'extension C++/CX du langage C++ du compilateur, qui permet de manipuler les types WinRT de la manière la plus simple qui soit.&lt;/p&gt;  &lt;p&gt;Pour en savoir plus sur le comment du pourquoi de C++/CX &lt;a href="http://blogs.msdn.com/b/vcblog/archive/2011/10/20/10228473.aspx"&gt;Inside the C++/CX Design&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ou le modèle &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/hh438466.aspx"&gt;Windows Runtime Library&lt;/a&gt;&lt;/strong&gt; (WRL)&lt;/p&gt;  &lt;p&gt;L’un ou l’autre des modèles&amp;#160; permettent de facilement écrire du code pour le Windows Runtime, mais avec WRL vous avez un accès plus bas niveau pour consommer des composants COM. &lt;/p&gt;  &lt;p&gt;D’ailleurs WRL étant inspiré par ATL il sera plus facile d’interagir entre les deux. Si vous souhaitez en savoir plus sur ce dernier je vous encourage à aller voir &lt;a href="http://msdn.microsoft.com/en-us/library/vstudio/hh438466.aspx"&gt;Windows Runtime C++ Template Library (WRL)&lt;/a&gt; sur MSDN.&lt;/p&gt;  &lt;p&gt;Si vous préférez ne pas manipuler C++/CX pour des raisons qui vous incombe, un Modèle Visual Studio de création d’un composant WRL est à votre disposition ici : &lt;a href="http://visualstudiogallery.msdn.microsoft.com/346e6fbc-6508-43c8-af7f-9a922bb57128"&gt;http://visualstudiogallery.msdn.microsoft.com/346e6fbc-6508-43c8-af7f-9a922bb57128&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Dans ces différents billets, pour illustrer le développement d'un composant WinRT en C++, j'ai utilisé pour ma part les extensions C++/CX, en conjonction avec une API Win32 pure et dure assez méconnue, Extensible Storage Engine (cf. article Wikipédia &lt;a title="http://en.wikipedia.org/wiki/Extensible_Storage_Engine" href="http://en.wikipedia.org/wiki/Extensible_Storage_Engine"&gt;http://en.wikipedia.org/wiki/Extensible_Storage_Engine&lt;/a&gt;) &lt;/p&gt;  &lt;p&gt;J’ai choisi cette API Win32 de base de données, au départ pour un projet interne et pouvoir créer un cache interne, qui bénéficie de toute l’infrastructure d’une base de données ISAM. Avec des indexes primaires, sur plusieurs colonnes, des champs multi-valués etc..&lt;/p&gt;  &lt;p&gt;Bien évidement, j’aurais pu utiliser SQLite qui est plus aboutit, mais comme ESE est disponible sur toutes les plate-formes (ARM, X86 et X64) c’était l’occasion de démontrer la manière de développer un composant WinRT compatible sur toutes ces plate-formes sans le moindre effort.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; : Le composant est une ébauche, et loin d’être aboutit à ce stade, tout n’est pas encore implémenté. Je l’utilise essentiellement pour de la consultation. L’API ESE étant très vaste, cela prendra sans doute un certain temps.&lt;/p&gt;  &lt;p&gt;Pour en savoir plus sur les APIs ESE (Jet Blue)&amp;#160; (&lt;a href="http://msdn.microsoft.com/en-US/library/windows/apps/br205753"&gt;http://msdn.microsoft.com/en-US/library/windows/apps/br205753&lt;/a&gt; )&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Développer un composant WinRT, (non graphique je précise), impose un certain nombre de règles, que nous allons détailler tout au long de ces différents billets.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;La frontière des langages (ABI) &lt;/li&gt;    &lt;li&gt;Les types commun, le boxing &lt;/li&gt;    &lt;li&gt;Les exceptions &lt;/li&gt;    &lt;li&gt;Les performances (astuce) i.e. StringReference, ArrayReference &lt;/li&gt;    &lt;li&gt;Asynchronisme &lt;/li&gt;    &lt;li&gt;Levée d'évènement et synchronisation de thread &lt;/li&gt;    &lt;li&gt;Ajouter de l’aide aux différentes APIs &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Création d’un composant WinRT en C++/CX&lt;/h2&gt;  &lt;ol&gt;   &lt;li&gt;Choisir le projet &lt;strong&gt;Visual C++ | Windows Store | Windows Runtime Component&lt;/strong&gt;       &lt;br /&gt;      &lt;br /&gt;      &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8d72324b-eb7f-4201-8b8f-d3bb387f1c49" class="wlWriterSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;       &lt;div class="le-pavsc-container"&gt;         &lt;div class="le-pavsc-titleblock"&gt;Classe Activable&lt;/div&gt;          &lt;div style="padding: 2px 5px; overflow: auto; max-height: 500px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; WindowsRuntimeComponent2&lt;/span&gt;             &lt;br /&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Class1&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;sealed&lt;/span&gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;:&lt;/span&gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;Class1();&lt;/span&gt;             &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;};&lt;/span&gt;             &lt;br /&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/div&gt;       &lt;/div&gt;     &lt;/div&gt;      &lt;br /&gt;Le modèle crée une classe dite “&lt;strong&gt;Activable&lt;/strong&gt;”:       &lt;ol&gt;       &lt;li&gt;C’est à dire que les autres langages, peuvent l’activer par leur opérateur &lt;strong&gt;new&lt;/strong&gt; (ou &lt;strong&gt;ref new&lt;/strong&gt; pour C++/CX). &lt;/li&gt;        &lt;li&gt;Plus précisément, c’est une référence à une classe, préfixée par le mot clé &lt;strong&gt;ref class,&lt;/strong&gt; qui indique au compilateur de créer toute la plomberie pour pouvoir l’activer.           &lt;br /&gt;Ne pas oublier que le type &lt;strong&gt;ref class Class1&lt;/strong&gt;, est une classe COM (Common Object Model) qui dérive de &lt;strong&gt;IInspectable&lt;/strong&gt;, qui dérive elle même de &lt;strong&gt;IUnknown, &lt;/strong&gt;mais que le compilateur nous cache. &lt;/li&gt;        &lt;li&gt;Pour que notre classe Class1, soit ”Activable” par d’autres langages, il faut un mécanisme neutre d’activation. Il faut passer par le modèle Fabrique de classe (Class Factory).          &lt;br /&gt;Cela tombe bien, car le compilateur, crée pour nous une autre classe (en règle générale il la nomme du style &lt;strong&gt;__Class1ActivationFactory&lt;/strong&gt; , qui implémente la méthode &lt;strong&gt;CreateFactory&lt;/strong&gt; () pour créer la fabrique et qui dérive de l’interface &lt;strong&gt;IActivationFactory&lt;/strong&gt; qui possède une méthode&lt;strong&gt; ActivateInstance(), &lt;/strong&gt;ceci afin que le Windows Runtime&amp;#160; active notre classe.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Imaginons que nous instancions notre objet en C#          &lt;br /&gt;&lt;strong&gt;WindowsRuntimeComponent1.Class1 c=new WindowsRuntimeComponent1.Class1&lt;/strong&gt;           &lt;p&gt;&amp;#160;&lt;/p&gt;       &lt;/li&gt;        &lt;ol&gt;         &lt;li&gt;Avant que le Constructeur de la classe soit appelé, Le CLR invoque l’API du système &lt;strong&gt;RoGetActivationFactory()&lt;/strong&gt;, en lui passant entre autre&amp;#160; le nom de la classe “WindowsRuntimeComponent2.Class1”, et un pointeur sur une interface &lt;strong&gt;IActivationFactory&lt;/strong&gt; &lt;/li&gt;          &lt;li&gt;Le runtime charge la DLL, et invoque sa méthode &lt;strong&gt;DllGetActivationFactory()&lt;/strong&gt; qui elle même invoque la méthode &lt;strong&gt;Microsoft::WRL::Details::GetActivationFactory().&lt;/strong&gt;&lt;/li&gt;          &lt;li&gt;&lt;strong&gt;GetActivationFactory&lt;/strong&gt;(), retrouve entre autre un pointeur sur la méthode &lt;strong&gt;CreateFactory&lt;/strong&gt;(), afin de créer la fabrique, c’est à dire obtenir une instance de la classe &lt;strong&gt;__Class1ActivationFactory. &lt;/strong&gt;&lt;/li&gt;          &lt;li&gt;A partir de l’instance de la classe __Class1ActivationFactory (qui dérive de IActivationFactory) le Windows Runtime, invoque la méthode &lt;strong&gt;ActivateInstance()&lt;/strong&gt; qui instancie cette fois-ci notre classe Class1.             &lt;br /&gt;Le constructeur de Class1() est invoqué, et le compteur de référence est incrémenté de 1.             &lt;br /&gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Pour une 2ieme instance de la classe la méthode &lt;strong&gt;ActivateInstance&lt;/strong&gt;() de l’interface &lt;strong&gt;IActivationFactory&lt;/strong&gt; est appelée directement, qui incrémente également le compteur de référence.             &lt;br /&gt;Si vous souhaitez à la compilation voir le code généré par le compilateur, vous pouvez ajoutez l’option : &lt;strong&gt;/d1ZWtokens&amp;#160; &lt;br /&gt;&lt;/strong&gt;Ces deux options, imprime l’arbre des méthodes pour Class1 et __Class1ActivationFactory             &lt;br /&gt;/d1reportSingleClassLayoutClass1             &lt;br /&gt;/d1reportSingleClassLayout__Class1ActivationFactory             &lt;br /&gt;Exemple pour la classe __Class1ActivationFactory, ou on observe bien qu’elle dérive de IActivationFactory             &lt;br /&gt;&lt;/li&gt;          &lt;p&gt;class __Class1ActivationFactory&amp;#160;&amp;#160;&amp;#160; size(16):            &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +---             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | +--- (base class IActivationFactory)             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | | +--- (base class Object)             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160; | | | {vfptr}             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | | +---             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | +---             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | +--- (base class Object)             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 4&amp;#160;&amp;#160;&amp;#160; | | {vfptr}             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | +---             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 8&amp;#160;&amp;#160;&amp;#160; | __abi_FTMWeakRefData __abi_reference_count             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; +---             &lt;br /&gt; 1&amp;gt;&amp;#160; &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::$vftable@IActivationFactory@:             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory_meta             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |&amp;#160; 0             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_QueryInterface             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_AddRef             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_Release             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 3&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_GetIids             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 4&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_GetRuntimeClassName             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 5&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_GetTrustLevel             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 6&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::__abi_Platform_Details_IActivationFactory____abi_ActivateInstance             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 7&amp;#160;&amp;#160;&amp;#160; | &amp;amp;__Class1ActivationFactory::ActivateInstance             &lt;br /&gt; 1&amp;gt;&amp;#160; &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::$vftable@Object@:             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; | -4             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 0&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_QueryInterface             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 1&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_AddRef             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_Release             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 3&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_GetIids             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 4&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_GetRuntimeClassName             &lt;br /&gt; 1&amp;gt;&amp;#160;&amp;#160; 5&amp;#160;&amp;#160;&amp;#160; | &amp;amp;thunk: this-=4; goto __Class1ActivationFactory::__abi_GetTrustLevel             &lt;br /&gt; 1&amp;gt;&amp;#160; &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::ActivateInstance this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_QueryInterface this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_AddRef this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_Release this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_GetIids this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_GetRuntimeClassName this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_GetTrustLevel this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; __Class1ActivationFactory::__abi_Platform_Details_IActivationFactory____abi_ActivateInstance this adjustor: 0             &lt;br /&gt; 1&amp;gt;&amp;#160; &lt;br /&gt;            &lt;br /&gt;/d1reportAllClassLayout, imprime tous les arbres.             &lt;br /&gt;            &lt;br /&gt;&lt;/p&gt;       &lt;/ol&gt;     &lt;/ol&gt;      &lt;ol&gt;       &lt;li&gt;La classe est également marquée &lt;strong&gt;sealed&lt;/strong&gt; (scellée),&amp;#160; cela veut dire qu’il ne sera pas possible d’en hériter. Ce que l’on peut lire dans les différentes discutions, et ce qui me semble le plus pertinent, c’est pour éviter la &lt;strong&gt;tentation&lt;/strong&gt; qu’un développeur en hérite dans un autre langage. En effet, à la différence de .NET ou l’on peut hériter d’une classe développée dans un langage, dans une classe développée avec un autre langage, il ne faut pas oublier que notre composant est développé en Natif donc avec une ABI différente de celle de .NET.           &lt;br /&gt;&lt;/li&gt;        &lt;li&gt;Lors de la compilation, un fichier avec une extension .winmd est généré (Format CLI d’ailleurs, donc lisible avec un outil comme ILASM) et qui décrit sous forme de meta-données ce que sait faire le composant afin que les autres langages puissent y avoir accès. Le faite d’exposer à l’extérieur de son espace binaire (ABI) des informations, telles que les méthodes, les propriétés etc.. impose un certain nombre de règles que nous décrirons dans un prochain billet. &lt;/li&gt;        &lt;li&gt;Dernière petite chose, Si vous souhaitez changer l'espace de nom, il faut changer le nom du fichier winmd avec la même nomenclature que l’espace de nom.         &lt;br /&gt;Par exemple si vous choisissez une espace de nom du type FRDPE.WINRT.ESE.          &lt;br /&gt;namespace &lt;strong&gt;FRDPE&lt;/strong&gt; { namespace &lt;strong&gt;WINRT&lt;/strong&gt; { namespace &lt;strong&gt;ESE&lt;/strong&gt; {&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;….           &lt;br /&gt;}}}           &lt;br /&gt;          &lt;br /&gt;Il faut changer le nom du fichier winmd en FRDPE.WINRT.ESE, sinon vous obtiendrez l’erreur suivante :           &lt;br /&gt;          &lt;br /&gt;error APPX1706: The .winmd file 'WindowsRuntimeComponent2.winmd' contains type 'FRDPE.WINRT.ESE.__IJetBlueEnginePublicNonVirtuals' outside its root namespace 'WindowsRuntimeComponent2'. Make sure that all public types appear under a common root namespace that matches the output file name.           &lt;br /&gt;          &lt;br /&gt;Pour ce faire, Affichez les propriétés du projet | Linker | Windows Metadata           &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/3527.image_5F00_1D51D13D.png"&gt;&lt;img title="image" style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/4617.image_5F00_thumb_5F00_08EC0BB2.png" width="782" height="597" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;/li&gt;     &lt;/ol&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Dans la prochaine partie, nous détaillerons au travers de notre exemple&lt;/p&gt;      &lt;ul&gt;       &lt;li&gt;La frontière des langages (ABI), c’est à dire ce que nous pouvons ou ne pouvons pas exposer aux autres langages. &lt;/li&gt;        &lt;li&gt;Les types commun, le boxing, comment transtyper des types &lt;/li&gt;        &lt;li&gt;Les exceptions &lt;!--EndFragment--&gt;&lt;/li&gt;     &lt;/ul&gt;      &lt;p&gt;&amp;#160;&lt;/p&gt;      &lt;p&gt;Eric Vernié&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10405398" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2B002B00_/">C++</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2B002B002F00_CX/">C++/CX</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/ESE/">ESE</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WRL/">WRL</category></item><item><title>Contrôle Carrousel en XAML : de C# à C++/CX</title><link>http://blogs.msdn.com/b/devosaure/archive/2013/03/25/contr-244-le-carrousel-en-xaml-de-c-224-c-cx.aspx</link><pubDate>Mon, 25 Mar 2013 18:07:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10405192</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10405192</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2013/03/25/contr-244-le-carrousel-en-xaml-de-c-224-c-cx.aspx#comments</comments><description>&lt;p&gt;Dans ce billet nous nous sommes amusé à transposer de C# vers C++/CX le contrôle carrousel&amp;#160; de Sébastien Pertus, qu’il décrit dans son excellent article &lt;a href="http://blogs.msdn.com/b/mim/archive/2013/03/19/create-a-custom-user-control-using-xaml-and-c-for-windows-8.aspx"&gt;&lt;strong&gt;Create a custom user control using Xaml and C# for Windows 8&lt;/strong&gt;&lt;/a&gt; comme il n’y a rien de nouveau dans l’algorithme, je ne vais pas détailler ce qui a déjà été fait. &lt;/p&gt;  &lt;p&gt;En faite l’idée est tout simplement de montrer les différences entre les deux langages si l’envie vous prenez de développer en C++/CX et de voir qu’en fin de compte il n’y pas énormément de différence et que l’écriture est assez similaire.&lt;/p&gt;  &lt;p&gt;Pour ma part, la méthode que j’ai utilisé, c’est de copier le code C# dans le projet C++/CX que j’ai ensuite transposé dans cette dernière syntaxe. Temps d’écriture 1 grosse journée&lt;/p&gt;  &lt;p&gt;Vous trouverez le code source de cette exemple &lt;a href="https://skydrive.live.com/?cid=9607f0bf305f86d2#cid=9607F0BF305F86D2&amp;amp;id=9607F0BF305F86D2%21936"&gt;ici&lt;/a&gt; : &lt;/p&gt;  &lt;h2&gt;Petit Rappel :&lt;/h2&gt;  &lt;p&gt;Une application Windows 8 (Quel que soit le langage utilisé C++/CX,C#, VB ou Javascript) est basée sur un nouveau Jeu d’API native, le Windows Runtime connue sous le nom de WinRT.&lt;/p&gt;  &lt;p&gt;C# est quant à lui basé sur une machine Virtuelle le CLR (Common Langage Runtime) qui fera le pont entre le monde .NET et le monde Natif, on appelle cela la projection.&lt;/p&gt;  &lt;p&gt;Cette projection permet de mapper à peu près tous les types .NET vers la WinRT. Les primitives (String, int etc..), les interfaces, les enums, les structs, les delegates, , par exemple un IList&amp;lt;T&amp;gt; en .NET sera mappée en IVector&amp;lt;T&amp;gt; etc..&lt;/p&gt;  &lt;p&gt;Cela veut dire comme nous le verrons plus tard, qu’il est possible d’utiliser directement des jeux d’API .NET dans son application sans se soucier s’il y a un pendant en WinRT (comme nous le verrons plus tard), il faudra donc le prendre en compte et trouver une correspondance en WinRT pour C++/CX.&lt;/p&gt;  &lt;p&gt;Si la transposition n’est pas automatique, il est possible d’utiliser des méthodes d’extensions disponibles dans .NET pour explicitement utiliser ou convertir des types .NET vers des types WinRT.&lt;/p&gt;  &lt;p&gt;Par exemple en incluant l’espace de nom &lt;strong&gt;System.Runtime.InteropServices.WindowsRuntime&lt;/strong&gt; vous avez accès à la méthode d’extension .AsBuffer(), qui permet de convertir un tableau de byte[] en IBuffer&amp;lt;Byte&amp;gt;, interface utilisée massivement dans la WinRT.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Transposition du code C# vers du C++/CX&lt;/h2&gt;  &lt;p&gt;Le contrôle de Sébastien, permet d’afficher des images, qui pourront défiler à&amp;#160; droite et à&amp;#160; gauche avec la souris ou en tactile,&amp;#160; avec une petite animation. Ces images seront liées via un pseudo modèle MVVM.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Notre première tâche est donc de construire le modèle &lt;a href="http://blogs.msdn.com/b/ukmsdn/archive/2012/09/07/10342815.aspx"&gt;MVVM pour C++/CX&lt;/a&gt;&lt;/p&gt;    &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6436dade-ac3b-48af-9094-68f5a5ea04ee" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;MainPageViewModel&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; Datas { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; MainPageViewModel()&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;();&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic01.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 05&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic02.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 06&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic03.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 07&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic04.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 08&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic05.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 09&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Datas.Add(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { BitmapImage = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic06.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UriKind&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Absolute)), Title = &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 10&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; });&lt;/span&gt;&lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; BitmapImage { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Title { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;; }&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;      &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:29b6ec9f-f53e-4086-82d3-ef38f6942335" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;namespace&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; YellowStone&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;[Windows::UI::Xaml::Data::Bindable]&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;sealed&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; :&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;Data(Windows::UI::Xaml::Media::Imaging::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ bmp,Platform::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ title);&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Windows::UI::Xaml::Media::Imaging::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ BmpImage;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Platform::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ Title;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;};&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;[Windows::UI::Xaml::Data::Bindable]&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;MainPageViewModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;sealed&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;     &lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;:    &lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;MainPageViewModel(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;virtual&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ~MainPageViewModel(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Expose only public Type through ABI&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Windows::Foundation::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^  Datas;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;};    &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;Tout d’abord une classe C++/CX&amp;#160; doit être notée avec l’attribut &lt;strong&gt;Windows::UI::Xaml::Data::Bindable&lt;/strong&gt; afin que le type soit inclu dans le fichier XAML généré. (cela suffit pour que cela fonctionne dans notre exemple&amp;#160; mais pour aller plus loin vous devriez également implémenter l’interface &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.data.inotifypropertychanged"&gt;INotifyPropertyChanged&lt;/a&gt; cf l’article &lt;a href="http://blogs.msdn.com/b/ukmsdn/archive/2012/09/07/10342815.aspx"&gt;MVVM in C++/CX&lt;/a&gt; )&lt;/p&gt;  &lt;p&gt;Vous noterez que dans le code C#, il utilise une liste .NET&amp;#160; &lt;strong&gt;ObservableCollection&amp;lt;Data&amp;gt;&lt;/strong&gt;&amp;#160; pour la propriété &lt;strong&gt;Datas&lt;/strong&gt;, alors que nous utilisons l’interface WinRT &lt;strong&gt;Windows::Foundation::Collections::IObservableVector&amp;lt;Object^&amp;gt;&lt;/strong&gt; en lui passant un &lt;strong&gt;Object^&lt;/strong&gt; plutôt qu’un type &lt;strong&gt;Data^&lt;/strong&gt;. Si nous avions utilisé le type Data^ nous aurions eu une erreur de transtypage à l’exécution lors du binding, alors que la projection de C# fait le transtypage pour nous.     &lt;br /&gt;Vous noterez également que nous pouvons utiliser une syntaxe &lt;strong&gt;simplifiée&lt;/strong&gt; en C++/CX comme en C# pour la déclaration de la &lt;strong&gt;propriété&lt;/strong&gt;.     &lt;br /&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6c1c7648-c5a0-473e-8a7f-0f5e3f08b3ec" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Propri&amp;#233;t&amp;#233; en C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Depth { &lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; get() {&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(DependencyObject::GetValue(DepthProperty));}&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; set (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; value){DependencyObject::SetValue(DepthProperty,value);}&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pour instancier la liste Datas (&lt;strong&gt;IObservableVector&lt;/strong&gt;&amp;lt;T&amp;gt;) nous utiliserons le type natif à la WinRT &lt;strong&gt;Platform::Collections::Vector&amp;lt;Object^&amp;gt;,&lt;/strong&gt; comme dans le code suivant du constructeur de la classe &lt;strong&gt;MainPageViewModel&lt;/strong&gt;.&lt;/p&gt;    &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:86d45726-78b8-4d1b-87a9-09d3ebd14fa2" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#2b91af"&gt;MainPageViewModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::MainPageViewModel(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Platform::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Vector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;();&lt;/span&gt;&lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp1(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic01.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data1=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp1,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 05&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp2(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic02.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data2=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp2,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 06&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp3(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic03.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data3=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp3,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 07&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp4(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic04.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data4=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp4,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 08&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp5(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic05.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data5=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp5,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 09&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;br&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;    &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BitmapImage&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; bmp6(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ms-appx:///Assets/pic06.jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; data6=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Data&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(%bmp6,&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Wall 10&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt; &lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas-&amp;gt;Append(data1);    &lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas-&amp;gt;Append(data2);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas-&amp;gt;Append(data3);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas-&amp;gt;Append(data4);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Datas-&amp;gt;Append(data5);&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;&lt;strong&gt;Remarque&lt;/strong&gt; : Pourquoi ne pas utiliser dans la déclaration de la propriété &lt;strong&gt;Datas&lt;/strong&gt; directement le type &lt;strong&gt;Platform::Collections::Vector&amp;lt;Object^&amp;gt; &lt;/strong&gt;?     &lt;br /&gt;C’est très simple, parce que cette propriété est déclarée publique, et qu’il n’est pas possible d’émettre dans le fichier winmd des types autres que des types WinRT (c’est à dire visible dans les autres langages)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Plusieurs chose à noter par rapport au code C#.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;C++/CX utilise la notion de référence symbolisée par le caractère &lt;strong&gt;^,&lt;/strong&gt; pour initialiser une référence on utilise &lt;strong&gt;ref new&lt;/strong&gt; pour l’instanciation de la classe alors que C# utilise une référence implicite instanciée par le mot clé &lt;strong&gt;new        &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;T^ t=ref new T();        &lt;br /&gt;&lt;/strong&gt;L’opérateur de portée pour une référence est la flèche &lt;strong&gt;–&amp;gt;&lt;/strong&gt; alors qu’en C# c’est le point. Jusqu’ici rien de bien trop compliqué.       &lt;br /&gt;&lt;strong&gt;t-&amp;gt;MethodA();&lt;/strong&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Néanmoins,&amp;#160; C++/CX, permet également comme dans du code ISO C++ traditionnel, d’avoir une initialisation sur la pile. C’est à dire que la référence à l’objet disparait lorsque la méthode se termine. (pas besoin alors de faire de delete)      &lt;br /&gt;&lt;strong&gt;T t;        &lt;br /&gt;&lt;/strong&gt;L’opérateur de portée devient le &lt;strong&gt;point&lt;/strong&gt;.       &lt;br /&gt;&lt;strong&gt;t.MethodA();&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Du coup pour déférencer&lt;strong&gt; &lt;/strong&gt;une référence on utilise &lt;strong&gt;l’opérateur %. &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Au même titre que le mot clé &lt;strong&gt;var&lt;/strong&gt; en C#, on utilise le mot clé &lt;strong&gt;auto&lt;/strong&gt; pour simplifier et clarifier la syntaxe&lt;strong&gt;.&lt;/strong&gt; le résultat est le même dans les deux langages, les compilateurs font de l’inférence de type. &lt;/li&gt;    &lt;li&gt;Anecdotique, mais je le signale quand même, la liste Vector&amp;lt;T&amp;gt;, ne possède pas les mêmes méthodes que la liste .NET ObservableCollection&amp;lt;T&amp;gt;.      &lt;br /&gt;Pour ajouter un élément il faut utiliser la méthode Append() et&amp;#160; pas la méthode Add(), pour compter les éléments il faut utiliser la propriété Size plutot que Count, etc… &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Une fois le modèle défini, nous allons nous attaquer au contrôle proprement dit.&lt;/p&gt;  &lt;p&gt;Un contrôle XAML, expose pour le &lt;strong&gt;DataBinding&lt;/strong&gt; des &lt;strong&gt;DependencyProperty, &lt;/strong&gt;en C# une syntaxe simplifiée est d’utiliser un champ publique statique associée à une propriété classique.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:5563284e-5b12-4466-b313-d70fdafd509f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; Items source : Better if ObservableCollection :)&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;///&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IEnumerable&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; ItemsSource&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;           &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IEnumerable&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;)GetValue(ItemsSourceProperty); }&lt;/span&gt;&lt;br&gt;           &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { SetValue(ItemsSourceProperty, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Using a DependencyProperty as the backing store for ItemsSource.  &lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//This enables animation, styling, binding, etc...&lt;/span&gt;&lt;br&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;readonly&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ItemsSourceProperty =&lt;/span&gt;&lt;br&gt;           &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Register(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ItemsSource&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;br&gt;                       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeof&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IEnumerable&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;),&lt;/span&gt;&lt;br&gt;                       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeof&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LightStone&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;),&lt;/span&gt;&lt;br&gt;                       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PropertyMetadata&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(0, ItemsSourceChangedCallback));&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:54c7fa79-c46f-4ce2-aebc-5f007fcaeb48" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ItemsSourceChangedCallback(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyObject&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; dependencyObject, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; args)&lt;/span&gt;&lt;br&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (args.NewValue == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (args.NewValue == args.OldValue)&lt;/span&gt;&lt;br&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LightStone&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; lightStone = dependencyObject &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;as&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LightStone&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (lightStone == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; obsList = args.NewValue &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;as&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;INotifyCollectionChanged&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (obsList != &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;obsList.CollectionChanged += (sender, eventArgs) =&amp;gt;&lt;/span&gt;&lt;br&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;switch&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (eventArgs.Action)&lt;/span&gt;&lt;br&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;case&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NotifyCollectionChangedAction&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Remove:&lt;/span&gt;&lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;foreach&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; oldItem &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; eventArgs.OldItems)&lt;/span&gt;&lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;for&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; i = 0; i &amp;lt; lightStone.internalList.Count; i++)&lt;/span&gt;&lt;br&gt;                              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                                  &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; fxElement = lightStone.internalList[i] &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;as&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FrameworkElement&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;                                  &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (fxElement == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; || fxElement.DataContext != oldItem) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;continue&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;                                  &lt;span style="background:#ffffff;color:#000000"&gt;lightStone.RemoveAt(i);&lt;/span&gt;&lt;br&gt;                              &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;break&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;                      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;case&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;NotifyCollectionChangedAction&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Add:&lt;/span&gt;&lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;foreach&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; newItem &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;in&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; eventArgs.NewItems)&lt;/span&gt;&lt;br&gt;                              &lt;span style="background:#ffffff;color:#000000"&gt;lightStone.CreateItem(newItem, 0);&lt;/span&gt;&lt;br&gt;                          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;break&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;};&lt;/span&gt;&lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;lightStone.Bind();&lt;/span&gt;&lt;br&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;En C++, cela ce fait en 2 temps. Tout d’abord dans le fichier d’entête on déclare la propriété statique &lt;strong&gt;ItemsSourceProperty, &lt;/strong&gt;la propriété qui invoquera la DependencyProperty et la méthode statique qui sera invoquée &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9ddf6b2d-2a16-43d7-a319-acafdb91675d" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 300px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Windows::UI::Xaml::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ ItemsSourceProperty&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;Windows::UI::Xaml::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ get();&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;property&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Windows::Foundation::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^ ItemsSource {&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;Windows::Foundation::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^ get(){ &lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;safe_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;Windows::Foundation::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyObject&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::GetValue(ItemsSourceProperty));}&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; set (Windows::Foundation::Collections::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyObject&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetValue(ItemsSourceProperty,&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0c274729-cca8-4c34-a2b4-e0c4ef9ae770" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; OnItemsSourcePropertyChanged(Windows::UI::Xaml::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyObject&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ d, Windows::UI::Xaml::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ e);&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Puis dans le fichier CPP on déclare le champ statique qui sera exposé à l’extérieure par l’intermédiaire de la propriété &lt;strong&gt;ItemsSourceProperty&lt;/strong&gt;, et on implémente la méthode &lt;strong&gt;get&lt;/strong&gt; de la propriété et la méthode statique de rappel.&lt;/p&gt;  &lt;p&gt;   &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e92b8a06-389d-438e-82b1-1bd5cfc7496e" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ m_ItemsSourceProperty=&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::Register(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;ItemsSource&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;,&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TypeName&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeid&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;),&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TypeName&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeid&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;),&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PropertyMetadata&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PropertyChangedCallback&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::OnItemsSourcePropertyChanged)));&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyProperty&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::ItemsSourceProperty::get()&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; m_ItemsSourceProperty;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::OnItemsSourcePropertyChanged(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyObject&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;d&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DependencyPropertyChangedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;NewValue == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)   &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;NewValue == &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;OldValue)  &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; target = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;dynamic_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;d&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (target == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)  &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^ source=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;dynamic_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IObservableVector&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;^&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;NewValue);&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (source==&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;target-&amp;gt;ItemsSource=source;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;target-&amp;gt;ItemsSource-&amp;gt;VectorChanged+=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;VectorChangedEventHandler&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;([target,source](&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;sender&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IVectorChangedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; action=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;CollectionChange; &lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; index=&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;e&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Index;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (action==&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CollectionChange&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;ItemInserted&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;target-&amp;gt;CreateItem(source-&amp;gt;GetAt(index),0.0);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);    &lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;target-&amp;gt;Bind(source);        &lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Plusieurs choses à noter par rapport au code C#&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Pour obtenir le type pour le paramètre &lt;strong&gt;TypeName&lt;/strong&gt;, on utilise le mot clé &lt;strong&gt;typeid&lt;/strong&gt;. (N’apparait pas avec IntelliSense). &lt;strong&gt;TypeName(Object::typeid)&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;La syntaxe de la méthode statique de callback ne s’invente pas elle est issue de la normalisation C++, il faut la préfixer par &amp;amp; suivie du nom la classe puis du nom de la méthode. &lt;strong&gt;&amp;amp;Carroussel::OnItemsSourcePropertyChanged&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;En C++ on n’utilise plus l’opérateur (T) pour caster (même si on peut toujours le faire), mais les opérateurs, &lt;a href="http://msdn.microsoft.com/en-us/library/5f6c9f8h(v=vs.80).aspx"&gt;static_cast&amp;lt;T&amp;gt;, safe_cast&amp;lt;T&amp;gt; et dynamic_cast&amp;lt;T&amp;gt;&lt;/a&gt; à la place.       &lt;br /&gt;Par exemple &lt;strong&gt;dynamic_cast&amp;lt;T&amp;gt;&lt;/strong&gt; correspond à l’opérateur &lt;strong&gt;as&lt;/strong&gt; de C# : &lt;strong&gt;auto target = dynamic_cast&amp;lt;Carroussel^&amp;gt;(d)&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Pour tester si un type est nul, l’opérateur &lt;strong&gt;nullptr&lt;/strong&gt; est désormais disponible. &lt;strong&gt;if (target==nullptr)&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;En C# on utilise un ObservableCollection&amp;lt;T&amp;gt;, qui implémente l’interface INotifyCollectionChange et son évènement &lt;strong&gt;CollectionChanged&lt;/strong&gt; , en C++/CX, on utilise la collection Platform::Collection::Vector&amp;lt;T&amp;gt; qui implémente l’interface IObservableVector et sont évènement &lt;strong&gt;VectorChanged&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;Il est possible d’utiliser des lambdas (depuis C++11), avec une syntaxe qui diffère de celle de C#     &lt;br /&gt;Comme on peut le voir ici, une lambda C++ se construit comme suit :&lt;strong&gt; [](){};&lt;/strong&gt; comme dans l’exemple ci-dessus alors&amp;#160; qu’en C# c’est plutôt &lt;strong&gt;()=&amp;gt;{};       &lt;br /&gt;&lt;/strong&gt;Vous noterez qu’entre crochet, j’utilise les variables &lt;strong&gt;target&lt;/strong&gt; et &lt;strong&gt;source&lt;/strong&gt;, qui sont passées par valeur au corps de la lambda (le compilateur en fait une copie).&lt;/li&gt;    &lt;li&gt;Pour récupérer un élèment de la liste source, on utilise pas un indexer mais directement la méthode source-&amp;gt;GetAt(index).&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Une méthode qui mérite notre attention car il y à des différences c’est ArrangeOverride, mais en les comparants vous vous apercevrez qu’en faite il n’y pas beaucoup de différence dans l'a syntaxe.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:fbc5c26e-53dc-4be0-9ad1-07f0ba83f974" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C#&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;protected&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;override&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ArrangeOverride(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; finalSize)&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (isUpdatingPosition)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; finalSize;&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerLeft = 0;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerTop = 0;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Clip = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;RectangleGeometry&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { Rect = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Rect&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(0, 0, finalSize.Width, finalSize.Height) };&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Set &lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetZIndex(rectangle, 1);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Storyboard for all Items to appear&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; localStoryboard = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Storyboard&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;for&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; i = 0; i &amp;lt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.internalList.Count; i++)&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UIElement&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; container = internalList[i];&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; desiredSize = container.DesiredSize;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.IsNaN(desiredSize.Width) || &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.IsNaN(desiredSize.Height)) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;continue&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// get the good center and top position&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (centerLeft == 0 &amp;amp;&amp;amp; centerTop == 0 &amp;amp;&amp;amp; desiredSize.Width &amp;gt; 0 &amp;amp;&amp;amp; desiredSize.Height &amp;gt; 0)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;desiredWidth = desiredSize.Width;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;desiredHeight = desiredSize.Height;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;centerLeft = (finalSize.Width / 2) - (desiredWidth / 2);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;centerTop = (finalSize.Height - desiredHeight) / 2;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get position from SelectedIndex&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; deltaFromSelectedIndex = &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Math&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Abs(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex - i);&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get rect position&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rect = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Rect&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(centerLeft, centerTop, desiredWidth, desiredHeight);&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;container.Arrange(rect);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetLeft(container, centerLeft);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetTop(container, centerTop);&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Apply Transform&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PlaneProjection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; planeProjection = container.Projection &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;as&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PlaneProjection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (planeProjection == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;continue&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get properies &lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; depth = (i == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? 0 : -(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Depth);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rotation = (i == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? 0 : ((i &amp;lt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? Rotation : -(Rotation));&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; translateX = (i == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? 0 : ((i &amp;lt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? -TranslateX : TranslateX);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; offsetX = (i == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? 0 : (i - &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) * desiredWidth;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; translateY = TranslateY;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// CenterOfRotationX&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// to Get good center of rotation for SelectedIndex, must know the animation behavior&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerOfRotationSelectedIndex = isIncrementing ? 1 : 0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerOfRotationX = (i == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? centerOfRotationSelectedIndex : ((i &amp;gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) ? 1 : 0);&lt;/span&gt;&lt;br&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Apply on current item&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.CenterOfRotationX = centerOfRotationX;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.GlobalOffsetY = translateY;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.GlobalOffsetZ = depth;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.GlobalOffsetX = translateX;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.RotationY = rotation;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection.LocalOffsetX = offsetX;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// calculate zindex and opacity&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; zindex = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.internalList.Count * 100) - deltaFromSelectedIndex;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; opacity = 1d - (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Math&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Abs((&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)(i - &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SelectedIndex) / (MaxVisibleItems + 1)));&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Items appears&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (container.Visibility == &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Visibility&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Visible &amp;amp;&amp;amp; container.Opacity == 0d)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, rotation, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.RotationY)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, depth, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetZ)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, translateX, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetX)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, offsetX, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.LocalOffsetX)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, translateY, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetY)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.AddAnimation(container, TransitionDuration, 0, opacity, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Opacity&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.EasingFunction);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;container.Opacity = opacity;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetZIndex(container, zindex);&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;rectangle.Fill = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;SolidColorBrush&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Colors&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Black);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;rectangle.Opacity = 0.9;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetLeft(rectangle, 0);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetTop(rectangle, (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.ActualHeight / 2));&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetZIndex(rectangle, 1);&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;rectangle.Width = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.ActualWidth;&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;rectangle.Height = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.ActualHeight;&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (localStoryboard.Children.Count &amp;gt; 0)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard.Begin();&lt;/span&gt;&lt;br&gt; &lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; finalSize;&lt;/span&gt;&lt;br&gt;     &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;                    &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:de6776cf-0c53-45e2-af51-7bc60bfd52f6" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;C++/CX&lt;/div&gt; &lt;div style="background-color: #ffffff; max-height: 500px; overflow: auto; padding: 2px 5px;"&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Carroussel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::ArrangeOverride(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;         &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (isUpdatingPosition)&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;float&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerLeft = 0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;float&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerTop = 0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;RectangleGeometry&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rectGeo;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Rect&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rect(0,0,&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Width,&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Height);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;rectGeo.Rect=rect;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Clip=%rectGeo;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Set &lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetZIndex(rectangle, 1);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Storyboard for all Items to appear&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; localStoryboard =&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Storyboard&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;unsigned&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; count=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;internalList-&amp;gt;Size;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;for&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; i = 0; i &amp;lt; count; i++)&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;UIElement&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ container = internalList-&amp;gt;GetAt(i);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; desiredSize = container-&amp;gt;DesiredSize;&lt;/span&gt;&lt;br&gt;                                                                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (_isnan(desiredSize.Width) || _isnan(desiredSize.Height)) &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;continue&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// get the good center and top position&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (centerLeft == 0 &amp;amp;&amp;amp; centerTop == 0 &amp;amp;&amp;amp; desiredSize.Width &amp;gt; 0 &amp;amp;&amp;amp; desiredSize.Height &amp;gt; 0)&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;desiredWidth = desiredSize.Width;&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;desiredHeight = desiredSize.Height;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;centerLeft = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Width / 2) - (desiredWidth / 2);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;centerTop = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Height - desiredHeight) / 2;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get position from SelectedIndex&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; currentSelectedIndex=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;SelectedIndex;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; deltaFromSelectedIndex = ::abs(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(currentSelectedIndex - i));&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get rect position&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Rect&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rect(centerLeft, centerTop, desiredWidth, desiredHeight);&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;container-&amp;gt;Arrange(rect);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetLeft(container, centerLeft);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetTop(container, centerTop);&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Apply Transform&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PlaneProjection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^ planeProjection = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;dynamic_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;PlaneProjection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;^&amp;gt;(container-&amp;gt;Projection);&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (planeProjection == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;nullptr&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;continue&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Get properies &lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; depth = (i == currentSelectedIndex) ? 0 : -(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Depth);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; currentRotation=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;Rotation;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; currentTranslateX=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;TranslateX;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; rotation = (i == currentSelectedIndex) ? 0 : ((i &amp;lt; currentSelectedIndex) ? currentRotation : -(currentRotation));&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; translateX = (i == currentSelectedIndex) ? 0 : ((i &amp;lt; currentSelectedIndex) ? -currentTranslateX : currentTranslateX);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; offsetX = (i == currentSelectedIndex) ? 0 : (i - currentSelectedIndex) * desiredWidth;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; translateY =&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;TranslateY;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// CenterOfRotationX&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// to Get good center of rotation for SelectedIndex, must know the animation behavior&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerOfRotationSelectedIndex = isIncrementing ? 1 : 0;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; centerOfRotationX = (i == currentSelectedIndex) ? centerOfRotationSelectedIndex : ((i &amp;gt; currentSelectedIndex) ? 1 : 0);&lt;/span&gt;&lt;br&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Apply on current item&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;CenterOfRotationX = centerOfRotationX;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;GlobalOffsetY = translateY;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;GlobalOffsetZ = depth;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;GlobalOffsetX = translateX;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;RotationY = rotation;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;planeProjection-&amp;gt;LocalOffsetX = offsetX;&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// calculate zindex and opacity&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; zindex = (count * 100) - deltaFromSelectedIndex;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; currentMaxVisibleItems=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;MaxVisibleItems;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; opacity=0.0;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;opacity = 1.0 - (::abs(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static_cast&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;double&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;((i - currentSelectedIndex))/ (currentMaxVisibleItems + 1)));&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;auto&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; currentEasing=&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;EasingFunction;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;// Items appears&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (container-&amp;gt;Visibility == Windows::UI::Xaml::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Visibility&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::&lt;/span&gt;&lt;span style="background:#ffffff;color:#2f4f4f"&gt;Visible&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &amp;amp;&amp;amp; container-&amp;gt;Opacity == 0.0)&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, rotation, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.RotationY)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, depth, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetZ)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, translateX, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetX)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, offsetX, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.LocalOffsetX)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, translateY, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;(UIElement.Projection).(PlaneProjection.GlobalOffsetY)&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;AddAnimation(localStoryboard,container, TransitionDuration, 0, opacity, &lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;Opacity&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, currentEasing);&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;br&gt; &lt;br&gt;                     &lt;span style="background:#ffffff;color:#000000"&gt;container-&amp;gt;Opacity = opacity;&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt; &lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetZIndex(container, zindex);&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Color&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; color;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;color.R=0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;color.B=0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;color.G=0;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;rectangle-&amp;gt;Fill = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;SolidColorBrush&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(color);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;rectangle-&amp;gt;Opacity = 0.9;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetLeft(rectangle, 0);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetTop(rectangle, (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;ActualHeight / 2));&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Canvas&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;::SetZIndex(rectangle, 1);&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;rectangle-&amp;gt;Width = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;ActualWidth;&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;rectangle-&amp;gt;Height = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;-&amp;gt;ActualHeight;&lt;/span&gt;&lt;br&gt; &lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (localStoryboard-&amp;gt;Children-&amp;gt;Size &amp;gt; 0)&lt;/span&gt;&lt;br&gt;                 &lt;span style="background:#ffffff;color:#000000"&gt;localStoryboard-&amp;gt;Begin();&lt;/span&gt;&lt;br&gt;             &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#808080"&gt;finalSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;br&gt; &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tout d’abord comme en C# on utilise des objets XAML pure WinRT (Espace de nom Windows), on les utilise de la même manière en C# et en C++/CX.&lt;/p&gt;  &lt;p&gt;Par exemple l’objet &lt;strong&gt;RectangleGeometry&lt;/strong&gt; que j’utilise ici avec une syntaxe sur la pile (sans ref new) est passé à la propriété Clip avec l’opérateur de déférencement % c’est la seule différence avec C#, si j’avais utilisé une référence à la place &lt;strong&gt;RectangleGeometry^ rectGeo=ref new RectangleGeometry(),&lt;/strong&gt; j’aurais directement utilisé l’affectation &lt;strong&gt;this-&amp;gt;Clip=rectGeo;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;En C# pour récupérer la valeur absolue, on utilise la méthode &lt;strong&gt;Math.Abs&lt;/strong&gt;, qui est une classe pure .NEt et non pas WinRT, en C++/CX, comme nous pouvons mixer du code ISO C++ avec du code C++/CX, j’ai utilisé la méthode abs() de la runtime C.&lt;/p&gt;  &lt;p&gt;Dans tous les cas, si il n’y pas de correspondance .NET &amp;lt;–&amp;gt; WinRT, il est possible d’utiliser d’autres librairies C ou C++. Par exemple, un Double en C# qui est un type (ValueType) possède une méthode IsNaN. Pas en C++/CX, ou il est possible d’utiliser la runtime C _isnan(double x);&lt;/p&gt;  &lt;p&gt;Vous trouverez le code source de cette exemple &lt;a href="https://skydrive.live.com/?cid=9607f0bf305f86d2#cid=9607F0BF305F86D2&amp;amp;id=9607F0BF305F86D2%21936"&gt;ici&lt;/a&gt; : &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pour aller plus loin avec C++/CX je vous conseille fortement la lecture de &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/jj674095.aspx"&gt;Developing an end-to-end Windows Store app using C++ and XAML:hilo&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10405192" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2B002B002F00_CX/">C++/CX</category></item><item><title>Tips &amp; Tricks : Modèle TAP (Task Asynchronous Pattern, i.e async/await) avec la classe WebClient de Windows Phone 8</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/11/06/tips-amp-tricks-mod-232-le-tap-task-asynchronous-pattern-i-e-async-await-avec-la-classe-webclient-de-windows-phone-8.aspx</link><pubDate>Tue, 06 Nov 2012 12:58:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10366146</guid><dc:creator>EVBB</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10366146</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/11/06/tips-amp-tricks-mod-232-le-tap-task-asynchronous-pattern-i-e-async-await-avec-la-classe-webclient-de-windows-phone-8.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Le modèle TAP, est le modèle qui vous permet (pour faire simple) d’utiliser le couple &lt;strong&gt;async/await&lt;/strong&gt;, dans votre code.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Par exemple avec Windows 8, si je veux lire un flux d’un fichier, je peux à l’aide de la classe &lt;strong&gt;HttpClient&lt;/strong&gt; et de sa méthode &lt;strong&gt;GetStreamAsync&lt;/strong&gt; utiliser ce modèle comme suit : &lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:9367d25c-801b-467b-a7ec-1e0e693154b7" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; LoadDataAsync()&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientHttp.GetStreamAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;...&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;));&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Ceci est rendu possible, car la méthode &lt;strong&gt;GetStreamAsync&lt;/strong&gt; retourne un &lt;strong&gt;Task&amp;lt;Stream&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Néanmoins, avec la classe &lt;strong&gt;WebClient&lt;/strong&gt; de Windows Phone 8, pour lire ce flux, outre le faite que la classe est différente par rapport à celle de Windows 8, la méthode se nomme&lt;/font&gt; &lt;font size="3"&gt;&lt;strong&gt;OpenReadAsync&lt;/strong&gt;, et ne retourne qu’un &lt;strong&gt;void&lt;/strong&gt;. Pour obtenir le résultat, il faut s’abonner à un évènement (&lt;strong&gt;ce que nous évite de faire le modèle TAP justement et qui simplifie la lisibilité du code.)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e5bd3798-1237-4687-b67a-d254773b8fd8" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;LoadRemoteFileAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; RemotePath)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientWeb = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;_clientWeb.OpenReadAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(RemotePath));&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;_clientWeb.OpenReadCompleted += _clientWeb_OpenReadCompleted;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientWeb_OpenReadCompleted(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; sender, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;OpenReadCompletedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; e)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//....Code omis pour plus de clart&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Une des solutions consiste alors à utiliser une classe bien pratique en .NET la &lt;strong&gt;TaskCompletionSource&lt;/strong&gt;.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Tout d’abord nous allons créer&lt;strong&gt; une méthode d’extension&lt;/strong&gt; pour la classe WebClient, que je nommerai &lt;strong&gt;GetStreamAsync&lt;/strong&gt; (pour utiliser la même nomenclature que la classe HttpClient et ceci afin de rendre plus lisible mon code, dans l’optique ou je vais créer une base de code commune entre Windows 8 et Windows Phone 8, mais ceci est une autre histoire.)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Pour ce faire, il faut déclarer une classe statique et une méthode statique dans cette classe prenant le paramètre &lt;strong&gt;this&lt;/strong&gt; du type de la classe qu’on veut étendre, puis le paramètre de la méthode.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2f259972-96c7-440e-b9d0-46497676879f" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClientEx&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; GetStreamAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; webClient, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; requestUri)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Ensuite dans le corps de la méthode nous utilisons la classe &lt;strong&gt;TaskCompletionSource&lt;/strong&gt;, de la manière suivante :&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8b4cc80e-9e84-478d-977f-9ca5d359697c" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClientEx&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;   &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; GetStreamAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; webClient, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; requestUri)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;OpenReadCompletedEventHandler&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; completedHandler = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;           &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (webClient == &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;throw&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ArgumentNullException&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;webClient&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TaskCompletionSource&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; tcs = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TaskCompletionSource&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(webClient);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;completedHandler = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;delegate&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; sender, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;OpenReadCompletedEventArgs&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; e)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (e.Error != &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;tcs.TrySetException(e.Error);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (e.Cancelled)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt; ��              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;tcs.TrySetCanceled();&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;tcs.TrySetResult(e.Result);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;webClient.OpenReadCompleted -= completedHandler;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;};&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;webClient.OpenReadCompleted += completedHandler;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;webClient.OpenReadAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(requestUri));&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; tcs.Task;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}      &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font size="3"&gt;On crée un objet TaskComptetionSource qui retournera un Stream&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="3"&gt;On crée un délégué qui a la même signature que l’évènement &lt;strong&gt;OpenReadCompleted&lt;/strong&gt; que nous lui affecteront par la suite.&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="3"&gt;Dans ce délégué, on utilise la méthode &lt;strong&gt;TrySetResult&lt;/strong&gt;, qui retourne à l’appelant le Stream du fichier lorsque l’évènement OpenReadCompleted est déclenché.&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font size="3"&gt;Pour attendre que l’évènement&amp;#160; OpenReadCompleted soit déclenché, on retourne une tâche générée par le TCS.&lt;/font&gt;&lt;/li&gt; &lt;/ol&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Du coup maintenant nous pouvons utiliser la syntaxe async/await en utilisant notre méthode d’extension sur la classe WebClient.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:87768b30-c691-452d-8e96-21e27fe0d8e3" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;LoadRemoteFileAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;string&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; RemotePath)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientWeb = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;WebClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientWeb.GetStreamAsync(RemotePath);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;&amp;#160;&amp;#160; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Eric&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10366146" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Asynchronisme/">Asynchronisme</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+Phone+8/">Windows Phone 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WebClient/">WebClient</category></item><item><title>Tips &amp; Tricks : Dé-sérialisation d’un flux XML avec la WinRT</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/10/20/tips-amp-tricks-d-233-s-233-rialisation-d-un-flux-xml-avec-la-winrt.aspx</link><pubDate>Sat, 20 Oct 2012 05:46:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10361350</guid><dc:creator>EVBB</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10361350</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/10/20/tips-amp-tricks-d-233-s-233-rialisation-d-un-flux-xml-avec-la-winrt.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Bonjour,&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;J’ai un document XML que je voudrais dé-sérialiser à l’aide des méthodes classiques de .NET&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8a0d67d7-e3d1-40e2-8dd8-cea87deccc51" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;xml&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;version&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;1.0&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;encoding&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;utf-8&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Collection&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;MaxLevel&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;7&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;TileSize&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;256&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Format&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;jpg&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;NextItemId&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;121&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;ServerFormat&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;Default&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;http://schemas.microsoft.com/deepzoom/2009&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;  &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Items&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Id&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;0&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;N&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;0&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;images/ubiacr.xml&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Width&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Height&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Id&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;1&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;N&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;1&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;images/callofdutymw3.xml&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Width&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Height&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Id&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;2&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;N&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;2&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Source&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;images/pffmigp.xml&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;Size&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Width&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#ff0000"&gt;Height&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;=&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;600&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt; /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;I&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;La 1ère étape consiste a créer une classe en C# qui me permettra de mapper les éléments XML, en éléments plus compréhensible par mon code.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Soit j’écris cette classe manuellement, soit j’utilise l’outil &lt;strong&gt;XSD.EXE&lt;/strong&gt; pour le faire automatiquement.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Outil que vous retrouverez dans ce répertoire : &lt;strong&gt;C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;- Tout d’abord il me faut un schéma XSD que je n’ai pas. Pas de soucis nous allons le créer.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;XSD.EXE MonFichier.xml /OutPutDir:C:\Temp&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Cette ligne créée un fichier &lt;strong&gt;MonFichier.xsd&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;- Ensuite il faut créer la classe en elle même à partir de ce dernier fichier&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;XSD.EXE MonFichier.xsd /Classes /Language:CS&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Cette ligne créée un fichier &lt;strong&gt;MonFichier.cs&lt;/strong&gt; que vous pourrez incorporer dans votre projet.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Mais dans l’état actuel des choses, dans un projet Windows 8 pour le Store (WinRT), le fichier CS, ne compile pas, il faut le modifier manuellement.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;En effet l’outil y injecte des espaces de noms et des classes qui sont exclues du sous ensemble .NET utilisable avec la WinRT.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Par exemple, vous pourrez supprimer manuellement toutes les références aux espaces de noms :&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;[System.SerializableAttribute()]      &lt;br /&gt; [System.ComponentModel.DesignerCategoryAttribute(&amp;quot;code&amp;quot;)]&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Tout va bien, tout compile, vous pouvez donc dé-sérialiser votre fichier xml, avec un code du style :&lt;/font&gt; &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b16ce5be-d9e9-4964-96f5-3cee84f18755" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Helper&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HttpClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientHttp;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Helper()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;_clientHttp = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;HttpClient&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;_clientHttp.MaxResponseContentBufferSize = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.MaxValue;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; LoadRemoteFileAsync&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; RemotePath)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{            &lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;T t;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _clientHttp.GetStreamAsync(RemotePath))&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;t = DeserializeStream&amp;lt;T&amp;gt;(stream);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;catch&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ex)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;System.Diagnostics.&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Debug&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.WriteLine(ex.Message);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;throw&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; t;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; LoadLocalFileAsync&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; LocalPath)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; store = &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;KnownFolders&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.DocumentsLibrary;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;T t; ;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;using&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; store.OpenStreamForReadAsync(LocalPath))&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;t = DeserializeStream&amp;lt;T&amp;gt;(stream);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;catch&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ex)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;System.Diagnostics.&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Debug&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.WriteLine(ex.Message);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;throw&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; t;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; T DeserializeStream&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Stream&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; stream)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;XmlSerializer&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; deserializer = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;XmlSerializer&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;typeof&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(T));&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Object&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; collection = deserializer.Deserialize(stream);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (T)collection;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Mais à l’exécution l’exception&amp;#160; suivante est levée&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Unable to generate a temporary class (result=1).        &lt;br /&gt;error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Ceci est du au faite que l’outil à généré des données membres de type Jagged array comme illustré dans le code&amp;#160; suivant&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f7287337-ea8a-4863-a94d-23d1725a2917" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CollectionItemsI&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;[][] itemsIField;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;&amp;#160; &lt;font size="3"&gt;il suffit de le remplacer par exemple par une liste générique&amp;#160; &lt;/font&gt;&amp;#160; &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:75e186ac-d2fb-4ef6-bb9b-4902395748cb" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;List&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CollectionItemsI&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; itemsField;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;ul&gt;   &lt;li&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="3"&gt;Et le tout s’exécute normalement&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10361350" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/XMLSerializer/">XMLSerializer</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/XSD/">XSD</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/D_E900_s_E900_rialisation/">Désérialisation</category></item><item><title>Tips &amp; Tricks : Méthode Asynchrone et Test Unitaire</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/10/19/tips-amp-tricks-m-233-thode-asynchrone-et-test-unitaire.aspx</link><pubDate>Fri, 19 Oct 2012 07:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10360948</guid><dc:creator>EVBB</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10360948</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/10/19/tips-amp-tricks-m-233-thode-asynchrone-et-test-unitaire.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Le développement Windows 8 sur la plate-forme WinRT impose l’utilisation de méthode asynchrone, ça vous le savez .&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Le couple &lt;strong&gt;async/await&lt;/strong&gt;, nous rend de grands services dans la plus part des cas mais pas dans le cas d’un test unitaire.&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Imaginons que j’ai une méthode asynchrone en C# qui retourne un Task&amp;lt;T&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b9c15eb8-f940-4806-aff8-f4d1e9dd4ed8" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;static&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; LoadLocalFileAsync&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; LocalPath)&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Ma méthode de test pourrait alors appeler directement ma méthode asynchrone&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6f7cbc56-e851-4060-9963-116bb55fa435" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;[&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TestMethod&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;]&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;  &lt;span style="background:#ffffff;color:#000000"&gt;       &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; TestMethod1()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;           &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; t = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Helper&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.LoadLocalFileAsync&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FichesProduits&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;test.Dat&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;       &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Ce type de code, même si cela compile, ne fonctionne pas, et la méthode n’est pas reconnue comme étant une méthode de test. (Avec un coup d’ILDASM, vous comprendrez pourquoi).&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;Mais async/await ne sont que des sucres syntaxiques pour nous aider. La solution est donc de le faire à l’ancienne, ou plus précisément d’utiliser une autre syntaxe à l’aide à des méthodes &lt;strong&gt;d’extension&lt;/strong&gt; disponibles dans la TPL (Task Parallel Library).&lt;/font&gt;&lt;/p&gt; &lt;font size="3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="3"&gt;du coup ma méthode de test devient :&lt;/font&gt; &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:4c846fce-6d10-4d7b-b4d6-8d198c1f40b3" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;[&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TestMethod&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;]&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; TestMethod1()&lt;/span&gt;&lt;/li&gt; &lt;li&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;try&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; t = &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Helper&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.LoadLocalFileAsync&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FichesProduits&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;test.dat&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Wait until the asynchronous operation finish&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//You could not use the async/await pattern here&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;t.Wait(5000);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; op = t.AsAsyncOperation&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;FichesProduits&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (op.Status == &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AsyncStatus&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Completed)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//get the result only if the operation has completed&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; c = op.GetResults();&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;NotiFyTester(c);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                  &lt;span style="background:#ffffff;color:#000000"&gt;NotifyError(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;TimeoutException&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;());&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;catch&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AggregateException&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; agrEx)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Get the first exception&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;NotifyError(agrEx.InnerExceptions[0]);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;catch&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ex)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;              &lt;span style="background:#ffffff;color:#000000"&gt;NotifyError(ex);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;          &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;      &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:0c45aabe-bb4f-4b3e-b5bc-9c0f8193ac2e" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; NotifyError(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Exception&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ex)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Assert&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Fail(ex.Message);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; NotiFyTester&amp;lt;T&amp;gt;(T t)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (t== &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Assert&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Fail(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;The collection is empty !!&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}                    &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Bon test&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;Eric Vernié&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10360948" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Asynchronisme/">Asynchronisme</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Test+Unitaire/">Test Unitaire</category></item><item><title>ISupportIncrementalLoading : Loading a subsets of Data</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/10/15/isupportincrementalloading-loading-a-subsets-of-data.aspx</link><pubDate>Mon, 15 Oct 2012 15:04:04 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10359690</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10359690</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/10/15/isupportincrementalloading-loading-a-subsets-of-data.aspx#comments</comments><description>&lt;p&gt;Download the source&amp;#160; : &lt;a title="http://aka.ms/q4mity" href="http://aka.ms/q4mity"&gt;http://aka.ms/q4mity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You could find in my last post &lt;strong&gt;&lt;a title="http://aka.ms/islchg" href="http://aka.ms/islchg"&gt;http://aka.ms/islchg&lt;/a&gt;&amp;#160; &lt;/strong&gt;how to populate an collection of data in background. But in this post I would to explain how to sequentialy load a subset of data, in order to allow a &lt;strong&gt;fast &amp;amp; fluid&lt;/strong&gt; scrolling loading an huge set of data.&lt;/p&gt;  &lt;p&gt;First the class has to implement the &lt;strong&gt;ISupportIncrementalLoading&lt;/strong&gt;, &lt;strong&gt;IList&lt;/strong&gt; and &lt;strong&gt;INofifyCollectionChanged.&lt;/strong&gt; For a simplier sample, it’s possible to inherit from the &lt;strong&gt;ObservableCollection&amp;lt;T&amp;gt;&lt;/strong&gt; class instead of the latter two interfaces&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d08fdcb1-2991-439f-9eea-2954ba2292a2" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 300px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;IncrementalLoadingCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;T&amp;gt; : &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;T&amp;gt;, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ISupportIncrementalLoading&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The CCTOR take a delegate as an argument, in order to retrieve a subset of data. &lt;strong&gt;This is what you will have to implement&lt;/strong&gt;.&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7a696283-1d3e-4010-aa7f-623981b3bbf9" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 300px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//delegate which populate the next items&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Func&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;CancellationToken&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Task&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;T&amp;gt;&amp;gt;&amp;gt; _func;&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;    &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:897fe1cf-16e6-4ac3-9dd5-7042124d60f2" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 300px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; IncrementalLoadingCollection(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Func&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;CancellationToken&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Task&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;T&amp;gt;&amp;gt;&amp;gt; func, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; maxItems)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_func = func;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (maxItems == 0) &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//Infinite&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_maxItems = maxItems;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;ISupportIncrementalLoading&lt;/h2&gt;  &lt;p&gt;Two methods to implement&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HasMoreItems&lt;/strong&gt;, is invoked by the control (GridView or ListView), to know if more items has to be loaded.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6437857d-dc68-4b7b-98fd-7af4f17d2ee3" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 300px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; HasMoreItems&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (_cts.IsCancellationRequested)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (_isInfinite)&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Count &amp;lt; _maxItems;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;&lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt;, is invoked with the variable &lt;strong&gt;count &lt;/strong&gt; argument. This argument is calculated according to several factors :&lt;/p&gt;  &lt;p&gt;First, the control need to know the number of objects to virtualize. So &lt;strong&gt;count is always equal 1&lt;/strong&gt; for the first call to the method. &lt;/p&gt;  &lt;p&gt;Then, for an object with a size of 480*680, on a 15 inch screen, with a 1920*1080 resolution, XAML virtualize 24 objects (4 visible objects as you can see on the following picture) ,&lt;strong&gt; count=24&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6746.picture1_5F00_thumb2_5F00_32AF094A.png"&gt;&lt;img title="picture1_thumb[2]" style="margin: 0px; border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="picture1_thumb[2]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/5187.picture1_5F00_thumb2_5F00_thumb_5F00_6502B6FC.png" width="837" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By the way, using the &lt;strong&gt;DataFetchSize&lt;/strong&gt; and &lt;strong&gt;IncrementalLoadingThreshold&lt;/strong&gt; attributes, we are able to bypass this value for the same config.&lt;/p&gt;  &lt;p&gt;With a &lt;strong&gt;DataFetchSize=1,&lt;/strong&gt;&amp;#160; the &lt;strong&gt;count is equal 16&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With &lt;strong&gt;DataFetchSize=5 count=40 &lt;/strong&gt;and so on.&lt;/p&gt;  &lt;p&gt;With&amp;#160; &lt;strong&gt;IncrementalLoadingThreshold=10, LoadMoreItemsAsync &lt;/strong&gt;will be call 3 times with 120 virtualized objects (3*40)&lt;/p&gt;  &lt;p&gt;It’s up to you to play with these attributes, in order to find the more accurate setting for your application.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With the code attach with this post you could play with sliders to see what’s happened when you use different values.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6253.apbar_5F00_thumb1_5F00_175664AF.png"&gt;&lt;img title="apbar_thumb[1]" style="border: 0px currentcolor; display: inline; background-image: none;" border="0" alt="apbar_thumb[1]" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/3441.apbar_5F00_thumb1_5F00_thumb_5F00_5647E54A.png" width="857" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now go deeper in the&amp;#160; &lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The return parameter is an &lt;strong&gt;IAsyncOperation&amp;lt;LoadMoreItemsResult&amp;gt;.&lt;/strong&gt; Interface. This interface, is create from the &lt;strong&gt;AsyncInfo.Run&lt;/strong&gt; available in the &lt;strong&gt;System.Runtime.InteropServices.WindowsRuntime&lt;/strong&gt;, with a lambda expression as a parameter. This lambda call the &lt;strong&gt;InternalLoadMoreItemsAsync()&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The IntenalLoadMoreItemsAsync() goals are :&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Calculate the count of subset data (numberOfItemsTogenerate). &lt;/li&gt;    &lt;li&gt;Invoke the CCTOR’s&amp;#160;&amp;#160; _&lt;strong&gt;func&lt;/strong&gt; delegate&amp;#160; argument (this is what you have to implement as we can see later), delegate wich populate an intermediate data list.&lt;/li&gt;    &lt;li&gt;Agregate the intermediate list with the current list&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bb1c7af0-4bdb-478a-8d0e-ce589d1b5cf1" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 400px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; Windows.Foundation.&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;IAsyncOperation&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt; LoadMoreItemsAsync(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; count)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;AsyncInfo&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Run((cts) =&amp;gt; InternalLoadMoreItemsAsync(cts, count));&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;async&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Task&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt; InternalLoadMoreItemsAsync(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;CancellationToken&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; cts, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; count)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;T&amp;gt; intermediate = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_cts = cts;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;var&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; baseIndex = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Count;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; numberOfitemsTogenerate = 0;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (!_isInfinite)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (baseIndex + count &amp;lt; _maxItems)&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;numberOfitemsTogenerate = count;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//take the last items&lt;/span&gt;&lt;/li&gt;          &lt;li&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;numberOfitemsTogenerate = _maxItems - (&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;)(baseIndex);&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;numberOfitemsTogenerate = count;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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;&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;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;intermediate = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;await&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _func(cts, numberOfitemsTogenerate);&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;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (intermediate.Count == 0) &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//no more items stop the incremental loading &lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_maxItems = (&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Count;&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; &lt;/span&gt;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;intermediate.AddTo&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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; &lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { Count = (&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;)intermediate.Count };&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; &lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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; &lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;    &lt;h2&gt;Using IncrementalCollection&amp;lt;T&amp;gt;&lt;/h2&gt;  &lt;p&gt;In order to use this collection, you just has to create your own data model.&lt;/p&gt;  &lt;p&gt;Example &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a56d6448-0ca8-4cbd-bd51-c9bae7764852" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 500px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; : &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;BindableBase&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Uri&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _uri;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Uri&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; UriPath&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _uri; }&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _uri, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;); }&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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; &lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _title;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; Title&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _title; }&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _title, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;); }&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//Use to show the download progress&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _progress;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; Progress&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _progress; }&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _progress, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;); }&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//Flag to know if the picture come from a remote source&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Boolean&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _isRemote;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Boolean&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; IsRemote&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _isRemote; }&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _isRemote, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;); }&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _toolTip;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; ToolTip&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _toolTip; }&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;ref&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; _toolTip, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;value&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;); }&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&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; &lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Then implement an algorithm wich populate the data.&lt;/p&gt;  &lt;p&gt;In this sample, I pushed 9561 pictures on Azure ( &lt;a title="http://devosaure.blob.core.windows.net/images/" href="http://devosaure.blob.core.windows.net/images/"&gt;http://devosaure.blob.core.windows.net/images/&lt;/a&gt;) and build a really simple algorithm based on the picture name .&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:612817ed-6a16-4a3d-a568-a90f5527fa00" class="class" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;   &lt;div class="le-pavsc-container"&gt;     &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt;      &lt;div style="background: rgb(221, 221, 221); overflow: auto; max-height: 500px;"&gt;       &lt;ol style="background: rgb(255, 255, 255); margin: 0px 0px 0px 2.5em; padding: 0px 0px 0px 5px;"&gt;         &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;private&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; GetAzureBlobImagesAsync()&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; pageNumber = 1;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_data = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;IncrementalLoadingCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt;((&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;CancellationToken&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; cts, &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; count) =&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Task&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Run&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;gt;(() =&amp;gt;&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//***************************************&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//Your code start here&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;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt; intermediateList = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&amp;gt;();&lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;uint&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; i = pageNumber; i &amp;lt; pageNumber + count; i++)&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; FileName = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Format(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;&amp;quot;UrzaGatherer ({0}).jpg&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, i.ToString());&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; RemotePath = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;String&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;.Format(&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(163, 21, 21);"&gt;@&amp;quot;http://devosaure.blob.core.windows.net/images/{0}&amp;quot;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;, FileName);&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; item = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;DataModel&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;item.IsRemote = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;item.Title = FileName;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;item.UriPath = &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(43, 145, 175);"&gt;Uri&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;(RemotePath);&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;intermediateList.Add(item);&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;pageNumber += count;&lt;/span&gt;&lt;/li&gt;          &lt;li&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt; intermediateList;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&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 style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 128, 0);"&gt;//*************and finish here**************************&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;});&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}, 9651);&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&lt;/li&gt;          &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;_data.CollectionChanged += data_CollectionChanged;&lt;/span&gt;&lt;/li&gt;          &lt;li class="le-pavsc-even"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;itemsGridViewIncremental.DataContext = _data;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/li&gt;          &lt;li&gt;&lt;span style="background: rgb(255, 255, 255); color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/li&gt;       &lt;/ol&gt;     &lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You could find in the source code (&lt;a title="http://aka.ms/q4mity" href="http://aka.ms/q4mity"&gt;http://aka.ms/q4mity&lt;/a&gt;) : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A Bing sample&amp;#160; (You have to provide your own Bing APPID &lt;a title="https://ssl.bing.com/webmaster/developers/createapp.aspx" href="https://ssl.bing.com/webmaster/developers/createapp.aspx"&gt;https://ssl.bing.com/webmaster/developers/createapp.aspx&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;A File sample wich load local pictures (pictures you have to copy in the C:\Users\&lt;strong&gt;[Your User Name]&lt;/strong&gt;\AppData\Local\Packages\ericvIncremental_nwdczr7kjtdqt\LocalState&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To play with this sample, click right to show the AppBar, and select the button you want.&lt;/p&gt;  &lt;p&gt;You will notice it’s possible to disable the virtualisation, with the &lt;strong&gt;IncrementalLoadingTrigger = IncrementalLoadingTrigger.None. &lt;/strong&gt;In&lt;strong&gt; &lt;/strong&gt;this case the GridView doesn’t call the LoadMoreItemsAsync() method but it’s possible to invoke manually the LoadMoreItems depending on what you want for you application.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Eric Vernié&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10359690" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/XAML/">XAML</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/LoadMoreItemsAsync/">LoadMoreItemsAsync</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/ISupportIncrementalLoading/">ISupportIncrementalLoading</category></item><item><title>Chargement d’un large volume de données : Gestion de ISupportIncrementalLoading</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/10/15/chargement-d-un-large-volume-de-donn-233-es-gestion-de-isupportincrementalloading.aspx</link><pubDate>Mon, 15 Oct 2012 13:12:05 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10359659</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10359659</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/10/15/chargement-d-un-large-volume-de-donn-233-es-gestion-de-isupportincrementalloading.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Téléchargez le code source : &lt;a title="http://aka.ms/q4mity" href="http://aka.ms/q4mity"&gt;http://aka.ms/q4mity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dans un précédant billet &lt;strong&gt;&lt;a title="http://aka.ms/islchg" href="http://aka.ms/islchgmais"&gt;http://aka.ms/islchg&lt;/a&gt;&lt;/strong&gt;, j’expliquais qu’il est possible de charger les données en arrière plan en évitant de figer l’interface utilisateur, précepte fort du développement Windows 8.&lt;/p&gt;  &lt;p&gt;L’idée de ce billet c’est d’aller un peu plus loin et de fournir une collection générique en C# (&lt;strong&gt;IncrementalLoadingCollection&lt;/strong&gt;) , qui charge les données de manière incrémentale comme son nom l’indique afin de permettre un défilement &lt;strong&gt;d’un large volume&lt;/strong&gt; de données de manière &lt;strong&gt;fast &amp;amp; fluid.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Pour ce faire, il faut que la classe implémente entre autre l’interface &lt;strong&gt;ISupportIncrementalLoading&lt;/strong&gt;, qui combinée avec les attributs &lt;strong&gt;DataFetchSize&lt;/strong&gt; et &lt;strong&gt;IncrementalLoadingThreshold&lt;/strong&gt; permettent aux contrôles &lt;strong&gt;GridView&lt;/strong&gt; ou &lt;strong&gt;ListView&lt;/strong&gt;, ou tout autres contrôles qui implémentent &lt;strong&gt;ListViewBase&lt;/strong&gt; de charger séquentiellement des données&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Il faut également que cette classe implémente &lt;strong&gt;IList&lt;/strong&gt; et &lt;strong&gt;INofifyCollectionChanged. &lt;/strong&gt;Mais afin de simplifier ce billet, dans notre exemple nous hériterons directement de la classe &lt;strong&gt;ObservableCollection&amp;lt;T&amp;gt; ,&lt;/strong&gt; (Dans le code fournit à cette adresse &lt;a title="http://aka.ms/q4mity" href="http://aka.ms/q4mity"&gt;http://aka.ms/q4mity&lt;/a&gt;, vous retrouverez un exemple qui implémente ces deux dernières interfaces)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d08fdcb1-2991-439f-9eea-2954ba2292a2" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IncrementalLoadingCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ISupportIncrementalLoading&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Le constructeur de notre classe prend comme paramètre un délégué, qui sera exécuté afin de retrouver un sous ensemble des données. Il prend comme paramètre un &lt;strong&gt;CancellationToken&lt;/strong&gt; afin de pouvoir arrêter le chargement, et une liste de type &lt;strong&gt;ObservableCollection&lt;/strong&gt; encapsulée dans une &lt;strong&gt;Task&lt;/strong&gt;    &lt;br /&gt;    &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7a696283-1d3e-4010-aa7f-623981b3bbf9" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//delegate which populate the next items        &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Func&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CancellationToken&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt;&amp;gt;&amp;gt; _func;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:897fe1cf-16e6-4ac3-9dd5-7042124d60f2" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; IncrementalLoadingCollection(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Func&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CancellationToken&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt;&amp;gt;&amp;gt; func, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; maxItems)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;_func = func;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (maxItems == 0) &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Infinite&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;true&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;_maxItems = maxItems;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Gestion de ISupportIncrementalLoading&lt;/h2&gt;  &lt;p&gt;Pour gérer cette interface, il faut implémenter deux méthodes :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;HasMoreItems&lt;/strong&gt;, qui comme sont nom l’indique est invoquée par le contrôle, pour savoir si il doit déclencher le chargement de plus d’éléments. &lt;/p&gt;  &lt;p&gt;Voici un exemple de cette méthode qui gère un nombre d’éléments fini/ou infini, et qui permet d’arrêter le chargement si un arrêt est demandé.&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:6437857d-dc68-4b7b-98fd-7af4f17d2ee3" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;bool&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; HasMoreItems&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (_cts.IsCancellationRequested)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (_isInfinite)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;true&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Count &amp;lt; _maxItems;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;&lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt;, est invoquée par le contrôle qui passe comme paramètre la variable &lt;strong&gt;count&lt;/strong&gt;, et qui est calculé en fonction de plusieurs &lt;strong&gt;facteurs&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Tout d’abord, le contrôle à besoin de connaitre le nombre d’objets visuels à afficher et à virtualiser.. Pour cela il exécute toujours&amp;#160; une 1ere fois la méthode &lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt; avec un &lt;strong&gt;count=1&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ensuite, pour un objet qui fera 480*680, sur un écran 15” de résolution 1920*1080, le nombre d’objet affiché (Visible à l’écran) sera de 4 et le nombre virtualisé de 20, comme sur l’image suivante : &lt;strong&gt;count =24&lt;/strong&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/0525.picture1_5F00_18A12A8E.png"&gt;&lt;img title="picture1" style="display: inline; background-image: none;" border="0" alt="picture1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/6567.picture1_5F00_thumb_5F00_4FF715EF.png" width="837" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Les appels successifs seront dans notre cas tous avec un &lt;strong&gt;count=24&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Maintenant il est possible d’outrepasser cette valeur en utilisant les attributs du contrôle &lt;strong&gt;DataFetchSize&lt;/strong&gt; et/ou &lt;strong&gt;IncrementalLoadingThreshold&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Par exemple sur la même configuration , un &lt;strong&gt;DataFetchSize=1,&lt;/strong&gt; donne une virtualisation &lt;strong&gt;de count=16&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;un &lt;strong&gt;DataFetchSize=5&lt;/strong&gt; donne une virtualisation de &lt;strong&gt;count=40&lt;/strong&gt;, et ainsi de suite…&lt;/p&gt;  &lt;p&gt;L’attribut &lt;strong&gt;IncrementalLoadingThreshold&lt;/strong&gt;, quand à lui indiquera au contrôle d’appeler X fois la méthode &lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt; lors du 1er chargement des données.&lt;/p&gt;  &lt;p&gt;Par exemple sur la même configuration, un &lt;strong&gt;DataFetchSize=5 et IncrementalLoadingThreshold=10&lt;/strong&gt; donne toujours un count=40 mais exécuté 3 fois d’affiler soit &lt;strong&gt;120&lt;/strong&gt; éléments virtualisés. Ensuite lors du défilement, le contrôle redemandera des données avec un incrément de 40.&lt;/p&gt;  &lt;p&gt;C’est à vous de jouer sur ces différentes valeurs pour trouver le meilleur compromis. (Dans l’exemple fournit vous pourrez jouer avec des curseurs pour constater les différences de chargement comme illustré sur la figure suivante : )&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/2337.apbar_5F00_7EACA8C4.png"&gt;&lt;img title="apbar" style="display: inline; background-image: none;" border="0" alt="apbar" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/8117.apbar_5F00_thumb_5F00_44BD65D8.png" width="857" height="64" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Détaillons maintenant un peu la méthode &lt;strong&gt;LoadMoreItemsAsync&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Vous pouvez constater qu’elle retourne une Interface &lt;strong&gt;IAsyncOperation&amp;lt;LoadMoreItemsResult&amp;gt;.&lt;/strong&gt; Pour créer cette interface j’utilise ici la méthode &lt;strong&gt;AsyncInfo.Run&lt;/strong&gt; qui m’est fournit dans l’espace de nom&amp;#160; &lt;strong&gt;System.Runtime.InteropServices.WindowsRuntime&lt;/strong&gt;, en lui passant comme paramètre une expression Lambda, qui elle même appel une méthode interne &lt;strong&gt;InternalLoadMoreItemsAsync()&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cette dernière à pour but de calculer si besoin est le nombre (numberOfItemsTogenerate) de données à charger en fonction de la variable count.&lt;/p&gt;  &lt;p&gt;Puis d’exécuter le délégué (_&lt;strong&gt;func&lt;/strong&gt;) qui est passé au constructeur de la classe afin de générer une liste intermédiaire&amp;#160; de données. C’est ce délégué &lt;strong&gt;que vous aurez à implémenter&lt;/strong&gt; afin de retrouver de manière incrémentale les données, comme nous le verrons plus tard. &lt;/p&gt;  &lt;p&gt;La liste intermédiaire est en fin agrégée avec la liste courante qui constituera notre liste finale.&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bb1c7af0-4bdb-478a-8d0e-ce589d1b5cf1" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 400px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Windows.Foundation.&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IAsyncOperation&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; LoadMoreItemsAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; count)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{                       &lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;AsyncInfo&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Run((cts) =&amp;gt; InternalLoadMoreItemsAsync(cts, count));                        &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}      &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;async&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; InternalLoadMoreItemsAsync(&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CancellationToken&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; cts, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; count)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;           &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;T&amp;gt; intermediate = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;null&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;          &lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;_cts = cts;     &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;var&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; baseIndex = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Count;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; numberOfitemsTogenerate = 0;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (!_isInfinite)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (baseIndex + count &amp;lt; _maxItems)&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        &lt;span style="background:#ffffff;color:#000000"&gt;numberOfitemsTogenerate = count;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//take the last items&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                        &lt;span style="background:#ffffff;color:#000000"&gt;numberOfitemsTogenerate = _maxItems - (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)(baseIndex);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;numberOfitemsTogenerate = count;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}                                 &lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;intermediate = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;await&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _func(cts, numberOfitemsTogenerate);              &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;if&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (intermediate.Count == 0) &lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//no more items stop the incremental loading &lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;_maxItems = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Count;                    &lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;_isInfinite = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;false&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                    &lt;span style="background:#ffffff;color:#000000"&gt;intermediate.AddTo&amp;lt;T&amp;gt;(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;}                   &lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;LoadMoreItemsResult&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { Count = (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;)intermediate.Count };                   &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}             &lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;h2&gt;Utilisation de la classe IncrementalCollection&amp;lt;T&amp;gt;&lt;/h2&gt;  &lt;p&gt;pour utiliser cette classe il vous suffira de créer votre modèle de données qui sera lié à votre XAML. par exemple : &lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a56d6448-0ca8-4cbd-bd51-c9bae7764852" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;class&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; : &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;BindableBase&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _uri;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; UriPath&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _uri; }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _uri, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}             &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _title;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Title&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _title; }&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _title, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Use to show the download progress&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _progress;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;int&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; Progress&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _progress; }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _progress, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Flag to know if the picture come from a remote source        &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Boolean&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _isRemote;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Boolean&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; IsRemote&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _isRemote; }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _isRemote, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _toolTip;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;public&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; ToolTip&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;get&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _toolTip; }&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;set&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; { &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;this&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.SetProperty(&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;ref&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; _toolTip, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;value&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;); }&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;}               &lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Puis d’implémenter l’algorithme qui retrouve les données.&lt;/p&gt;  &lt;p&gt;Dans notre exemple, j’ai copié 9561 images sur un blob Azure dont l’adresse est &lt;a title="http://devosaure.blob.core.windows.net/images/" href="http://devosaure.blob.core.windows.net/images/"&gt;http://devosaure.blob.core.windows.net/images/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Je passe au constructeur de la classe IncrementalCollection, une expression Lanbda qui implémente un algorithme très simple et basé sur le nom des images qui va de UrzaGatherer (1).Jpg à UrzaGatherer (9561).jpg. J’incrémente une variable pageNumber, qui me permet de retrouver les images en fonction du nombre count passé en paramètre.&lt;/p&gt;  &lt;p&gt;puis je construit une liste intermédiaire que je retourne et qui sera utilisé par la méthode LoadMoreItemsAsync. N’oubliez pas que , que c’est cette dernière qui exécutera cette lambda.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:612817ed-6a16-4a3d-a568-a90f5527fa00" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt; &lt;div class="le-pavsc-container"&gt; &lt;div class="le-pavsc-titleblock"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol start="1" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;private&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;void&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; GetAzureBlobImagesAsync()&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; pageNumber = 1;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;_data = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;IncrementalLoadingCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;((&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;CancellationToken&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; cts, &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; count) =&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Task&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Run&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;&amp;gt;(() =&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//***************************************&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//Your code start here                &lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt; intermediateList = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;ObservableCollection&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;&amp;gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;for&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; (&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;uint&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; i = pageNumber; i &amp;lt; pageNumber + count; i++)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;{&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; FileName = &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Format(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;&amp;quot;UrzaGatherer ({0}).jpg&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, i.ToString());&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; RemotePath = &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;String&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;.Format(&lt;/span&gt;&lt;span style="background:#ffffff;color:#a31515"&gt;@&amp;quot;http://devosaure.blob.core.windows.net/images/{0}&amp;quot;&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;, FileName);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; item = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;DataModel&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;();&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;item.IsRemote = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;true&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;item.Title = FileName;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;item.UriPath = &lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;new&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; &lt;/span&gt;&lt;span style="background:#ffffff;color:#2b91af"&gt;Uri&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt;(RemotePath);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;                &lt;span style="background:#ffffff;color:#000000"&gt;intermediateList.Add(item);&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;pageNumber += count;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#0000ff"&gt;return&lt;/span&gt;&lt;span style="background:#ffffff;color:#000000"&gt; intermediateList;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;            &lt;span style="background:#ffffff;color:#000000"&gt;&lt;/span&gt;&lt;span style="background:#ffffff;color:#008000"&gt;//*************and finish here**************************      &lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="background:#ffffff;color:#000000"&gt;});&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;}, 9651);&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;_data.CollectionChanged += data_CollectionChanged;&lt;/span&gt;&lt;/li&gt; &lt;li class="le-pavsc-even"&gt;    &lt;span style="background:#ffffff;color:#000000"&gt;itemsGridViewIncremental.DataContext = _data;          &lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="background:#ffffff;color:#000000"&gt;}&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;    &lt;p&gt;Vous retrouverez dans le code source fournit (&lt;a title="http://aka.ms/q4mity" href="http://aka.ms/q4mity"&gt;http://aka.ms/q4mity&lt;/a&gt;), un exemple autour des APIS Bing (Vous devrez alors fournir votre propre APPID (&lt;a title="https://ssl.bing.com/webmaster/developers/createapp.aspx" href="https://ssl.bing.com/webmaster/developers/createapp.aspx"&gt;https://ssl.bing.com/webmaster/developers/createapp.aspx&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Ainsi qu’un code qui permet de charger des fichiers images en local. Pour ce dernier exercice vous devrez copier des fichiers images dans le répertoire suivant de l’application :C:\Users\&lt;strong&gt;[Votre nom d’utilisateur]&lt;/strong&gt;\AppData\Local\Packages\ericvIncremental_nwdczr7kjtdqt\LocalState&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pour exécuter le code fournit, il suffit après le chargement de l’application, cliquez droit sur la souris pour faire apparaitre l’Appbar qui contient les commandes a exécuter.&lt;/p&gt;  &lt;p&gt;Vous noterez qu’il est possible de débrayer le chargement incrémental en cliquant sur la case à cocher&amp;#160; Virtualisation, qui positionne par liaison de donnée l’attribut &lt;strong&gt;IncrementalLoadingTrigger = IncrementalLoadingTrigger.None&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Dans ce dernier cas, le contrôle n’exécute pas la méthode LoadMoreItemsAsync(), c’est à vous de le faire explicitement. Ce scénario peut être intéressant, lorsque vous souhaitez vous même gérer le chargement incrémentale.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Eric Vernié&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10359659" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/C_2300_/">C#</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/WinRT/">WinRT</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/XAML/">XAML</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/LoadMoreItemsAsync/">LoadMoreItemsAsync</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/ISupportIncrementalLoading/">ISupportIncrementalLoading</category><category domain="http://blogs.msdn.com/b/devosaure/archive/tags/ObservableCollection/">ObservableCollection</category></item><item><title>Cook your App</title><link>http://blogs.msdn.com/b/devosaure/archive/2012/09/24/cook-your-app.aspx</link><pubDate>Mon, 24 Sep 2012 06:36:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10352557</guid><dc:creator>EVBB</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/devosaure/rsscomments.aspx?WeblogPostID=10352557</wfw:commentRss><comments>http://blogs.msdn.com/b/devosaure/archive/2012/09/24/cook-your-app.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Si vous êtes un roi du développement, venez vous essayer au concours &lt;a href="http://www.microsoft.com/france/msdn/generation-app/concours.aspx"&gt;Cook You App&lt;/a&gt; et gagner un voyage à la conférence //BUILD/ à Redmond.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/france/msdn/generation-app/concours.aspx"&gt;&lt;img title="cookYourApp" style="display: inline; background-image: none;" border="0" alt="cookYourApp" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-55-metablogapi/5618.cookYourApp_5F00_716FF3C9.png" width="654" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Eric&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10352557" width="1" height="1"&gt;</description></item></channel></rss>