WPF与JS 函数、回调函数调用

来源:互联网 发布:淘宝上怎么手机发货 编辑:程序博客网 时间:2024/05/29 03:50

WPF代码
namespace WPFJsTest{    /// <summary>    /// Page1.xaml 的交互逻辑    /// </summary>    public partial class Page1 : Page    {        /// <summary>        /// JS页面中的JS对象实例,可以访问页面JS中的代码        /// </summary>        private dynamic scriptObject = null;        public Page1()        {            InitializeComponent();            // Retrieve the script object. The XBAP must be hosted in a frame or            // the HostScript object will be null.            if (!BrowserInteropHelper.IsBrowserHosted)            {                MessageBox.Show("不满足与JS调用条件");                return;            }            ///判断是不是有js            scriptObject = BrowserInteropHelper.HostScript;            if (scriptObject != null)            {                //初始化Html页面中的回调函数的对象,让Html页面中可以调用Wpf内部方法                scriptObject.IniWPFObjectOfHtml(new CallbackClass());            }        }        private void Button_Click(object sender, RoutedEventArgs e)        {            if (scriptObject != null)                scriptObject.WPFInvokeJS("WPF页面参数");        }    }    /// <summary>    /// 提供给HTML页面JS调用方法的类的实例    /// </summary>    [ComVisible(true)]    public class CallbackClass    {        /// <summary>        /// JS页面调用的方法        /// </summary>        /// <param name="message"></param>        public void MyMethod(string message)        {            MessageBox.Show("JS调用WPF函数\n参数:" + message);        }    }}


<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"><head>    <meta charset="utf-8" />    <title></title>    <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--不加上这一句,IE9貌似没效果-->    <script type="text/javascript">        //    调用WPF的JS函数        function JSInvokeWPF()        {            if (wpfObj == null)            {                alert("中间对象为空!");            }            else            {                wpfObj.MyMethod("HTML页面参数");            }        }        //    供WPF调用的函数        function WPFInvokeJS(parent)        {            alert("WPF调用JS函数\n参数:" + parent);        }        //Wpf中可以调用方法的对的实例        var wpfObj = null;        function IniWPFObjectOfHtml(obj) {            wpfObj = obj;        }    </script></head><body>    <input id="Button1" type="button" value="调用WPF方法" onclick="JSInvokeWPF();">    <!--在这个地方将Wpf的应用程序插入到Html的界面中-->    <iframe src="WPFJsTest.xbap" frameborder="0" marginheight="0" marginwidth="0" style="height:100%; width:100%;"></iframe></body></html>



0 0