zoukankan      html  css  js  c++  java
  • vs2010 学习Silverlight学习笔记(19):JS调用SL

    概要:

           上篇在SL中调用JS的感觉自己学习的很差,关于JS用的也很简单。这篇是关于在JS中调用.net代码的。

    内容:

        ScriptableMemberAttribute:允许我们在Silverlight把成员暴露给 Script。

    ScriptableTypeAttribute:允许我们在Silverlight把类型暴露给Script。

    [ScriptableMember]//将方法暴漏给js
    public void Add(int x, int y)
    {
        int z = x + y;
        this.result.Text = String.Format("{0} + {1} = {2}", x, y, z);
    }
    [ScriptableType]//将类成员暴漏给js
    public class Calculator
    {
        [ScriptableMember]
        public int Add(int x, int y)
        {
            return x + y;
        }
    }

    使用RegisterScriptableObject

    并在加载时注册一个脚本可调用的当前页面实 例:

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        HtmlPage.RegisterScriptableObject("Calculator", this);
    }
    [ScriptableMember]
    public void Add(int x, int y)
    {
        int z = x + y;
        this.result.Text = String.Format("{0} + {1} = {2}", x, y, z);
    }
    Js文件:
    <script type="text/javascript">
        function callSilverlight()
        {
            var slPlugin = $get('Xaml1');
            
            slPlugin.content.Calculator.Add($get('txt1').value,$get('txt2').value);
        }
    </script>

    Html代码:

    <div class="main">
        <input id="txt1" type="text" />
        <input id="txt2" type="text" />
        <input id="Button1" type="button" value="确 定" onclick="callSilverlight()"
    />
    </div>

    使用RegisterCreateableType

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
       HtmlPage.RegisterCreateableType("calculator", typeof(Calculator));

    }

    [ScriptableType]
    public class Calculator
    {
        [ScriptableMember]
        public int Add(int x, int y)
        {
            return x + y;
        }
    }
    <script type="text/javascript">
        function callSilverlight()
        {
            var slPlugin = $get('Xaml1');
            var cal = slPlugin.content.services.createObject("calculator");
            
            alert(cal.Add($get('txt1').value,$get('txt2').value));
        }
    </script>
  • 相关阅读:
    仿新浪微博的ListView下拉更新功能
    Android如何防止apk程序被反编译
    Android横竖屏切换
    如何让Android字体自适应屏幕分辨率
    开工啦,从新浪搬到这儿来。。
    nginx + php +上传大文件
    mac + apache2 +memcached +yii
    ubuntu12.04 + git server+gitosis中央服务器的安装与配置
    virtual box ubuntu 下共享文件夹+全屏显示+修改uuid+cpu虚拟化技术
    ubunut+nginx + yii + url重写(url rewrite)+mac+apache
  • 原文地址:https://www.cnblogs.com/yaoge/p/1822610.html
Copyright © 2011-2022 走看看