12 December 2012 ~ 0 Comments

Créer une application Windows store Part2

Hi,

On a vu dans le 1 er article comment avoir une GridView avec des items de tailles variables, nous allons maintenant voir comment attribuer des DataTemplates aux items dynamiquement afin d’avoir le même look que l’application Windows Store App.

Créer une application Windows store Part2 dans Windows 8 storeapp-300x168

2. DataTemplateSelector

Il faut créer une classe dérivée de DataTemplateSelector, on déclare les différents DataTemplates qu’on veut  utiliser (dans cet exemple j’ai un Template pour les items qui ont des images et un autre pour les items qui n’ont pas)  en suite on ré-implémente la méthode SelectTemplateCore, cette méthode va contenir la logique de sélection de Template selon l’item.

 

 public class VariableGroupDetailDataTemplate: DataTemplateSelector
    {
        public DataTemplate ImageTemplate { get; set; }
        public DataTemplate NoImageTemplate { get; set; }

        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
        {
            var model = item as SampleDataItem;
            if (model != null)
            {
                if (model.ListImageUrl != null && model.ListImageUrl.Count > 0)
                    return ImageTemplate;
                else
                    return NoImageTemplate;
            }
            return base.SelectTemplateCore(item, container);
        }
    }

Maintenant on va modifier le fichier xaml qui contient le  GridView, on ajoute le namespace de cette classe par exemple :

xmlns:model="using:App2.DataModel"

puis dans la section  resources on ajoute ce code :

<model:VariableGroupDetailDataTemplate x:Key="GroupDetailSnappedDataTemplateSelector"
                                               ImageTemplate="{StaticResource GPSnappedItemTemplate}"
                                               NoImageTemplate="{StaticResource GPSnappedNoImageItemTemplate}"/>

vous devez créer les deux Templates  avant  (dans la section resource de se fichier) ou dans un fichier de ressources a part (dans un ResourceDictionary).

Une dernière chose, dans le GridView enlever l’attribut ItemTempalte et remplacer le par ItemTemplateSelector

ItemTemplateSelector="{StaticResource GroupDetailDataTemplateSelector}"
datatemplateselector astuce dans Windows 8

le fichier xaml final


Leave a Reply

You must be logged in to post a comment.

aymensoft |
damnexhermann23cooporation |
constructionsurgeogebra |
Unblog.fr | Créer un blog | Annuaire | Signaler un abus | dpine
| radiovoiture
| html0css