从 JavaScript 调用silverlight方法

先决条件

  • Silverlight 版本 4.

  • 用于 Visual Studio 2010 的 Silverlight 4 Tools.

  • Microsoft Visual Studio 2010.

创建 Silverlight 项目和测试页

  略

注册用于客户端脚本访问的托管代码

1、

public Page()   
{    
   InitializeComponent();   
   HtmlPage.RegisterScriptableObject("Page", this);  
   this.timer = new DispatcherTimer();  
   this.timer.Tick += new EventHandler(Timer_Tick);   
   this.timer.Interval = TimeSpan.FromMilliseconds(400);   
}


 

2、在 script 元素中,创建 Silverlight 应用程序完成加载后将调用的 pluginLoaded 函数。

<script type="text/javascript" language="javascript">     
 var slcontrol = null;    
  function pluginLoaded(sender, args) {  
            if (sender != null && sender != 0) {           
   slcontrol = sender.getHost();      
    }   
   }    
  function StartPare( a, b)      {  
     if (slcontrol) {             
 slcontrol.Content.Page.StartPara(a,b);    
      }    
  }     
 function ReturnPare() {         
 if (slcontrol) {            
  var j = slcontrol.Content.Page.StopPara();        
      alert(j.toString());         
 }
 }  
</script>


 

3、Silverlight 控件标记与下面的代码类似:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400" height="300">
          <param name="source" value="ClientBin/JavaScriptToSilverlight.xap"/>
          <param name="onError" value="onSilverlightError" />
          <param name="background" value="white" />
          <param name="minRuntimeVersion" value="4.0.50401.0" />
          <param name="autoUpgrade" value="true" />
          <param name="onload" value="pluginLoaded" />
          <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50401.0" style="text-decoration:none">
               <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
          </a>
        </object>
使用 JavaScript 获取和设置托管代码属性值

该按钮的 HTML 标记

显示行号 复制代码
  1. <input type="button" value="StartPare" onclick="StartPare(2,3);" />
    
  2.  <input type="button" value="ReturnPare" onclick="ReturnPare();" />
    

silverlight页面的代码

int j = 0;
   [ScriptableMember]
   public void StartPara(int a, int b)
   {
        j = a + b;
   }
   [ScriptableMember]
   public int StopPara()
   {
       return j;
   }
原文地址:https://www.cnblogs.com/z_lb/p/1789175.html