关于silverlight与winform交互的问题!

一只熊猫 2011-06-26 10:43:13
请教各位,silverlight如何与winform交互呢?

因为录音卡的开发接口是个ocx控件,silverlight项目无法引用这个ocx,所以我考虑用winform实现接口的方法跟事件,用个webbrowse打开silverlight项目。

查了半天资料也找到可用的办法,只有http://www.cnblogs.com/roverinsky/archive/2010/12/28/1918490.html有一些简单的介绍,是用javascript实现的,可我不懂javascript。

请做过相关功能的高手帮帮忙吧,谢谢了。
...全文
290 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
assky124 2011-06-28
  • 打赏
  • 举报
回复
MSDN上的演练你有做过?
一只熊猫 2011-06-27
  • 打赏
  • 举报
回复
网上N多silverlight与javascript交互的资料都不完整,整了1天终于弄出来了。
我把我找到的javascript调用silverlight的方法贴在这,希望可以帮到更多的人。

首先是MainPage.xaml,放一个textblock用来显示结果:
<TextBlock x:Name="txbTest" Height="20"/>


在MainPage.xmal.cs中声明让javascript调用的类和方法:

namespace SilverlightLoad_Javascrtip
{
[ScriptableType] //增加ScriptableType,表示此类可以让javascript调用
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
HtmlPage.RegisterScriptableObject("page", this);//注册对象
}

[ScriptableMember]
public void ChangeText(string newText) //增加ScriptableMember,表示此方法可以让javascript调用
{
txbTest.Text += newText;
}
}
}


打开承载silverlight的Asp.Net项目,也就是 xxxx.Web下的xxxTestPage.aspx,添加调用方法,并为silverlight项目的ojbect命名(很多资料中没有写明这个重点),再在页面随便添加一个元素,注册onlick事件,触发调用的方法。

    <script type="text/javascript">
function updateSilverlightText() {
var ele = document.getElementById("silvercontrol1");
alert("call ailverlight");
ele.content.page.ChangeText("This text has been changed");
}
</script>


    <form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object id="silvercontrol1" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/SilverlightLoad Javascrtip.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50826.0" />
<param name="autoUpgrade" value="true" />
<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="获取 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="myEle">
<p onclick="updateSilverlightText()">
Click here to change the text in silverlight.
</p>
</div>
</form>


如此便大功告成了!

jiangfanghong 2011-06-27
  • 打赏
  • 举报
回复
你在建silverlight项目的时候,选择Host the silverlight application in a new Web site就可以了
例如你建的项目名称为name.在web项目里面nameTestPage.html 和nameTestPage.aspx两个文件来承载silverlight。里面自动包含javascript实现。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧