Ergebnis 1 bis 4 von 4
-
Bin hier zuhause
- 20.11.2014, 20:02
- #1
Guten Abend
In meiner WP8.1 StoreApp, habe ich diverse ToggleSwitches für Einstellungen eingebaut. Nun nutze ich einige davon direkt zum ausführen von Funktionen mit dem Toggled Event. Ob der ToggleSwitch On oder Off ist, schreibe ich als boolean in den AppDataStore. Nun ist meine Frage, wie ich den Status eines ToggleSwitch, beim aufrufen der Einstellungsseite, setzen kann? Aktuell lese ich den boolean aus dem AppDataStore aus und setze anhand dessen den Status des ToggleSwitch mit IsOn. Das funktioniert soweit, bis eben auf solche ToggleSwitches, welche direkt ein Event auslösen. Denn durch das laden des Status mit IsOn, wird dir eigentlich nur wieder eingeschalten, damit er als On dargestellt wird. Dies hat zur Folge, dass die im Event Handler hinterlegte Funktion des ToggleSwitches jedesmal beim laden der Einstellungsseite ausgeführt word, was ich aber nicht möchte. Hat da jemand eine Lösung oder einen anderen Ansatz für mich parat?
Mfg
Mit der kostenlosen PocketPC.ch App von meinem RM-937_eu_euro2_936 aus geschrieben.
-
Bin hier zuhause
- 23.11.2014, 21:47
- #2
Falls es jemanden intressiert, ich habe das nun etwas anders gelöst. Der ToggleSwitch schreibt weiterhin einen boolean in den AppDataStore, jedoch habe ich keine aktive Funktion mehr Event Handler hinterlegt. Auf meiner Einstellungsseite befindet sich ein "speichern" Button, welcher dann erst die Funktion aufruft, wenn der im AppDataStore hinterlegte boolean auf true steht. Somit wäre das für mich erledigt.
Mfg
Mit der kostenlosen PocketPC.ch App von meinem RM-937_eu_euro2_936 aus geschrieben.
-
Gehöre zum Inventar
- 24.11.2014, 08:30
- #3
Die Alternative wäre alle Einstellungen in ein Settings-Objekt zu packen dass INotifyPropertyChanged implementiert. Du würdest dann alle UI-Controls per DataBinding mit den Properties deines Settings-Objekts verbinden. Das Settings-Objekt wird dann entsprechend in den AppSettings gespeichert. Deine Events verbinden sich dann mit dem Settings-Objekt - nicht direkt mit den Controls.
Damit wird also quasi erst das Objekt geladen und das Binding an die Controls löst keine Änderungen mehr aus. Wenn aber der User über das Binding Werte verändert feuert das Event und du kannst reagieren/speichern.
-
Fühle mich heimisch
- 01.12.2014, 08:25
- #4
Moin
ich komme von der Windows Forms Entwicklungsseite und entwickle nicht für Windows Store mit XAML oder so. Aber das Problem, dass man CheckBox / Toggle Schalter setzen will, die einen EventHandler auf CheckedChanged angehängt haben, kenne ich von Win-Forms Anwendungen auch.
Ich mach das dann so, dass ich vor dem Setzen des Wertes den EventHandler abhänge, dann den Wert setze und den EventHandler hinterher wieder zufüge, also ungefähr so (Achtung nicht syntaktisch korrekt, nur ein Beispiel):
// EventHandler Methode "btnShowNavigation_ToggleChanged" vom Event abhängen
toggleButtonShowNavigation.ToggleStateChanged -= btnShowNavigation_ToggleChanged;
// Wert setzen
toggleButtonShowNavigation.ToggleState = true;
// EventHandler Methode "btnShowNavigation_ToggleChanged" wieder am Event registrieren
toggleButtonShowNavigation.ToggleStateChanged += btnShowNavigation_ToggleChanged;
So verhinderst du, dass der EventHandler zum Zeitpunkt des Setzens des Wertes ausgelöst wird.
Wie gesagt, ich weiß nicht, ob das bei Windows Store oder Phone Apps auch geht.
Ähnliche Themen
-
States verändern, wenn zurücktaste gedrückt wird
Von AEG im Forum Windows Phone 7 EntwicklungAntworten: 3Letzter Beitrag: 20.11.2011, 19:53
Pixel 10 Serie mit Problemen:...