Benutzer mit den meisten Antworten
C#/XAML: MediaElement ein/ausschalten über ToggleSwitch

Frage
-
Hallo zusammen,
ich habe ein Problem mit dem MediaElement. Ich habe zwei Seiten in meiner App (1x MainPage, 1x Settings). Auf der 1. Seite habe ich einen Button, für den man einen Soundeffekt hören sollen, sobald man ihn drückt. Soweit klappt auch alles. Jetzt möchte ich es aber einstellen können, ob ein Soundeffekt zu hören sein soll oder nicht. Das möchte ich auf der zweiten Seite über einen ToggleSwitch einstellen (entweder steht er auf EIN oder AUS). Jetzt habe ich den folgenden Code geschrieben, nur leider höre ich jeden Mal den Soundeffekt, wenn ich den Button drücke (egal ob der ToggleSwitch auf EIN oder AUS steht):
Der folgenden Code ist auf der 2.Seiten zu dem ToggleSwitch (mit dem Namen TastenDruck):
private void TastenDruck_Toggled(object sender, RoutedEventArgs e) { var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; roamingSettings.Values["TastenDruck"] = TastenDruck.IsOn; }
Der folgenden Code ist für die 1. Seite:
public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; } private void Button_Click(object sender, RoutedEventArgs e) { var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; if (roamingSettings.Values["TastenDruck"] != null) { ButtonPressed.Play(); } else ButtonPressed.Stop();
Mein MediaElement heißt hier "ButtonPressed". Aber leider weiß ich nicht, warum es nicht klappt.
Weiß von Euch jemand warum ? Wäre super.
Liebe Grüße
Michael
Antworten
-
Hallo,
in Button_Click fragst du ab, ob der Wert null ist. Du müsstest abfragen ob der Wert true oder false ist:if (roamingSettings.Values["TastenDruck"] is bool && (bool)roamingSettings.Values["TastenDruck"])
Im ersten Teil wird geprüft ob der gespeicherte Wert wirklich vom Typ bool ist und im 2. Teil wird der Wert abgefragt.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller) Samstag, 28. Dezember 2013 15:59 ==true entfernt
- Als Antwort markiert Michael80xxx Sonntag, 29. Dezember 2013 17:49
Alle Antworten
-
Hallo,
in Button_Click fragst du ab, ob der Wert null ist. Du müsstest abfragen ob der Wert true oder false ist:if (roamingSettings.Values["TastenDruck"] is bool && (bool)roamingSettings.Values["TastenDruck"])
Im ersten Teil wird geprüft ob der gespeicherte Wert wirklich vom Typ bool ist und im 2. Teil wird der Wert abgefragt.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Bearbeitet Tom Lambert (Koopakiller) Samstag, 28. Dezember 2013 15:59 ==true entfernt
- Als Antwort markiert Michael80xxx Sonntag, 29. Dezember 2013 17:49
-
Hallo,
danke für Deine Antwort. Ich habe meinen Code entsprechend abgeändert, allerdings höre ich jetzt gar keinen Sound mehr.
Mein Code sieht jetzt wie folgt aus :
private void Spieler1_Click(object sender, RoutedEventArgs e) { var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; if (roamingSettings.Values["TastenDruck"] is bool && (bool)roamingSettings.Values["TastenDruck"] == true) { ButtonPressed.Play(); }
Danke im Voraus,
LG Michael
-
In deinem ersten Codebeispiel prüfst du, ob der Schlüssel "TastenDruck" in den Settings vorhanden ist. Das ist ok, reicht aber nicht. Du musst zusätzlich den Wert, passend zum Schlüssel "TastenDruck" holen und auswerten.
So in etwa:
if (roamingSettings.Values["TastenDruck"] != null && (bool)roamingSettings.Values["TastenDruck"]) { }
Andreas Richter
Softwareentwickler
http://www.anrichter.net -
Hallo zusammen,
ja das klappt ja alles ganz gut. Aber die Einstellung geht jedes Mal wieder verloren, sobald ich auf die andere Seite gehe. Wie schreibe ich die Auswahl denn in den Speicher, so dass sich die App merkt, welche Auswahl ich getroffen habe ??
LG Michael
-
Bei mir funktioniert es tadellos. Die Einstellung ist selbst nach einem Neustart der App noch vorhanden.
Du scheinst noch irgendwo etwas anderes zu machen, wodurch die Einstellung nicht erhalten bleibt. Setze mal einen BreakPoint beim setzen der Einstellu7ng und beim auslesen im Button-Click-Handler um den Wert zu überprüfen.
Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite |
Code Beispiele |
Facebook |
Twitter |
Snippets
C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.