none
ApplicationBar, C# ou XAML ? RRS feed

  • Question

  • Bonjour, je débute dans le dév sous WP7.

    Apparemment certains outils notamment graphiques peuvent aussi bien s'écrire en XAML qu'en C#, comme l'ApplicationBar par exemple.

    Dans la mesure où les 2 langages sont possibles, ne vaut-il mieux pas profiter les écrire en XAML et écrire en C# que ce qui le nécessite ?

    Ou alors le C# est-il mieux adapté pour certaines situations ?

     

    Merci par avance :)

    samedi 23 juillet 2011 21:49

Réponses

  • C'est une question assez difficile en fait, il faut savoir où mettre le curseur entre performance et facilité de conception.

    Il faut savoir qu'en silverlight, le XAML est parsé au runtime (contrairement au WPF). Utiliser le XAML rajoute donc une couche d'interprétation, mais ce temps est la plupart du temps très négligeable face à la facilité que ca t'apportera, que l'on va plutôt préférer utiliser une structure façon MVVM avec tout ce qui concerne l'aspect graphique dans le XAML et seulement du code fonctionnel dans le Code Behind.

     

    En mettant l'ensemble de votre interface en code pur, tu perds les avantages que XAML a à offrir en tant que langue d'UI, notamment l'utilisation de Blend et la maintenabiliité.

     

    Donc pour conclure je dirais, pour un débutant, la question ne se pose pas, tout dans le XAML, plus tard, quand tu seras expérimenté, il est parfois possible de se poser la question pour les performances.


    WP addict
    • Marqué comme réponse Neo33ASM samedi 23 juillet 2011 22:35
    samedi 23 juillet 2011 22:25
    Modérateur
  • Tu voulais sûrement dire que certains contrôles graphiques (^__^).

    Concernant l'ApplicationBar, il n'est pas commun de le créer dans le code. On le créé quasiment toujours dans le code XAML afin d'avoir une meilleure logique d'interface (pouvoir le visualiser). Par contre, il est fréquent d'avoir des Boutons ou des Menus de cette ApplicationBar qui sont bindés à des propriétés, afin de pouvoir changer son contenu dynamiquement.

    Alors une petite précision s'impose : le contrôle ApplicationBar natif n'est pas un contrôle Silverlight (Binding impossible dessus). Tu peux te tourner pour ce faire vers le contrôle qu'a créé Nicolas (une ApplicationBar Bindable) là http://blogs.developpeur.org/nicolas/archive/2010/08/19/wp7-comment-avoir-une-applicationbar-bindable.aspx et qui a une mise à jour pour Mango juste là http://blog.humann.info/post/2011/07/12/BindableApplicationBar-update-for-Windows-Phone-Mango.aspx

    Bon courage (^__^)


    David POULIN, Expert .NET (WPF, Silverlight et Windows Phone) chez Soat
    • Marqué comme réponse Neo33ASM samedi 23 juillet 2011 22:35
    samedi 23 juillet 2011 22:08

Toutes les réponses

  • Tu voulais sûrement dire que certains contrôles graphiques (^__^).

    Concernant l'ApplicationBar, il n'est pas commun de le créer dans le code. On le créé quasiment toujours dans le code XAML afin d'avoir une meilleure logique d'interface (pouvoir le visualiser). Par contre, il est fréquent d'avoir des Boutons ou des Menus de cette ApplicationBar qui sont bindés à des propriétés, afin de pouvoir changer son contenu dynamiquement.

    Alors une petite précision s'impose : le contrôle ApplicationBar natif n'est pas un contrôle Silverlight (Binding impossible dessus). Tu peux te tourner pour ce faire vers le contrôle qu'a créé Nicolas (une ApplicationBar Bindable) là http://blogs.developpeur.org/nicolas/archive/2010/08/19/wp7-comment-avoir-une-applicationbar-bindable.aspx et qui a une mise à jour pour Mango juste là http://blog.humann.info/post/2011/07/12/BindableApplicationBar-update-for-Windows-Phone-Mango.aspx

    Bon courage (^__^)


    David POULIN, Expert .NET (WPF, Silverlight et Windows Phone) chez Soat
    • Marqué comme réponse Neo33ASM samedi 23 juillet 2011 22:35
    samedi 23 juillet 2011 22:08
  • En effet, "contrôles graphiques :), et merci pour le lien, je suis en train de regarder la page.

    Mais par exemple je ne connais pas encore la notion de "bindable" :S, ça consiste en quoi ?

    En fait j'ai une bonne maîtrise du langage C (4 Unités d'Enseignements à la fac, sur 4 semestres) et j'ai eu une UE de Java, donc je me fais au C# petit à petit sans trop trop de mal.

    Juste quelques nouvelles notions dont il me faut juste comprendre le fonctionnement, comme les RoutedEvents par exemple...

    samedi 23 juillet 2011 22:22
  • C'est une question assez difficile en fait, il faut savoir où mettre le curseur entre performance et facilité de conception.

    Il faut savoir qu'en silverlight, le XAML est parsé au runtime (contrairement au WPF). Utiliser le XAML rajoute donc une couche d'interprétation, mais ce temps est la plupart du temps très négligeable face à la facilité que ca t'apportera, que l'on va plutôt préférer utiliser une structure façon MVVM avec tout ce qui concerne l'aspect graphique dans le XAML et seulement du code fonctionnel dans le Code Behind.

     

    En mettant l'ensemble de votre interface en code pur, tu perds les avantages que XAML a à offrir en tant que langue d'UI, notamment l'utilisation de Blend et la maintenabiliité.

     

    Donc pour conclure je dirais, pour un débutant, la question ne se pose pas, tout dans le XAML, plus tard, quand tu seras expérimenté, il est parfois possible de se poser la question pour les performances.


    WP addict
    • Marqué comme réponse Neo33ASM samedi 23 juillet 2011 22:35
    samedi 23 juillet 2011 22:25
    Modérateur
  • Le binding c'est laisser le xaml gérer tout ce qui est mise à jour de l'UI suite à un changement de valeur de ta donnée.

     

    par exemple 

     

    <TextBlock Text={Binding MonTitre}" />

     

    Si je change la propriété MonTitre plus tard dans mon code, l'interface se mettra toute seule à jour (à condition d'avoir lancé un OnPropertyChanged)

     

    C'est aussi une sorte de liaison faible entre donnée et interface (Ca peut être la propriété MonTitre de ta classe Article, tout comme celle de la classe Person).


    WP addict
    samedi 23 juillet 2011 22:28
    Modérateur
  • Ok merci Rudy, ça me donne déjà une bonne ligne directrice sur XAML vs. C#

    Mais en effet j'trouve que ça reste intéressant de savoir comment le définir en C# pour éventuellement pouvoir le modifier par la suite, cause d'éventuels évènements si besoin est.

    A première vue j'dirais que j'aurais tendance à préférer déclarer en XAML et éventuellement modifier en C#, à moins qu'on me le déconseille.

    samedi 23 juillet 2011 22:39
  • non non c'est la bonne stratégie pour commencer !
    WP addict
    dimanche 24 juillet 2011 12:48
    Modérateur