silverlight 和winform的结合使用比较简单,将silverlight承载在页面上,页面运行在winform上的webbrowser中即可。
这样的情况下,我没找到页面中silverlight和winform直接交互的方案,因此我用javascript做媒介打通silverlight和winform。
简单示例:
1. silverlight访问winform
winform可以直接自己的方法给页面js,只需要将需要暴露的方法设置为public,同时设置承载页面的form的com可见性为true并且提高信任级别:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public string Hello(){return "Hello World"};
}
页面调用winform方法:在页面上添加js函数
function Hello() {
var s = window.external.Hello();
return s;
}
silverlight调用js
HtmlWindow win = HtmlPage.Window;
win.Invoke("Hello",null);
这样就简单完成silverlight调用winform方法的过程。
winform访问silverlight
1) winform调用js
首先设置webbrowser控件的ObjectForScripting属性为true,然后调用如下代码:
HtmlDocument htmlDoc = webBrowser1.Document;
htmlDoc.InvokeScript(...)
2. js调用silverlight