zl程序教程

您现在的位置是:首页 >  后端

当前栏目

WPF+HTML5混合开发

2023-06-13 09:13:29 时间

       做wpf和html混合开发也有一段时间了,从传统桌面开发WPF转到web前端,有相通之处,也有差别比较大的地方,xaml到html都是类似xml的结构,style和web的style类似,而业务逻辑,前者一般是C#实现,后者一般是js,加上之前的学习过,使用起来还算顺手,但总的感觉是WPF开放比html开发方便太多,可能是前者接触更久的缘故,毕竟微软的东西,有自己一套成熟的体系,封装的系统且友好,而html与js,有vue.js,react.js等热门前端框架,无论是扩展性,丰富性,社区活跃度都比WPF要好

     说到混合开发,主的是CefSharp这个插件,提供一个Chrome浏览器的环境,这个插件,为C#的界面框架winform和wpf的都有支持,两个版本,具体插件安装和使用,网上有很多,就不赘述了,在这里,我主要说下我在使用过程种遇到的问题

1.环境要求

 .net framework 4.5.2 以及 和 VC++ 2015 runtime (x86/x64)  ,这两个环境,我是在用Inno Setup 打包的时候通过脚本判断安装的

C++的运行环境和CefSharp的版本有关,我用的是65的版本,最低要求VC++2015

2.C#和JS的交互

JS调用C#很简单,通过browser.RegisterJsObject(参数1, 参数2),参数2为C#种实例类的对象,参数1为C#中可以直接访问的对象,js中通过 参数1.方法,调用方法或属性,vue框架全局都可以访问。

但是C#调用JS,一种方式是把js中的方法和变量开放到打包好的index.html中,我在Vue中没有找到对应的方法,如果谁有方法,可以写在留言里。于是采用了一个笨方法,通过browser.EvaluateScriptAsync("Js代码")拿到标签中的值,或执行html标签上绑定的方法,如果没有对应标签,写一个隐藏的标签,可以通过这种方式,达到C#与js的互相调用

CefSharp 中文参考文档,看了不少文档,还是官方的最全面,遇到问题,先要从官方文档找,基本都有说明。