Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.10.2011, 07:51

Parameter an Page übergeben? WP7 / Silverlight

Hi leute.

Ich steh vor dem problem dass ich eine liste mit komplexen datenstrukturen. also z.b. eine List mit Klassen drin an eine Page übergeben will.
Jetzt kann man doch aber nur über die Uri etwas an die aufzurufende page weitergeben. Nur das wär doch echt kein schöner stil da eine endlos lange wurst von einem string in der uri zu übergeben und den dann wieder zu parsen.
Das alles in ein File schreiben und dann anschließen wieder zu lesen ist ja auch nicht das wahre oder?

Wie könnte ich das denn bewerkstelligen wie bei den guten alten winforms:
List<Klasse> l = new List<Klasse>();
//hundert elemente rein

new ZweiteForm(l).Show();

lg

2

17.10.2011, 08:14

was meinst du damit?
is die lösung so furchtbar offensichtlich und ich seh sie einfach nicht weil sie direkt vor mir is?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

17.10.2011, 08:17

Nein mein Beitrag soll weg weils blödsinn war :) Deine Frage ist berechtigt ich habe nur nicht richtig gelesen. Grundsätzlich solltest du doch eine Code-Behind datei für deine Page haben. dort kannst du doch deine List mit Objekten erstellen. Ansonsten schaue was bei Silverlight unter WP7 aufgerufen wird, um die Page zu erzeugen - ne app.xaml oder sowas^^

4

17.10.2011, 13:52

naja. jetzt laufts so ausm c# code heraus:

this.NavigationService.Navigate(new Uri("/AboutPage.xaml", UriKind.Relative));
dieser aufruf öffnet mir eine AboutPage.
wenn ich jetzt was übergeben will dann mach ich einfach in der uri:
"/AboutPage.xaml?MEINPARAMETER=blabla",

und im OnNavigated to kann ich dann diesen string parameter auslesen, aber ich hab keinen dunst wie ich da eine komplexe datenstruktu übergeben kann...
lg

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

5

17.10.2011, 13:57

Navigiere doch einfach per überladener Navigate Methode welches ein ObjectState mit annimmt:

C#-Quelltext

1
2
3
4
5
6
7
this.NavigationService.Navigate(new Uri("/AboutPage.xaml", UriKind.Relative), myState);

void NavigationService_LoadCompleted(object sender, NavigationEventArgs e)
{
  var myData = (MyDataType)e.ExtraData;
  ...
}

6

17.10.2011, 15:21

danke! genau nach sowas hab ich gesucht.

edit: es gibt keine überladene methode mit zweitem argument. es gibt nur navigate(uri) sonst nix.

lg

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

7

17.10.2011, 16:06

Ups, hab übersehen dass du nach der Lösung für Silverlight suchst.

In Silverlight geht das leider wirklich nicht, entweder baust du dir daher irgendein Container in dem du die Daten ablegst für eine bestimmte URI oder du sendest die Daten über die QueryParameter.

zB könntest du deine Datenstruktur die du senden möchtest als XML oder JSON Format serialisieren es als Base64 String encoden und an die URI dran hängen um sie später beim Ziel wieder zu deserialisieren.

(Stichwort: JsonDataContractSerializer)

Aber effizient und schön ist das nicht wirklich und ich würde eher zur Container Variante tendieren.
Das problem ist, das NavigationService eher eine UI Sache ist und die Daten die du mitgeben willst eher zu Model gehören.

DAs hier könnte dir evtl auch weiterhelfen:
http://nishantcop.blogspot.com/2011/08/p…in-windows.html

Werbeanzeige