source complet pour cette question se trouve ici: https://github.com/Cheesebaron/MvvmCross.SettingsSampleMvvmCross: liaisons avec TwoWay MonoTouch.Dialog
Ma principale préoccupation réside dans le SettingsView, où je tente de lier quelques BooleanElements simples:
this.Root = new RootElement("Settings")
{
new Section("Test", string.Format("Choose to see your own location on the map.{0}Choose to allow shake gestures.{0}Choose whether you want to receive notifications.", Environment.NewLine))
{
new BooleanElement("Show my location", ViewModel.ShowMyLocation).Bind(this, "{'Value':{'Path':'ShowMyLocation','Mode':'TwoWay'}}"),
new BooleanElement("Shake gestures", ViewModel.ShakeGestures).Bind(this, "{'Value':{'Path':'ShakeGestures','Mode':'TwoWay'}}"),
new BooleanElement("Notifications", ViewModel.Notifications).Bind(this, "{'Value':{'Path':'Notifications','Mode':'TwoWay'}}"),
},
};
Mon problème réside dans le fait que les liaisons ne semblent fonctionner que dans un sens, même si je spécifie explicitement que c'est TwoWay
. Les liaisons bidirectionnelles semblent fonctionner correctement sur WP7 et Android, donc je sais que le modèle de vue est correct. Mais soit il me manque du code pour les liaisons bidirectionnelles, soit quelque chose qui ne va pas ou qui manque dans le framework.
Ce problème est également présent si j'essaie avec d'autres types d'éléments tels que CheckboxElement
ou StyledStringElement
. Aussi mes propres éléments en ...
Merci pour l'exemple. Pour l'exemple booléen, je suppose que cela doit être un bug. Peut-être que j'ai inclus la mauvaise classe dans https://github.com/slodge/MvvmCross/blob/master/Cirrious/Cirrious.MvvmCross.Dialog/MvxTouchDialogBindingSetup.cs - peut-être que CheckboxElement doit être BaseBooleanElement. Pour StyledStringElement, je ne suis pas sûr - je ne comprends pas vraiment comment rendre StyledStringElement modifiable? Je vais essayer de regarder ce soir quand je serai de retour devant le mac. – Stuart
Ah, attendez une seconde. StyledStringElement fonctionne, mais c'est comme si la vue ne se mettait pas à jour toute seule. Donc, si vous appuyez sur la cellule, elle se met à jour. Donc, pour une raison quelconque, la cellule n'est pas avertie du changement. (Un autre problème?) – Cheesebaron
Toujours en regardant ça (mise à jour de XCode et Monotouch et ...) mais avec le StyledStringElement je me demande si un redraw doit être forcé en utilisant cell.SetNeedsDisplay (et peut-être aussi cell.Backbground.SetNeedsDisplay?). Regardera cela lorsque les mises à jour sont terminées. – Stuart