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
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
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
Je ne comprends pas ce que tu veux dire par localiser ?
Gérer la traduction ?
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
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
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
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.
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
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.
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
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.
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
Bein si en code :
Mais bon quand tu peux le faire en xaml autant le faire en xaml.
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");
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
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.
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 :
=> Mais comment faire si on veut tester la langue du téléphone au démarrage?
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;
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?
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
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
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?
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?
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):
J'espère que ça répond à tes questions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var loader = new Windows.ApplicationModel.Resources.ResourceLoader(); var str = loader.GetString("Farewell");
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager