{"id":707,"date":"2014-08-26T00:37:18","date_gmt":"2014-08-25T22:37:18","guid":{"rendered":"http:\/\/dev.bratched.fr\/fr\/?p=707"},"modified":"2014-08-26T00:37:18","modified_gmt":"2014-08-25T22:37:18","slug":"reglage-du-zoom-du-scrollviewer-en-windows-et-wp8-1","status":"publish","type":"post","link":"https:\/\/bratched.com\/fr\/2014\/08\/26\/reglage-du-zoom-du-scrollviewer-en-windows-et-wp8-1\/","title":{"rendered":"R\u00e9glage du zoom du Scrollviewer en universal app (w10, Wp8.1)"},"content":{"rendered":"<h1>Zoom et Scrollviewer (avant)<\/h1>\n<p>Pour initialiser le zoom du Scrollviewer, il \u00e9tait possible\u00a0avec Windows 8.0 de d\u00e9finir directement le niveau de zoom d\u00e9sir\u00e9\u00a0avec l&rsquo;instruction :<\/p>\n<pre class=\"lang:default decode:true \">scrollViewer.ZoomToFactor(3.0F);<\/pre>\n<p>pour avoir un zoom de 300% par exemple.<\/p>\n<p>De m\u00eame pour se d\u00e9placer dans le scrollviewer, il fallait \u00e9galement utiliser<\/p>\n<pre class=\"lang:default decode:true \">scrollViewer.ScrollToHorizontalOffset(100);\nscrollViewer.ScrollToVerticalOffset(200);\n<\/pre>\n<p>Ces 3 m\u00e9thodes sont depuis peu marqu\u00e9es comme deprecated, et bien que le code continue \u00e0 fonctionner, il est fortement recommander d&rsquo;utiliser l&rsquo;instruction ChangeView \u00e0 la place.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/08\/Scrollviewer_ZoomToFactor.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-708\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/08\/Scrollviewer_ZoomToFactor.png\" alt=\"Scrollviewer_ZoomToFactor\" width=\"686\" height=\"136\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/08\/Scrollviewer_ZoomToFactor.png 686w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/08\/Scrollviewer_ZoomToFactor-300x59.png 300w\" sizes=\"(max-width: 686px) 100vw, 686px\" \/><\/a>La syntaxe est plus simple \u00e0 priori :<\/p>\n<p><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/windows.ui.xaml.controls.scrollviewer.changeview(v=win.10).aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/apps\/windows.ui.xaml.controls.scrollviewer.changeview(v=win.10).aspx<\/a><\/p>\n<pre class=\"lang:default decode:true \">var Succes = scrollViewer.ChangeView(100, 200, 0.3F, false);<\/pre>\n<p>La vue est ici positionn\u00e9e avec 30% de zoom\u00a0avec un scroll\u00a0horizontal de\u00a0100 pixels\u00a0200 vertical.<\/p>\n<p>Le dernier param\u00e8tre permet de d\u00e9sactiver l&rsquo;animation de zoom.<\/p>\n<p>L&rsquo;ensemble retourne true si le zoom a eu lieu.<\/p>\n<p>il est \u00e9galement possible de ne faire qu&rsquo;un zoom sans d\u00e9placement en rempla\u00e7ant les valeurs inutils\u00e9es par null<\/p>\n<pre class=\"lang:default decode:true \">var Succes = scrollViewer.ChangeView(null, null, 0.3F, false);<\/pre>\n<h1>Le probl\u00e8me<\/h1>\n<p>Pourtant lorsque cette instruction est utilis\u00e9e dans un projet WP8.1&#8230; rien ne se passe!<\/p>\n<p><!--more--><\/p>\n<p>Apr\u00e8s de multiples recherches, il semble qu&rsquo;il s&rsquo;agisse d&rsquo;un probl\u00e8me de synchonisation entre l&rsquo;UI et ce composant Scrollviewer.<\/p>\n<p>L&rsquo;astuce pour utiliser correctement cette instruction est de passer par un timer (de 100ms) et d&rsquo;ex\u00e9cuter cette instruction en d\u00e9calage.<\/p>\n<p>L&rsquo;utilisation du timer (par un thread non UI)\u00a0va \u00e9galement imposer de revenir dans le Thread UI pour lancer la commande. Ce qui au final nous fait un code un peu spaghetti, pas tr\u00e8s classe, mais qui fonctionne !<\/p>\n<pre class=\"lang:default decode:true  \">Windows.System.Threading.ThreadPoolTimer.CreateTimer(async (source) =&gt;\n{\n       await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =&gt;\n       {\n             var Succes = scrollViewer.ChangeView(null, null, 0.3F, false);\n       })\n       , TimeSpan.FromMilliseconds(100));\n<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zoom et Scrollviewer (avant) Pour initialiser le zoom du Scrollviewer, il \u00e9tait possible\u00a0avec Windows 8.0 de d\u00e9finir directement le niveau de zoom d\u00e9sir\u00e9\u00a0avec l&rsquo;instruction : scrollViewer.ZoomToFactor(3.0F); pour avoir un zoom de 300% par exemple. De m\u00eame pour se d\u00e9placer dans le scrollviewer, il fallait \u00e9galement utiliser scrollViewer.ScrollToHorizontalOffset(100); scrollViewer.ScrollToVerticalOffset(200); Ces 3 m\u00e9thodes sont depuis peu marqu\u00e9es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,97,62,63],"tags":[68,69,94,95,89,96,58],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/707"}],"collection":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/comments?post=707"}],"version-history":[{"count":0,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/707\/revisions"}],"wp:attachment":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/media?parent=707"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/categories?post=707"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/tags?post=707"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}