IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Phone .NET Discussion :

Light & Universal App [MVVM]


Sujet :

Windows Phone .NET

  1. #1
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut Light & Universal App
    Hello,

    maintenant que Mvvm light est compatbile avec les Universal App je voulais savoir comment on fait pour localiser une Universal App sous Mvvm Light ?

    Si vous avez un exemple !

    Grand merci
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  2. #2
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Heu...

    C'est une question bête ou ça n'intéresse personne ?

    Merci
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Je ne comprends pas ce que tu veux dire par localiser ?
    Gérer la traduction ?

  4. #4
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Exacte....
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Tu crée un dossier Strings dans le projet shared et tu créer un dossier pour chaque langage (fr-FR pour la france par exemple), tu mets ton fichier de ressource dedans, rien n'a changé pour ça.
    Et dans ton xaml tu y accède avec le x:uid.

    http://msdn.microsoft.com/en-us/libr.../hh965326.aspx

  6. #6
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Hello,

    oui cette méthode je la connais mais je parlais de faire ça en MVVM
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Comment ça de le faire en MVVM, tu parle d'un type de projet MVVM ?
    Parce que dans mon cas c'est un projet Windows Universal Apps auquel j'ai ajouté la librairie MVVM Light et cette technique marche très bien.

  8. #8
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Ok,

    donc tu n'as pas de propriété dans tes ViewModel pour binder sur les TextBox ou autre ...
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  9. #9
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Bein si, tu veux parler de la localisation du texte dynamique? j'utilise les ressources pour tout ce qui est affichage pur et non modifiable style textblock.

    Il faudrait expliquer ce que tu veux faire exactement et ce qui te bloque.

  10. #10
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Et bien tout simplement une application universelle qui repose sur la pattern MVVM.

    Avec le binding des éléments de la vue depuis le ViewModel et non une partie de MVVM et un peu de XAML
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    J'ai mis en place MVVM Light sur mon application avec Navegar pour la navigation, résultat zéro code dans les vues, pour les ViewModel il faut les placer dans le projet shared, pour que tes vues soit visible dans ton ViewModelLocator (qui se trouve aussi dans shared) il faut que tes vues soit crées à la fois dans le projet WP8.1 et Windows 8.1 avec le même nom.
    Dans ta vue il faudra binder ton datacontext à la propriété correspondante dans ton ViewModelLocator.

  12. #12
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Oui tout ça je le sais mais ça ne permet pas d'internationaliser une application depuis les ViewModels.

    On est obligé de passer par le XAML....
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Bein si en code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
    var str = loader.GetString("Farewell");
    Mais bon quand tu peux le faire en xaml autant le faire en xaml.

  14. #14
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Cool

    merci pour ce bout de code....

    Je préfère que tout soit dans le ViewModel car dans le cas d'une Universal App tu as deux Views qui utilisent la même ressources et si tu passes par le XAML tu dois renseigner/vérifier deux fois alors que par le ViewModel des deux vues tu renseignes/Vérifies qu'une fois.

    Voilà pourquoi j'insiste.
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Ce morceau de code était à la fin du premier lien que je t'avais donné.
    Dans un cas tu liera ton textbox à ta propriété et dans un autre tu rajoutera un x:uid, c'est rarement sur ces points là que tu fera des erreurs, mais bon si tu préfères pourquoi pas.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    J'ai bien suivi votre discussion, mais j'ai plusieurs questions :

    - déjà, je n'arrive pas à comprendre comment on implémente la culture au lancement de l'application
    dans un exemple, j'ai bien trouvé ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var culture = new CultureInfo("es-MX");
    Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = culture.Name;
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;
    => Mais comment faire si on veut tester la langue du téléphone au démarrage?
    Dans mon cas, je développe une application en français et en anglais : je voudrais faire un test au démarrage pour que les cultures francophones chargent le fichier de resources francais, et l'autre fichier de resources pour les autres cas...


    - ensuite, comment peut-on travailler sur le design de l'application si on développe une application multilingue?
    J'utilise les "x:Uid", mais du coup on ne voit plus rien dans le designer.

    => Existe-t'il une solution qui permette de travailler sur le design dans le même temps?

  17. #17
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Hello,

    tu n'as pas à te charger de choisir le fichier au démararge car c'est automatique en fonction des paramètres du device.

    Ensuite pour, le Design l suffit d'écrire dans les propriétés Text ou content les valeurs par défaut qui seront remplacer automatiquement au lancement.

    Je te rassure, je trouve ça moins pratique que ce qu'on avait avant en bindant simplement via les ViewModels ....
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Citation Envoyé par Gold.strike Voir le message
    => Existe-t'il une solution qui permette de travailler sur le design dans le même temps?
    Il est très difficile de travailler en même temps sur le design, certain composant casse le designer et plus aucun rendu est disponible, sinon test avec blend pour voir si lui est plus fonctionnel de ce côté là.

    Pour le reste comme expliqué par DotNET74 c'est pas comme les antibiotiques, c'est automatique

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par DotNET74 Voir le message
    Hello,
    tu n'as pas à te charger de choisir le fichier au démararge car c'est automatique en fonction des paramètres du device.
    Ensuite pour, le Design l suffit d'écrire dans les propriétés Text ou content les valeurs par défaut qui seront remplacer automatiquement au lancement.
    Effectivement, en laissant une propriété Text, ça règle le problème du design.

    Cependant pour les langues, j'ai quand même un problème :
    - mon appli implémente 2 langues : français (fr-FR) et anglais(en-US)
    - quand la langue du téléphone est réglée sur une de ces langues, il prends bien en compte le fichier de resources correspondant
    - néanmoins dans tous les autres cas, il charge la version anglaise
    - je voudrais que pour toutes les langues "francophones" (français (Belgique), français (Cameroun), français (Canada), etc...) il charge la version française

    => Je pourrais créer un fichier de langue resources par langue francophone, mais ce serait lourd à maintenir. N'existe-t-il donc pas une solution pour faire le "binding" au lancement de l'appli?



    Citation Envoyé par DotNET74 Voir le message
    Je te rassure, je trouve ça moins pratique que ce qu'on avait avant en bindant simplement via les ViewModels ....
    J'ai une question liée à la problématique précédente et aux ViewModels : je souhaiterais pouvoir gérer la validation des champs d'un formulaire de connexion/inscription (login, email, password, ...)
    J'ai trouvé des références à "INotifyDataErrorInfo", mais je n'ai pas trouvé d'exemple d'implémentation sur Windows Phone ou Universal App...
    J'ai également trouvé un plugin "Fluent Validation", mais je ne sais pas trop ce qu'il vaut ni si il convient à une Universal App :
    http://developer.nokia.com/community..._Windows_Phone

    Je pensais donc gérer la vlidation des champs "à la main" dans le ViewModel, mais je suis alors confronté au problème de la langue : comment récupérer la langue active pour charger un item dans le bon fichier de resources?

    => Je me demandais quelle était donc la solution la plus simple pour gérer la validation des champs dans ce cas?

  20. #20
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Pour les langues francophones tu ne devrais pas car en Belgique par exemple il y aura certainement des gens qui ne voudrons pas du français ...

    Soit tu fais un code qui permet de changer la langue de ton application et donc ce sera indépendant du système automatique soit tu laisse faire le système en fonction des paramétres régionaux du device.

    Ensuite, pour récupérer via le code une valeur du fichier de ressource il fatu faire comme suit (indiqué plus haut par youtpout978):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
    var str = loader.GetString("Farewell");
    J'espère que ça répond à tes questions.
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WinPhone] FFX Buddy (Universal App)
    Par I_Pnose dans le forum Mon application mobile
    Réponses: 0
    Dernier message: 22/05/2014, 10h46
  2. Microsoft dévoile « Universal Apps »
    Par Hinault Romaric dans le forum Windows
    Réponses: 4
    Dernier message: 08/04/2014, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo