Nicht sicher, ob dies hilfreich sein wird, aber der folgende Workaround funktioniert für mich mit SL5 und allen Browsern unter Windows für meinen spezifischen Anwendungsfall. Wir laden die Hostseite aus einer anderen Anwendung, die Informationen über die Query-String übergibt. Ich habe zuvor verwendet
foreach (var key in HtmlPage.Document.QueryString.Keys)
um die Query-String-Keys und -Werte zu erhalten und entsprechend zu verarbeiten. Da HtmlPage.Document nicht mehr quellenübergreifend ist, habe ich alle Alternativen ausprobiert, bin aber schließlich dazu gekommen, einen .NET-Typ zu erstellen, der von Javascript (JS) aufgerufen werden konnte. Wenn die Hostseite geladen wird, verwende ich JS, um den Query-String zu extrahieren und diesen in den .NET-Typ zu übergeben.
Um dies zu tun, fügen Sie Ihrer Hostseite dies hinzu:
und etwas JS:
function plugInLoaded(sender) { // Code zum Setzen von Werten in Ihren .NET-Typ }
Die Herausforderung für mich bestand darin, dass unsere SL-Seite sofort nach dem Rendern der Hauptsteuerung eine HTTP-Anfrage stellen muss, um Daten zu erhalten. Wir verwenden keine RIA-Dienste. Die meisten Beispiele auf MSDN zum Übergeben von Daten von JS an .NET beinhalten einen Klick auf eine Schaltfläche. Es gab eine Wettlaufbedingung, bei der der JS-Code den Wert auf den .NET-Typ setzte, nachdem die SL-Steuerungen gerendert worden waren. Die Verwendung des Dispatchers löste dieses Problem.
Dispatcher.BeginInvoke(() => { // Code, um den Wert aus dem .NET-Typ zu erhalten }