2010-05-25 6 views

Répondre

3

Une approche que vous pouvez prendre est d'exposer une méthode qui peut être accessible à partir de JavaScript. Donc, dans votre fichier xaml.cs vous devez ajouter ce qui suit à votre constructeur:

this.Loaded += new RoutedEventHandler(Page_Loaded); 

Ensuite, ajoutez le gestionnaire d'événement suivant:

void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    HtmlPage.RegisterScriptableObject("YourControlName", this); 
} 

et:

[ScriptableMember] 
public void YourMethod(string yourData) 
{ 
    // Do your stuff here 
} 

Puis, dans la La page ascx ou aspx sur laquelle votre contrôle Silverlight est instancié ajoute le code JavaScript suivant:

Cela ne signifie aussi que le contrôle de Silverlight doit être instancié via la balise <object... plutôt que par <asp:Silverlight...

+0

J'ai plusieurs clients SL sur la page, se présente JS transmet les données à tous les clients? merci – Jayesh

+0

@Jayesh - chaque client Silverlight instancié peut avoir son propre gestionnaire onLoad pour pouvoir appeler différentes méthodes au démarrage. – ChrisF

2

Si tout ce que vous devez faire est d'obtenir à paires clé-valeur de la chaîne de requête, il y a une manière beaucoup plus simple en utilisant la HtmlPage classe:

HtmlPage.Document.QueryString["your_key"]; 
Questions connexes