2

ASP.NETページにSilverlightアプリケーションを埋め込みましたが、このSilverlightアプリケーションには2つの方法があります。

ASPXページからこれらのメソッドを呼び出したい。つまり、ASPXページに1つのButtonコントロールがあり、このボタンをクリックすると、Silverlightメソッドの1つを呼び出したい。

出来ますか?どうすればいいですか?

4

1 に答える 1

3

Javascriptを使用して、Silverlightメソッド呼び出しを行うことができます。

ユーザーがJavaScriptからSilverlightのメソッドにアクセスできるようにするには、[ScriptableMember]属性をそのメソッドに設定する必要があります。

ASPXメソッド/イベントによってこれらのメソッドを呼び出す場合は、Silverlightメソッドを呼び出すJavascriptを生成する必要があります。

例:

Silverlight:

ScriptableClass.cs

public class ScriptableClass
    {
        [ScriptableMember]
        public void ShowAlertPopup(string message)
        {
            MessageBox.Show(message, "JS Message", MessageBoxButton.OK);
        }
    } 

App.xaml.cs

 private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.RootVisual = new MainPage();
            ScriptableClass myScript = new ScriptableClass();
            HtmlPage.RegisterScriptableObject("scriptableClass", myScript);
        } 

index.html

 <script type="text/javascript">     
        var ctlSLHost = null;
        function onPluginLoaded(sender, args) {
            ctlSLHost = sender.getHost();
        }

        function InvokeSLMethod_ShowAlertPopup() {
            ctlSLHost.Content.scriptableClass.ShowAlertPopup
        ("Showing alert from JS in SL!");
        } 
    </script>

<div>
        <div style="width: 250px; background: lightblue; font-weight: bold;height:30px">
            HTML Part
        </div>
        <div>
            <input type="button" value="Invoke SL Method - ShowAlertPopup" 
        onclick="InvokeSLMethod_ShowAlertPopup();" /></div>
    </div>

 <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
            width="100%" height="80%">
            <param name="source" value="ClientBin/Silverlight2JSViseVersa.xap" />
            <param name="onError" value="onSilverlightError" />
            <param name="background" value="white" />
            <param name="minRuntimeVersion" value="4.0.50826.0" />
            <param name="autoUpgrade" value="true" />         
            <param name="onLoad" value="onPluginLoaded" />

            <a href=http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0 
        style="text-decoration: none">
                <img src=http://go.microsoft.com/fwlink/?LinkId=161376 
        alt="Get Microsoft Silverlight"
                    style="border-style: none" />
            </a>
        </object> 
于 2013-01-04T21:03:44.787 に答える