{"id":732,"date":"2014-09-13T14:54:48","date_gmt":"2014-09-13T12:54:48","guid":{"rendered":"http:\/\/dev.bratched.fr\/fr\/?p=732"},"modified":"2014-09-13T14:54:48","modified_gmt":"2014-09-13T12:54:48","slug":"migration-du-longlistselector-en-universal-apps","status":"publish","type":"post","link":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/","title":{"rendered":"Migration du LongListSelector en Universal Apps"},"content":{"rendered":"<p>Apr\u00e8s les <a title=\"Migration vers 8.1 : Les fichiers de ressources resw\" href=\"http:\/\/dev.bratched.fr\/fr\/migration-vers-8-1-les-fichiers-de-ressources-resw\/\">ressources destin\u00e9es aux\u00a0traductions<\/a>, nous continuons le tour d&rsquo;horizon des \u00e9l\u00e9ments n\u00e9cessaires\u00a0pour migrer d&rsquo;un projet Windows Phone 8.0 en Universal apps.<\/p>\n<p><a href=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/09\/LongListSelector-WP81.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-735\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/09\/LongListSelector-WP81.png\" alt=\"LongListSelector WP81\" width=\"190\" height=\"317\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/09\/LongListSelector-WP81.png 480w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/09\/LongListSelector-WP81-180x300.png 180w\" sizes=\"(max-width: 190px) 100vw, 190px\" \/><\/a><\/p>\n<p>Le LongListSelector est un \u00e9l\u00e9ment de liste tr\u00e8s souvent utilis\u00e9 : Il est apparu en 8.0 mais existait d\u00e9j\u00e0 dans la version 7.0 sous forme d&rsquo;un composant tiers du Windows Phone Toolkit.<\/p>\n<p>Avec les Universal Apps, ce composant dispara\u00eet au profit d&rsquo;autres composants d\u00e9j\u00e0 pr\u00e9sents dans Windows 8.0 : Listbox, ListView, GridView.<\/p>\n<h1>Liste\u00a0Simple<\/h1>\n<p>Le cas le plus simple est lorsque LongListSelector est utilis\u00e9 en mode simple Liste (sans regroupement).<\/p>\n<p>Exemple de code :<\/p>\n<pre class=\"lang:default decode:true\">&lt;phone:LongListSelector\n   ItemsSource=\"{Binding AllItemsViewModel}\"    \n   IsGroupingEnabled=\"False\"\n   ItemTemplate=\"{StaticResource ItemTemplate}\" \/&gt;\n<\/pre>\n<p><!--more--><\/p>\n<p>Le IsgroupingEnabled=\u00a0\u00bbFalse\u00a0\u00bb indique ici qu&rsquo;il n&rsquo;y a pas de regroupement des item.<\/p>\n<ul>\n<li>Le templateItem met en forme les donn\u00e9es. La migration peut se faire tr\u00e8s facilement en rempla\u00e7ant le LongListSelector par un ListView ou m\u00eame un Listbox :<\/li>\n<\/ul>\n<pre class=\"lang:default decode:true\">&lt;ListView\n  ItemsSource=\"{Binding AllItemsViewModel}\"    \n  ItemTemplate=\"{StaticResource ItemTemplate}\" \/&gt;\n\n<\/pre>\n<p>Le ItemTemplate n&rsquo;a pas besoin d&rsquo;\u00eatre migr\u00e9 et reste identique.<\/p>\n<h1>Liste avec\u00a0regroupement<\/h1>\n<h2>Le regroupement et le IGrouping<\/h2>\n<p>Pour rappel, le regroupement des \u00e9l\u00e9ments passe par un objet ViewModel de type IGrouping&lt;KeyGroup, ItemViewModel&gt;.<\/p>\n<p>Ce regroupement est \u00e9galement n\u00e9cessaire pour un projet WP8.0 et Silverlight 8.1. La partie ci dessous est indispensable quelque soir le contr\u00f4le XAML utilis\u00e9 (WP8; WP8.1 Silverlight et WP8.1 XAML)<\/p>\n<p>Je prends l&rsquo;exemple tr\u00e8s simpliste d&rsquo;une liste de message que l&rsquo;on souhaite regrouper par Date.<\/p>\n<pre class=\"lang:default decode:true\">public class MessageViewModel\n{\n    public string Title { get; set; }\n    public DateTime FullDate { get; set; }\n    public DateTime DayDate { get { return FullDate.Date; } }\n}\n<\/pre>\n<p>Une liste poss\u00e8de d\u00e9j\u00e0 des messages :<\/p>\n<pre class=\"lang:default decode:true \">private List&lt;MessageViewModel&gt; _messages = new List&lt;MessageViewModel&gt;();<\/pre>\n<p>Pour g\u00e9rer un regroupement, il faut impl\u00e9menter une classe de type\u00a0IGrouping&lt;KeyGroup, ItemViewModel&gt;<\/p>\n<p>Ce qui peut \u00eatre d\u00e9fini en utilisant toujours ce m\u00eame mod\u00e8le :<\/p>\n<pre class=\"lang:default decode:true\">public class Group&lt;Tkey, TElement&gt; : List&lt;TElement&gt;\n{\n    public Tkey Key { get; set; }\n    public Group(IGrouping&lt;Tkey, TElement&gt; group)\n        : base(group)\n    {\n        this.Key = group.Key;\n    }\n\n    public override bool Equals(object obj)\n    {\n        Group&lt;Tkey, TElement&gt; that = obj as Group&lt;Tkey, TElement&gt;;\n        return (that != null) &amp;&amp; (this.Key.Equals(that.Key));\n    }\n\n    public override int GetHashCode()\n    {\n        return Key.GetHashCode();\n    }\n\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Exemple d&rsquo;utilisation de la liste dans le ViewModel :<\/p>\n<pre class=\"lang:default decode:true\">private List&lt;Group&lt;string, MessageViewModel&gt;&gt; _messagesByGroup = new List&lt;Group&lt;string, MessageViewModel&gt;&gt;();\n        \npublic List&lt;Group&lt;string, MessageViewModel&gt;&gt; MessagesByGroup { get {return _messagesByGroup; }}<\/pre>\n<p>La propri\u00e9t\u00e9 en \u00ab\u00a0public\u00a0\u00bb est indispensable pour le Binding.<\/p>\n<p>Une requ\u00eate Linq permet\u00a0de g\u00e9n\u00e9rer ce regroupement :<\/p>\n<pre class=\"lang:default decode:true \">var q = from messagevm in _messages\n                    orderby messagevm.DayDate descending, messagevm.Title\n                    group messagevm by messagevm.DayDate.ToString() into c\n                    select new Group&lt;string, MessageViewModel&gt;(c);\n            _messagesByGroup = q.ToList();<\/pre>\n<p>(Fin du rappel et de la partie commune)<\/p>\n<h2>Utilisation en XAML pour WP8.0 WP8.1 Silverlight<\/h2>\n<pre class=\"lang:default decode:true\">&lt;phone:LongListSelector       \n        ItemsSource=\"{Binding MessagesByGroup}\"\n        GroupHeaderTemplate=\"{StaticResource MessageGroupHeader}\"       \n        ItemTemplate=\"{StaticResource ItemTemplate}\"      \n        IsGroupingEnabled=\"True\"       \n        HideEmptyGroups =\"true\"\/&gt;<\/pre>\n<ul>\n<li>GroupHeaderTemplate : Mod\u00e8le pour la partie regroupement qui sera r\u00e9p\u00e9t\u00e9e<\/li>\n<li>ItemTemplate : Mod\u00e8le pour les Items.<\/li>\n<li>IsGroupingEnabled = true pour permettre le regroupement<\/li>\n<\/ul>\n<p>Les 2 DataTemplates sont d\u00e9finis dans des styles :<\/p>\n<p>Voici un exemple simpliste<\/p>\n<pre class=\"lang:default decode:true\">&lt;DataTemplate x:Key=\"NotifyItemTemplate\" &gt;\n    &lt;Grid Margin=\"0\"&gt;\n        &lt;Grid.ColumnDefinitions&gt;\n            &lt;ColumnDefinition \/&gt;\n            &lt;ColumnDefinition \/&gt;\n        &lt;\/Grid.ColumnDefinitions&gt;\n        &lt;TextBlock Margin=\"8 0 0 0\" Text=\"{Binding Title}\" Style=\"{ThemeResource BodyTextBlockStyle}\"\/&gt;\n        &lt;TextBlock Margin=\"8 0 0 0\" Grid.Column=\"1\" Text=\"{Binding FullDate}\" Style=\"{ThemeResource BodyTextBlockStyle}\"\/&gt;\n    &lt;\/Grid&gt;\n&lt;\/DataTemplate&gt;\n\n&lt;DataTemplate x:Key=\"MessageGroupHeader\"&gt;\n    &lt;Grid&gt;\n        &lt;Grid.RowDefinitions&gt;\n            &lt;RowDefinition\/&gt;\n            &lt;RowDefinition\/&gt;\n        &lt;\/Grid.RowDefinitions&gt;\n        &lt;TextBlock Text=\"{Binding Key}\" Style=\"{ThemeResource SubheaderTextBlockStyle}\"\/&gt;\n        &lt;Border Grid.Row=\"1\" Height=\"2\" Margin=\"0,0,0,0\" \n                HorizontalAlignment=\"Stretch\" \n                VerticalAlignment=\"Bottom\"\n                Background=\"Red\"\/&gt;\n    &lt;\/Grid&gt;                \n&lt;\/DataTemplate&gt;<\/pre>\n<p>Remarquez que l&rsquo;affichage du regroupement se fait par un {Binding Key}. Dans le cas ou le regroupement repr\u00e9sente un objet plus complexe (une image avec un titre par exemple), il faudrait Binder avec Key.NomDeLaPropri\u00e9t\u00e9 (Key.Image ou Key.Title par exemple).<\/p>\n<h1>Utilisation en WP8.1 XAML\u00a0(ou Windows 8.x)<\/h1>\n<p>La premi\u00e8re \u00e9tape est la d\u00e9finition d&rsquo;une nouvelle source de donn\u00e9es \u00ab\u00a0group\u00e9es\u00a0\u00bb.<\/p>\n<p>Pour cela, il faut d\u00e9finir une CollectionViewSource (dans les ressources de la page par exemple). La propri\u00e9t\u00e9 IsSourceGrouped=True est tr\u00e8s importante.<\/p>\n<pre class=\"lang:default decode:true \">CollectionViewSource \n                x:Name=\"ViewSourceMessagesByGroup\" \n                IsSourceGrouped=\"True\"\n                Source=\"{Binding MessagesByGroup}\"\/&gt;<\/pre>\n<p>Ensuite, il faut \u00ab\u00a0Binder\u00a0\u00bb cette propri\u00e9t\u00e9 de type staticRessource dans la ListView.<\/p>\n<pre class=\"lang:default decode:true\">{Binding Source={StaticResource ViewSourceMessagesByGroup} }<\/pre>\n<p><span style=\"color: #ff0000\">Tr\u00e8s important, le contr\u00f4le XAML utilis\u00e9 doit \u00eatre obligatoirement un ListView ou un GridView.<br \/>\n<\/span>La ListBox ne fonctionne pas pour un regroupement.<\/p>\n<p>La propri\u00e9t\u00e9 GroupStyle va ensuite permettre le regroupement de cette nouvelle source de donn\u00e9es.<\/p>\n<pre class=\"lang:default decode:true \">&lt;ListView\n        ItemsSource=\"{Binding Source={StaticResource ViewSourceMessagesByGroup} }\"    \n        ItemTemplate=\"{StaticResource NotifyItemTemplate}\" &gt;\n    &lt;ListView.GroupStyle&gt;\n        &lt;GroupStyle \n                HidesIfEmpty=\"True\" \n                HeaderTemplate=\"{StaticResource MessageGroupHeader}\"&gt;\n        &lt;\/GroupStyle&gt;\n    &lt;\/ListView.GroupStyle&gt;\n&lt;\/ListView&gt;\n<\/pre>\n<p>GroupStyle permet de d\u00e9finir l&rsquo;affichage du groupe HeaderTemplate.\u00a0Le style du\u00a0DataTemplate d\u00e9fini par HeaderTemplate\u00a0est 100% identique au template d\u00e9j\u00e0 utils\u00e9 dans votre ancien LongListSelector.<\/p>\n<p>Nous avons maintenant une liste avec une regroupement.<\/p>\n<p>HideIfEmpty correspond \u00e0 l&rsquo;ancienne propri\u00e9t\u00e9 HideEmptyGroups et permet d&rsquo;afficher ou cacher les groupes qui\u00a0contiennent aucun \u00e9l\u00e9ment.<\/p>\n<p>Le code source de l&rsquo;exemple se trouve ici :<\/p>\n<p><a title=\"Exemple migration LongListSelector en Universal Apps\" href=\"http:\/\/1drv.ms\/1qRVfWc\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone  wp-image-633\" src=\"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/download-10-icon-256.png\" alt=\"download-10-icon-256\" width=\"70\" height=\"70\" srcset=\"https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/download-10-icon-256.png 256w, https:\/\/bratched.com\/fr\/wp-content\/uploads\/sites\/2\/2014\/05\/download-10-icon-256-150x150.png 150w\" sizes=\"(max-width: 70px) 100vw, 70px\" \/><\/a><\/p>\n<p>Pour le moment les groupes existent mais lorsque l&rsquo;on clique sur un groupe, rien ne se passe.<\/p>\n<p>Nous allons voir dans le prochain article comment cr\u00e9er la Jumplist permettant l&rsquo;affichage condens\u00e9 de tous les groupes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s les ressources destin\u00e9es aux\u00a0traductions, nous continuons le tour d&rsquo;horizon des \u00e9l\u00e9ments n\u00e9cessaires\u00a0pour migrer d&rsquo;un projet Windows Phone 8.0 en Universal apps. Le LongListSelector est un \u00e9l\u00e9ment de liste tr\u00e8s souvent utilis\u00e9 : Il est apparu en 8.0 mais existait d\u00e9j\u00e0 dans la version 7.0 sous forme d&rsquo;un composant tiers du Windows Phone Toolkit. Avec [&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,62,63],"tags":[101,3,102,4,58],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Bratched\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Bratched.fr | On parle Windows, C#, Apple, Android, Js, ...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Migration du LongListSelector en Universal Apps | Bratched.fr\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-09-13T12:54:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2014-09-13T12:54:48+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Migration du LongListSelector en Universal Apps | Bratched.fr\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#article\",\"name\":\"Migration du LongListSelector en Universal Apps | Bratched.fr\",\"headline\":\"Migration du LongListSelector en Universal Apps\",\"author\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/dev.bratched.fr\\\/fr\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2014\\\/09\\\/LongListSelector-WP81.png\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#articleImage\"},\"datePublished\":\"2014-09-13T14:54:48+02:00\",\"dateModified\":\"2014-09-13T14:54:48+02:00\",\"inLanguage\":\"fr-FR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#webpage\"},\"articleSection\":\"Universal Apps, Windows 8, Windows Phone, DataTemplate, listview, LongListSelector, M-V-VM, Universal apps\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bratched.com\\\/fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"name\":\"Universal Apps\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"position\":2,\"name\":\"Universal Apps\",\"item\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#listItem\",\"name\":\"Migration du LongListSelector en Universal Apps\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#listItem\",\"position\":3,\"name\":\"Migration du LongListSelector en Universal Apps\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/category\\\/universal-apps-3\\\/#listItem\",\"name\":\"Universal Apps\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\",\"name\":\"Bratched.fr\",\"description\":\"On parle Windows, C#, Apple, Android, Js, ...\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/\",\"name\":\"Bratched\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/05352dcd40ece2c42e5ae2dd683b460b?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Bratched\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#webpage\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/\",\"name\":\"Migration du LongListSelector en Universal Apps | Bratched.fr\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/2014\\\/09\\\/13\\\/migration-du-longlistselector-en-universal-apps\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/author\\\/adminced\\\/#author\"},\"datePublished\":\"2014-09-13T14:54:48+02:00\",\"dateModified\":\"2014-09-13T14:54:48+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/bratched.com\\\/fr\\\/\",\"name\":\"Bratched.fr\",\"description\":\"On parle Windows, C#, Apple, Android, Js, ...\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/bratched.com\\\/fr\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Migration du LongListSelector en Universal Apps | Bratched.fr","description":"","canonical_url":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#article","name":"Migration du LongListSelector en Universal Apps | Bratched.fr","headline":"Migration du LongListSelector en Universal Apps","author":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"publisher":{"@id":"https:\/\/bratched.com\/fr\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/dev.bratched.fr\/fr\/wp-content\/uploads\/sites\/2\/2014\/09\/LongListSelector-WP81.png","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#articleImage"},"datePublished":"2014-09-13T14:54:48+02:00","dateModified":"2014-09-13T14:54:48+02:00","inLanguage":"fr-FR","mainEntityOfPage":{"@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#webpage"},"isPartOf":{"@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#webpage"},"articleSection":"Universal Apps, Windows 8, Windows Phone, DataTemplate, listview, LongListSelector, M-V-VM, Universal apps"},{"@type":"BreadcrumbList","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr#listItem","position":1,"name":"Home","item":"https:\/\/bratched.com\/fr","nextItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","name":"Universal Apps"}},{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","position":2,"name":"Universal Apps","item":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#listItem","name":"Migration du LongListSelector en Universal Apps"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#listItem","position":3,"name":"Migration du LongListSelector en Universal Apps","previousItem":{"@type":"ListItem","@id":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/#listItem","name":"Universal Apps"}}]},{"@type":"Organization","@id":"https:\/\/bratched.com\/fr\/#organization","name":"Bratched.fr","description":"On parle Windows, C#, Apple, Android, Js, ...","url":"https:\/\/bratched.com\/fr\/"},{"@type":"Person","@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author","url":"https:\/\/bratched.com\/fr\/author\/adminced\/","name":"Bratched","image":{"@type":"ImageObject","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/05352dcd40ece2c42e5ae2dd683b460b?s=96&d=mm&r=g","width":96,"height":96,"caption":"Bratched"}},{"@type":"WebPage","@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#webpage","url":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/","name":"Migration du LongListSelector en Universal Apps | Bratched.fr","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/bratched.com\/fr\/#website"},"breadcrumb":{"@id":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/#breadcrumblist"},"author":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"creator":{"@id":"https:\/\/bratched.com\/fr\/author\/adminced\/#author"},"datePublished":"2014-09-13T14:54:48+02:00","dateModified":"2014-09-13T14:54:48+02:00"},{"@type":"WebSite","@id":"https:\/\/bratched.com\/fr\/#website","url":"https:\/\/bratched.com\/fr\/","name":"Bratched.fr","description":"On parle Windows, C#, Apple, Android, Js, ...","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/bratched.com\/fr\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Bratched.fr | On parle Windows, C#, Apple, Android, Js, ...","og:type":"article","og:title":"Migration du LongListSelector en Universal Apps | Bratched.fr","og:url":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/","article:published_time":"2014-09-13T12:54:48+00:00","article:modified_time":"2014-09-13T12:54:48+00:00","twitter:card":"summary","twitter:title":"Migration du LongListSelector en Universal Apps | Bratched.fr"},"aioseo_meta_data":{"post_id":"732","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 02:51:47","updated":"2025-06-04 03:20:07","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bratched.com\/fr\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/\" title=\"Universal Apps\">Universal Apps<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMigration du LongListSelector en Universal Apps\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/bratched.com\/fr"},{"label":"Universal Apps","link":"https:\/\/bratched.com\/fr\/category\/universal-apps-3\/"},{"label":"Migration du LongListSelector en Universal Apps","link":"https:\/\/bratched.com\/fr\/2014\/09\/13\/migration-du-longlistselector-en-universal-apps\/"}],"_links":{"self":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/732"}],"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=732"}],"version-history":[{"count":0,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/posts\/732\/revisions"}],"wp:attachment":[{"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/media?parent=732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/categories?post=732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bratched.com\/fr\/wp-json\/wp\/v2\/tags?post=732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}