none
Fehler: GetNavigationState doesn't support serialization of a parameter [...] RRS feed

  • Frage

  • Hi,

    habe wieder mal eine Frage!

    Und zwar habe ich eine App programmiert und will dabei den SuspensionManager nutzen, damit die App nach der Bildschirmsperre (Windows Phone) trotzdem noch normal weiter läuft!

    Das Frame wird so aufgerufen:

    this.Frame.Navigate(typeof(Lesen), param);

    wobei param folgendermaßen aussieht:

    int[] param = new int[5];

    Ich möchte also von einem Frame zum nächsten 5 INT-Werte übergeben...

    Kommt die Bildschirmsperre wird die SaveAsync Methode ausgeführt, allerdings wird die App mit folgender Exception in dieser Methode beendet:

    GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate

    Es ist definitiv das "param" was das Problem ist, allerdings konnte ich bei Google keine entsprechende Abhilfe zu diesem Fehler finden!

    Wie kann ich 5 variablen übergeben ohne diese Exception beim SaveAsync zu bekommen?

    Danke schon mal!

    Donnerstag, 19. März 2015 21:22

Antworten

  • Hi,

    der zweite Parameter muss laut Dokumentation ein einfacher Typ sein (https://msdn.microsoft.com/de-de/library/windows/apps/hh702394.aspx) daher funktioniert die Übergabe eines Arrays nicht. Jedoch könntest du dir ein oder zwei Hilfsmethoden basteln, die dein Array in ein String umwandeln und wieder zurück. Den String kannst du problemlos als Parameter in der Navigate-Methode verwenden.

    		public string ParamToString(int[] param)
    		{
    			string result = string.Format("{0}_{1}_{2}_{3}_{4}", param[0], param[1], param[2], param[3], param[4]);
    			return result;
    		}
    
    		public int[] StringToParam(string s)
    		{
    			string[] splits = s.Split('_');
    			int[] param = new int[5];
    			for (int i = 0; i < param.Length; i++)
    			{
    				param[i] = int.Parse(splits[i]);
    			}
    			return param;
    		}

    Gruß


    Chris

    Code Samples: Code Samples
    Chrigas Blog: Chrigas Blog


    • Bearbeitet chriga Freitag, 20. März 2015 01:18
    • Als Antwort markiert PHep Freitag, 20. März 2015 14:12
    Freitag, 20. März 2015 01:17

Alle Antworten

  • Hi,

    der zweite Parameter muss laut Dokumentation ein einfacher Typ sein (https://msdn.microsoft.com/de-de/library/windows/apps/hh702394.aspx) daher funktioniert die Übergabe eines Arrays nicht. Jedoch könntest du dir ein oder zwei Hilfsmethoden basteln, die dein Array in ein String umwandeln und wieder zurück. Den String kannst du problemlos als Parameter in der Navigate-Methode verwenden.

    		public string ParamToString(int[] param)
    		{
    			string result = string.Format("{0}_{1}_{2}_{3}_{4}", param[0], param[1], param[2], param[3], param[4]);
    			return result;
    		}
    
    		public int[] StringToParam(string s)
    		{
    			string[] splits = s.Split('_');
    			int[] param = new int[5];
    			for (int i = 0; i < param.Length; i++)
    			{
    				param[i] = int.Parse(splits[i]);
    			}
    			return param;
    		}

    Gruß


    Chris

    Code Samples: Code Samples
    Chrigas Blog: Chrigas Blog


    • Bearbeitet chriga Freitag, 20. März 2015 01:18
    • Als Antwort markiert PHep Freitag, 20. März 2015 14:12
    Freitag, 20. März 2015 01:17
  • Vielen Dank dir!

    Hatte in der Zwischenzeit eine andere Lösung gefunden, die war aber weit komplizierter - so mit XML Datei erstellen und wieder auslesen mit dem XMLSerializer...

    Funktioniert perfekt und am wenigsten Aufwand!!!

    Danke!

    Freitag, 20. März 2015 14:12