Ich habe eine Silverlight Anwendung in der diverse Javascript Objekte in Silverlight erzeugt werden. Genau genommen Google Maps Objekte. Funktioniert auch alles soweit, so lange ich die erzeugte Karte aus Silverlight benutze. Zum Beispiel so:
var map = HtmlPage.Window.CreateInstance(@"google.maps.Map", container, mapOptions); var center = (ScriptObject)_map.Invoke("getCenter");
Was ich jetzt allerdings noch benötige ist die Möglichkeit auch in Javascript auf das erzeugte Map Objekt zuzugreifen. Es muss ja irgendwo vorhanden, da in Silverlight ja nur das Objekt erzeugt wird welches ja im Browser "laufen"muss.
Ich kann zwar jetzt die map als ScriptableMember Property publishen und somit wieder aus Javascript auf den Silverlight Code zugreifen. Allerdings erscheint mir das doch ein wenig Unsinnig um auf etwas zuzugreifen was der Browser ja kennen muss.
Ich beantworte dann mal meine eigene Frage. ;) Wahrscheinlich Antwort: Gar nicht.
Einfachere Lösung ist aber die Karte nicht in SL zu erzeugen sondern durch Javascript direkt, und dann in Sliverlight das Objekt abzurufen. Man muss nur drauf kommen, und versuchen nicht zu sehr in seine SL Welt gefangen zu sein..
Einfaches (nicht zu Ende gedachtes) Beispiel. Bessere Vorschläge immer noch gern gesehen.
//In Javascript //Böser Demo-Code! var map; function CreateOrGetMap(container, mapOptions) { if (!map) { map = new google.maps.Map(container, mapOptions); } return map; }
---
//In Silverlight var map = HtmlPage.Window.Invoke("CreateOrGetMap", null, null)