views:

28

answers:

1

The scenario is I have a list of items in HTML; when I click on an item I use JS to dynamically create the HTML to load a silverlight app passing in the specific item # (using initParams); and my silverlight app visualizes this in a nice way. I do this on the same page rather than loading a new webpage, and the transition is smooth.

I know it is possible to have silverlight call a JS function on my page (opposite to what I need). I'm thinking it is also possible for my JS function to raise an event/call a method in silverlight, but not exactly sure how - has anyone tried this? While a workaround would be to recreate the silverlight app each time, just raising an event in existing, loaded SL app would would be the perfect solution to my problem.

regards ewart.

A: 

You can call a method in your Silverlight application from JavaScript. See this blog post

You just need to create a class in your silverlight app that registers itself as callable from JS:

[ScriptableType]
public partial class SomeClass
{
    private bool mouseHeldDown = false;
    private Point moveMeOffset = new Point();

    public SomeClass()
    {
        HtmlPage.RegisterScriptableObject("SilverlightObject", this);
    }


    [ScriptableMember]
    public void DoThing(int x)
    {
      //do some stuff
    }
}

Then you can call this from JS

document.getElementById("mySilverlightControl").content.SilverlightObject.DoThing(5);
Matthew Manela