none
C#/XAML: MediaElement ein/ausschalten über ToggleSwitch RRS feed

  • 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

    Samstag, 28. Dezember 2013 00:02

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.


    Samstag, 28. Dezember 2013 00:25

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.


    Samstag, 28. Dezember 2013 00:25
  • 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

    Samstag, 28. Dezember 2013 07:37
  • 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

    Samstag, 28. Dezember 2013 09:21
  • 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

    Sonntag, 29. Dezember 2013 16:34
  • 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.

    Sonntag, 29. Dezember 2013 16:58
  • Hallo zusammen,

    ich hab den Fehler gefunden :-)

    Danke an alle!

    LG Michael

    Sonntag, 29. Dezember 2013 17:49