Donc, j'essaie de créer une simple application comme une application de shopping. J'ai donc des catégories et plusieurs articles pour chaque catégorie, et lorsque vous choisissez un élément, vous aurez la possibilité d'augmenter le nombre de personnes dont vous avez besoin ou supprimez l'élément. Pour un exemple, j'ai choisi trois articles, mon panier dispose donc de 3 éléments où chacun a un bouton Ajout et un bouton Supprimer. Lorsque j'ai appuyé sur le bouton Ajouter, le nombre d'éléments indiqués devrait augmenter et ainsi de suite. P>
Alors, ce que j'ai fait jusqu'à présent, c'est créer un fichier JSON qui disposant de toutes mes catégories, et une fois que j'ai frappé une catégorie, je reçois de désérialiser un autre fichier JSON qui possède tous mes articles, de sorte que les éléments affichés dépend de la catégorie I Chôté bien sûr. P>
Maintenant, chaque fois que je choisis un élément, il est ajouté au panier et affiché sur la page inférieure avec des boutons + et - et ainsi de suite. P>
Alors j'ai créé une classe de catégorie pour désérialiser mon Json et une classe Objets pour désérialiser le JSON de mon article. J'ai implémenté l'inotifyChangedProperty dans la classe Objets afin que je puisse garder le spectacle à chaque fois que le nombre d'un élément choisi augmente, de sorte que mon point de vue, mais je suppose que c'est comme ça que j'ai besoin d'un point de vue de chaque article créé? Donc, je suppose que ce que j'ai vraiment besoin d'utiliser est l'observablecollection .. p>
J'espère que j'ai bien expliqué bien et j'attends vos commentaires sur si je le fais bien ou mal et comment dois-je procéder pour obtenir ce que je veux. merci beaucoup p>
3 Réponses :
Pour définir une liaison de manière programmative
// set the BindingContext for the page this.BindingContext = new MyViewModel(); // Title is a public property on MyViewModel myLabel.SetBinding(Label.TextProperty, "Title");
J'ai mis en place l'inotifyPropertychangned dans la machine virtuelle correctement, comme indiqué ici: xamarinhelp.com/xamarin-forms-binding " a>. Et a ajouté la liaison ainsi que le contexte de liaison, mais pour une raison quelconque, l'application cesse de répondre. Je n'ai même pas une exception
sans voir votre code actuel, il n'y a aucun moyen que nous puissions vous aider à déboguer cela
Okey j'ai réussi à le faire fonctionner, je suppose que tout ce dont j'ai besoin maintenant, c'est de définir le contexte contraignant correctement, le problème est que MyViewModel est une classe qui a plusieurs arguments, mais si je précise les valeurs des arguments, alors exactement ce que je vais avoir ! Cette classe que je utilise est celle que je suis basée sur désérialiser mon fichier JSON ... Pouvez-vous me suggérer des solutions?
Encore une fois, sans voir votre code, il n'y a aucun moyen pour moi de vous aider
Modifier la question
Voici quelques conseils qui pourraient aider avec votre problème. Votre code est en désordre et je pense que cela provoque votre confusion (vous avez plusieurs choses nommées de manière très similaire). Cela me montre que vous définissez votre variable de membre Je vous suggère Définissez la liaison dans XAML et assurez-vous de vous lier à la propriété NBR_OBJET code > Directement, lorsque vous faites que la notification de changement de propriété ne génère pas - vous devez attribuer la valeur via le public
nbr_objet code> pour que cela se produise. p>
nbr_objet code>, pas la variable de membre privé (champ)
nbr_objet code>.
Si vous souhaitez éviter la confusion, suivez la norme de codage C # et nommez votre variable de membre
_nbrobjet code> et Case de chameau Votre nom de propriété
public int nbrobjet {obtenez {... code>. < / p> p>
Merci beaucoup, mais le problème que j'ai consiste à mettre en place le contexte contraignant, comment puis-je la définir dans XAML?
@Shahidod pouvez-vous publier ce que vous avez jusqu'à présent? Vous pouvez supprimer tout ce qui n'est pas pertinent, mais essayez d'inclure le niveau de page / composant XAML, plus l'étiquette.
Je vais éditer ma question à nouveau pour que vous puissiez voir ce que je tente de faire, peut-être que je le fais mal.
Les problèmes sont que pour définir la liaisonContext sur ma classe "objets", je dois mettre les arguments dedans, puis mon étiquette bien obtenir une valeur précise ... Que dois-je faire? P>
Je fais un échantillon sur votre modèle, vous pouvez jeter un coup d'œil: p>
xxx pré>
mise à jour: strong> p> Mais je suppose que c'est comme ça que j'ai besoin d'un point de vue de chaque article créé? Donc, je suppose que ce que j'ai vraiment besoin d'utiliser est l'observablecollection .. p> blockQuote>
Vous avez dit que vous avez trois catégories, et chaque catégorie dispose de nombreux éléments, si vous les affichez dans ListView, la catégorie est utilisée comme en-tête de groupe, et je suggère que vous puissiez utiliser le même modèle pour un élément différent pour différents. Catégories, puis ajouter à Observablecollection, car il a mis en œuvre une interface inotifypropertychanged. p>
À propos de ListView Group, vous pouvez regarder: p>
https://github.com/xamarin/xamarin-Forms-samples/tree/master/USERInterface/listview/ Regroupement P>
Si vous avez toujours une autre question, je vous suggère de pouvoir créer un nouveau fil à poser, car ce fil est très long. P>
N'oubliez pas de marquer la réponse utile comme réponse, merci. p> blockquote>
Merci beaucoup, cela m'a fait voir les choses plus claires. Je vais éditer ma question à nouveau pour que vous puissiez voir ce que je tente de faire, peut-être que je le fais mal.
Ceci est bien documenté - avez-vous lu les docs sur la liaison? docs.microsoft.com/ EN-US / XAMARIN / XAMARIN-FORMES / XAML / XAML-BAS ICS / ...
@ Shahid, si vous voulez lier la variable à label.text, lorsque la variable est modifiée, le label.text changera, vous devez implémenter INOTIFYPROPERTYCHANGED interface B>. Vous pouvez regarder un look: xamarinhelp.com/xamarin-forms-binding
@shahid utilisez-vous XAML ou .Cs codant pour la conception? Dois-je fournir xaml? Mais c'est la chose très fondamentale pour Xamarin que vous pouvez utiliser avec la documentation.
@Jason je veux le faire avec C #, je n'ai pas trouvé quelque chose qui fonctionne pour moi. et oui j'ai fait
@ Cherrybu-msft qui est exact que je vais essayer de le mettre en œuvre avec l'exemple que vous me fournissez et vous donnera une alimentation. Merci beaucoup
@Kishore je sais déjà comment le faire dans le XAML, je le fais en ce moment je le fais dans les .Cs, j'ai juste besoin d'utiliser inotifypropertychangned b> mais je cherchais ici un exemple de comment l'utiliser Je vous remercie correctement.