Cet article suit la partie concernant le développement Silverlight disponible à travers ce lien.

Le code JavaScript est réellement l’élément clé qui permet d’assurer la communication entre l’application Silverlight et l’application lourde.

Bing Maps for Enterprise API JavaScript et Silverlight interoperabilite

 

Gestion de l’événement de chargement du contrôle Silverlight

Dans la déclaration de l’objet HTML composé, on ajoute un événement simple qui est déclenché après le chargement du plugin et du contrôle :

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
    width="100%" height="100%">
    <param name="source" value="ClientBin/SLClientMapsSimple.xap" />
    <param name="onError" value="onSilverlightError" />
    <param name="onLoad" value="pluginLoaded" />
    . . .
</
object
>

Voici le code de la méthode qui est alors associée :

function pluginLoaded(sender) {
    slCtl = sender.getHost();
}

Cette méthode initialise donc la variable déclarée globalement, comme étant une référence de l’application Silverlight.

Interaction JavaScript vers Silverlight

Dès lors, il devient possible d’accéder au contenu déclaré comme des membres utilisables depuis le code JavaScript. C’est ce qu’on réalise à travers les 3 méthodes suivantes déclarées dans le code JavaScript de la page :

function changeToHybrid() {
    if (slCtl != null)
        slCtl.Content.mySLapp.SetMapHybrid();
}

function changeMapStyle(style) {
    if (slCtl != null)
        if(style != "")
            slCtl.Content.mySLapp.SetMapStyle(style);
}

function addContent(encodedContent) {
    if (slCtl != null)
        if (encodedContent != "")
            slCtl.Content.mySLapp.AddContent(encodedContent);
}

On remarque l’utilisation de la référence récupérée dans la méthode principale et l’utilisation du nom de l’objet déclaré en Silverlight : slCtl.Content.mySLapp.

 

Interaction Silverlight vers JavaScript

On retrouve la méthode wpfDisplayMessage() déclenchée depuis le code Silverlight. Voici le code associé :

function wpfDisplayMessage(message) {
    // Show Message in WPF application
    window.external.DisplayMessageBox(message);
}

Nous détaillerons dans l’implémentation dans l’application lourde, le contenu de cette méthode et la technique pour la rendre accessible.

 

La prochaine et dernière partie présentera le développement concernant l’application lourde WPF ou Winform.