Xamarin.Les formulaires.Commutateur envoie Basculé cas lorsque la valeur est mise à jour

Donc je suis encore à ses débuts avec Xamarin.Forms. C'est très bien, si j'ai mis de côté un peu embêtants bugs que j'ai rencontrés. Voici le nouveau mec. Peut-être que l'un de vous pourrait me dire si je fais quelque chose de mal.

En gros, j'ai un Xamarin.Forms.Switch sur mon interface, et je suis à l'écoute pour les changements de son état avec la Toggled événement. Le doc a dit à propos de cet événement: "l'Événement est déclenché lorsque ce Commutateur est activé par l'utilisateur."

Malheureusement, lorsque je mets à jour la valeur de l'interrupteur de la programmation, l'événement se déclenche.

var mySwitch = new Switch ();
mySwitch.Toggled += (object sender, ToggledEventArgs e) => {
    Console.WriteLine ("Switch.Toggled event sent");
};
mySwitch.IsToggled = true;

Toute façon à empêcher le déclenchement de l'événement /de savoir que ce n'est pas l'utilisateur qui l'a déclenchée?

Il doit se lire comme la SwitchCell Événement, "a Déclenché lorsque l'interrupteur a variation de la valeur". Vous pouvez le modifier via un drapeau sale & vérifier quand par programmation de la mise à jour de votre modèle ou créer une classe héritée de cela et de créer votre propre EventHandle Délégué qui ajoute des données à la TEventArgs de sorte que le récepteur peut voir si le changement est à partir d'une interaction de l'utilisateur ou pas
Vous pouvez également définir la valeur true avant d'ajouter l'événement 🙂 Ou comme @RobertN dit d'enregistrer l'ancien état si vous en avez besoin, ou pour faire de la liaison de données peut être plus facile.
Commutateur de contrôle est une b****. Le déclenchement de l'événement est bonne parce qu'elle est activée. Il ne devrait pas le faire sur le premier databind (à mon avis). La façon dont j'ai travaillé autour d'elle est de faire la liaison de données et l'attacher à l'événement en C#. J'ai d'abord mis IsToggled sur l'interrupteur, puis setBinding sur le IsToggledProperty et après que j'attache de l'événement. Peut-être que cela aide certains d'autres personnes ici, en quête de réponses.
Avez-vous trouvé la solution? J'ai aussi ne peux pas comprendre ce comment databind lors du premier chargement en particulier?
Je n'ai pas travaillé avec Xamarin.Les formulaires de nouveau, donc non, pas de solution trouvée. Je suppose que je devrais annuler l'inscription de l'Basculé cas avant la mise à jour de programme.

OriginalL'auteur aspyct | 2015-10-06