août
2008
Bonjour à tous,
Dans cette nouvelle astuce nous allons voir comment appeler du code-behind C# depuis une fonction javascript.
Nous allons tout d’abord ajouter l’attribut [ScriptableType] à notre classe.
[ScriptableType]
public partial class Page : UserControl
{
[…]
}
Nous allons ensuite créer la méthode qui va être appelée depuis le Javascript.
[ScriptableMember]
public string HelloFromSilverlight(string name)
{
return string.Format(« Hello From Silverlight {0} », name);
}
On n’oublie pas l’attribut ScriptableMember, et la visibilité de notre méthode à public.
Nous allons maintenant enregistrer notre objet.
HtmlPage.RegisterScriptableObject(« SLapp », this);
C’est tout pour le côté C#.
Passons maintenant côté JS :
<script language= »javascript » type= »text/javascript »>
function HelloFromJS() {
var sl = document.getElementById(« Xaml1″);
if (sl != null) {
var hello = sl.Content.SLapp.HelloFromSilverlight(« Sky »);
alert(hello);
}
}
</script>[…]
<asp:Silverlight ID= »Xaml1″ runat= »server » Source= »~/ClientBin/TestSilverlight.xap » MinimumVersion= »2.0.30523″ Width= »100% » Height= »100% » />
On récupère notre contrôle Silverlight via la méthode getElementById puis on appelle notre méthode. On veille à bien nommer notre objet avec la nom qu’on a utilisé dans la méthode RegisterScriptableObject (ici SLapp).
Et voilà tout fonctionne. Ici l’exemple est un exemple assez inutile, mais vous avez vu le principe, si un jour vous êtes confronté à cette problématique.
A bientôt.