在xaml页面中放置一个textblock控件来绑定数据

<ItemsControl   x:Name="cityname">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock  Text="{Binding  CityName}" />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

实体类:

public class MyData
    {
        public string MyName { get; set; }
        public string CityName { get; set; }
        public double Longatuide { get; set; }
        public MyData(string name,string cityname, double atuide)
        {
            CityName=cityname;
            MyName = name;
            Longatuide = atuide;
        }
    }

后他代码:

public MainPage()

{

InitializeComponent();

Myinfos("China");

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

HtmlPage.RegisterScriptableObject("showmessage",this);    //注册要想浏览器公开的对象,然后才可以从js调用

}

[ScriptableMember]  //使用ScriptableMemberAttribute标记那些成员可被脚本化

public void Myinfos(string strwhere)

{

List<MyData> datas = GetMyInfo(strwhere);

cityname.ItemsSource = datas;

}

public  List<MyData>  GetMyInfo(string  strwhere)

{

List<MyData> datas = new List<MyData>();

switch(strwhere)

{

case  "China":

{

datas.Add(new MyData("danche","中国",12233));

break;

}

case  "America":

{

datas.Add(new MyData("金泰熙","韩国",20013));

break;

}

}

return datas;

}

现在在silverlight宿主html中添加按钮:

</div> 
            <div id="JScontrol"   style="width:400px; height:76px; left:0px;top:200px; position:absolute">
            <input  type="button"  id="America"   value="btnAmercia" onclick="callMyinfos('America');" />
            <input  type="button"  id="China" value="btnChina"  onclick="callMyinfos('China');" />
        </div>

函数:

<script type="text/javascript">
        function callMyinfos(country) {
            var mycontroldiv = document.getElementById("mycontrol");
            mycontroldiv.content.showmessage.Myinfos(country);//此处的showmessage就是在silverlight后台注册的key
        }
    </script>

完整代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>silverlightviahtmlandjs</title>

<style type="text/css">

html, body {      height: 100%;      overflow: auto;     }

body {      padding: 0;      margin: 0;     }

#silverlightControlHost {      height: 100px;      width:200px;      text-align:center;     }

</style>

<script type="text/javascript" src="Silverlight.js"></script>

<script type="text/javascript">

function onSilverlightError(sender, args) {

var appSource = "";

if (sender != null && sender != 0) {

appSource = sender.getHost().Source;

}

var errorType = args.ErrorType;

var iErrorCode = args.ErrorCode;

if (errorType == "ImageError" || errorType == "MediaError") {               return;             }

var errMsg = "Silverlight 应用程序中未处理的错误 " +  appSource + "\n" ;

errMsg += "代码: "+ iErrorCode + "    \n";

errMsg += "类别: " + errorType + "       \n";

errMsg += "消息: " + args.ErrorMessage + "     \n";

if (errorType == "ParserError") {

errMsg += "文件: " + args.xamlFile + "     \n";

errMsg += "行: " + args.lineNumber + "     \n";

errMsg += "位置: " + args.charPosition + "     \n";

}

else if (errorType == "RuntimeError") {

if (args.lineNumber != 0) {

errMsg += "行: " + args.lineNumber + "     \n";

errMsg += "位置: " +  args.charPosition + "     \n";

}

errMsg += "方法名称: " + args.methodName + "     \n";

}

throw new Error(errMsg);         }

</script>

<script type="text/javascript">

function callMyinfos(country) {

var mycontroldiv = document.getElementById("mycontrol");

mycontroldiv.content.showmessage.Myinfos(country);

}

</script>

</head>

<body>

<form id="form1" runat="server" style="height:100%">

<div id="silverlightControlHost">

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"  id="mycontrol">

<param name="source" value="ClientBin/silverlightviahtmlandjs.xap"/>

<param name="onError" value="onSilverlightError" />

<param name="background" value="white" />

<param name="minRuntimeVersion" value="4.0.50401.0" />

<param name="autoUpgrade" value="true" />

<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="获取 Microsoft Silverlight" style="border-style:none"/>

</a>

</object>

<iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>

</div>

<div id="JScontrol"   style="width:400px; height:76px; left:0px;top:200px; position:absolute">

<input  type="button"  id="America"   value="btnAmercia" onclick="callMyinfos('America');" />

<input  type="button"  id="China" value="btnChina"  onclick="callMyinfos('China');" />

</div>

</form>

</body>

</html>

html中调用silverlight中的方法的更多相关文章

  1. VC中调用COM组件的方法(转载)

    原文参考:http://hi.baidu.com/mingyueye/item/53ebecd44da76917d80e4449 总结一下在VC中调用COM组件的方法 准备及条件: COM服务器为进程 ...

  2. (转)DedeCms Runphp 标签中调用其他变量的方法

    DedeCms Runphp 标签中调用其他变量的方法 我们都知道,在DedeCMS中是可以使用PHP的,常见的方法就是if else了,例如模板制作中,我们需要对来源和作者进行判断,如果为空,则提示 ...

  3. vc中调用Com组件的方法详解

    vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGet ...

  4. vue 在methods中调用mounted中的方法?

    首先可以在data中先声明一个变量 比如 isShow=' ' mounted 中 ---> methods 中 --->  this.sureDelBox(item) 直接this调用 ...

  5. 在JS中调用CS里的方法(PageMethods)

    在JS中调用CS里的方法(PageMethods) 2014年04月28日 11:18:18 被动 阅读数:2998   最近一直在看别人写好的一个项目的源代码,感觉好多东西都是之前没有接触过的.今天 ...

  6. 在Android Studio中调用so中的方法

    本节用的so是上节用Android Studio创建的so.想在Android Studio中调用so中的方法,需要先引用so.Android Studio中引用so的方法有二种,下面开始介绍. 一 ...

  7. 关于controller中调用多个service方法的问题

    一般service方法是有事务的,把所有操作封装在一个service方法中是比较安全的. 如果在controller中调用多个service方法,只有查询的情况下是可以这样的.

  8. 在C++中调用DLL中的函数 (3)

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

  9. 在C++中调用DLL中的函数(3)

    1.dll的优点 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架,ATL.MFC等 ...

随机推荐

  1. php mysql_select_db实例

    在php中,我们经常需要连接数据库和操作数据库, 在操作数据库之前,我们需要选择一个数据库,本文章通过实例向小伙伴们介绍php mysql_select_db选择数据库的使用方法. 首先介绍一下mys ...

  2. 洛谷P2729 饲料调配 Feed Ratios

    P2729 饲料调配 Feed Ratios 36通过 103提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 农夫约翰从来只用调 ...

  3. 华为OJ平台——杨辉三角的变形

    import java.util.Scanner; /** * 杨辉三角的变形 *第一行为1,后面每一行的一个数是其左上角到右上角的数的和,没有的记为0 * 1 * 1 1 1 * 1 2 3 2 1 ...

  4. pb中读取大文本数据

    string ls_FileName,lb_FileDatas,lb_FileData  long ll_FileLen,ll_Handle,ll_Loop,ll_Bytes,ll_Loops,ll_ ...

  5. MySQL初夜(乱码问题,命令行客户端使用)

    一.乱码问题 装好MySQL,并且将数据从SQLServer导入到MySQL之后,程序一直报错. 解决方案: 首先,输入命令: show variables like "character_ ...

  6. 【MVC】自定义ASP.NET MVC Html辅助方法

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  7. 百度地图API示例之添加自定义控件

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  8. iPhone 6 (iOS 9.2) extractiion failed by XRY

    My colleague extracted an iPhone 6 with XRY and it is iOS 9.2 . Unfortunately the Wizard crashed and ...

  9. Can Live View boot up images acquired from 64bit OS evidence?

    Some said Live View could only boot up images acquired from 32bit OS evidence. I have to say that it ...

  10. openSUSE之SSH登录

    环境: 1:操作系统:openSUSE 2:SSH工具:Xshell 3:virtualbox 解决问题:Xshell通过ssh登录openSUSE进行操作. 1:virtualbox安装好openS ...