cefsharp wpf
github
安装 PM> Install-Package CefSharp.Wpf
解决方案->属性->配置属性->活动解决方案平台—新建-x64
在需要使用的窗体上引用xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
重新生成解决方案
引用
<cefSharp:ChromiumWebBrowser Name="browser" Grid.Row="0" Address="http://www.baidu.com" Margin="10,43,10,10"/>
加载页面
var value="http://cnglogs.com/ives";
browser.Load(value);
获取IBrowser对象,对页面的前进、后退操作需要此对象
private IBrowser IBrowser
{
get
{
return browser.GetBrowser();
}
}
IBrowser.GoForward();//前进
IBrowser.Reload();//重载
IBrowser.StopLoad();//停止
IBrowser.GoBack();//后退
加载svg
安装:Install-Package SharpVectors -Version 1.0.0
添加引用xmlns:svgc="http://sharpvectors.codeplex.com/svgc/"
<Button x:Name="btnPrev" HorizontalAlignment="Left" Width="32" Height="32" Margin="29,10,0,10" Click="btnPrev_Click_1" VerticalAlignment="Top">
<svgc:SvgViewbox IsHitTestVisible="False" Source="pack://application:,,,/resources/svg/arrow-left-2.svg"/>
</Button>
需要注意引用方式 Source="pack://application:,,,/1.svg" ,这样才能正确的引用资源。
svg 文件的属性默认是内容,务必改为 Resource
在同一个页面中打开链接
CefSharp中控制弹窗的接口是 ILifeSpanHandler,对OnBeforePopup进行重写
首先定义操作类
public class OpenPage : ILifeSpanHandler
{
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
{
}
public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures,
IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
newBrowser = null;
var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
chromiumWebBrowser.Load(targetUrl);
return true; //Return true to cancel the popup creation copyright by codebye.com.
}
}
然后添加处理事件 browser.LifeSpanHandler = new OpenPage();
wpf与js互相调用、传值
首先创建测试类来处理前台js请求
public class TestClass
{
public int testFunc(string msg="test")
{
MessageBox.Show($"Get msg:{msg}");
return 1;
}
}
将处理方法注入容器
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InjectMessages();
}
/// <summary>
/// 注入事件消息
/// </summary>
public void InjectMessages()
{
browser.JavascriptObjectRepository.ResolveObject += (s, eve) =>
{
var repo = eve.ObjectRepository;
if (eve.ObjectName == "TestObj")
{
repo.Register("TestObj", new TestClass(), isAsync: true, options: BindingOptions.DefaultBinder);
}
};
}
在前台绑定
<script>
// 注入
CefSharp.BindObjectAsync("TestObj");
function callBackEnd(msg) {
TestObj.testFunc(msg).then((r) => {
alert("Get result:"+r);
})
}
</script>
cefsharp wpf的更多相关文章
- 解决 CefSharp WPF控件不能使用输入法输入中文的问题(代码已提交到 github)
首先,本文所有 代码已经提交到github,需要的可以直接从github获取:https://github.com/starts2000/CefSharp,希望可以帮助到有需要的朋友们. CEF 简介 ...
- cefsharp wpf 中文输入问题解决方法
摘要 最近在搞一个客户端的项目,考虑使用wpf,内嵌webView的方式,访问h5页面.所以使用了CefSharp组件,但发现一个问题,就是在输入中文的时候,无法输入. 解决办法 去官方github的 ...
- Display HTML in WPF and CefSharp
https://www.codeproject.com/articles/881315/display-html-in-wpf-and-cefsharp-tutorial-part Download ...
- 在WPF中使用CefSharp嵌入浏览器
日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它是基于Google浏览器的一个组件,我们可以在 ...
- WPF使用cefsharp
最近在公司项目上会用到cefsharp.wpf,不知道为什么按照网上的配置一直无法运行成功,怎么配置可以参考以下这篇博文: http://www.cnblogs.com/TianFang/p/4573 ...
- WPF使用CefSharp嵌入网页
1.点击项目应用下的管理NuGet程序包 2.在浏览中输入cefsharp-->查找 CefSharp.Wpf-->点击安装,等待安装完成 3.如果遇到一下问题将解决方案和项目都改成64位 ...
- WPF 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项
1.检查代码不存在问题,最后找到问题,Nut管理包没有安装CefSharp.wpf. 2.安装对应的版本即可.
- 【WPF】使用CefSharp嵌入HTML网页
需求:WPF项目中要做用户的商铺主页,由于考虑到每个商家的主页布局各不相同,不能用XAML写死布局.最好的办法是WPF这边XAML写好一个容器,用户使用HTML可视化编辑器(比如这个)来准备好网页,输 ...
- 在WPF中使用CefSharp嵌入浏览器(转)
在WPF中使用CefSharp嵌入浏览器 日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它 ...
随机推荐
- 【2017-05-30】WebForm文件上传。从服务端删除文件
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- “System.Reflection.TargetInvocationException”类型的未经处理的异常在 mscorlib.dll 中发生
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#signalR 第一种,权限不够,在项目运行的时候弹出==>解决方法:以管理员权限运行vs ...
- windows下虚拟python环境
Windows虚拟环境 cd %HOMEDRIVE%%HOMEPATH%\Desktop python3 -m venv venv 环境变量修改脚本bat,把脚本放到%HOMEDRIVE%%HOM ...
- 开源Asp.net CMS mojoPortal-源码运行
1.下载mojoPortal源码 下载地址:http://mojoportal.codeplex.com/SourceControl/latest 我下载的版本是:2.4.0.9 MSSQL 以下是m ...
- centos 解决 mysql command not found
执行命令: mysql -V 报错内容: -bash: mysql: command not found 报错原因:系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令 ...
- 微信小程序获取地理位置授权
微信小程序获取地理位置授权,首先需要在app.json中添加配置: "permission": { "scope.userLocation": { " ...
- [Javascript] How to deal with floating number
What's your expect of the output?: console.log(0.1 + 0.2 === 0.3); The answer is 'false'. Because: 0 ...
- ubuntu服务器常用命令
1.查看系统版本 cat /etc/issue cat /etc/lsb-release 2.查看cpu lscpu 3.查看内存 free -m 4.查看硬盘大小 fdisk -l |grep Di ...
- find(expr|obj|ele)搜索所有与指定表达式匹配的元素。
find(expr|obj|ele) 概述 搜索所有与指定表达式匹配的元素.这个函数是找出正在处理的元素的后代元素的好方法. 所有搜索都依靠jQuery表达式来完成.这个表达式可以使用CSS1-3的选 ...
- HDU 5936 Difference ( 2016 CCPC 杭州 D && 折半枚举 )
题目链接 题意 : 给出一个 x 和 k 问有多少个 y 使得 x = f(y, k) - y .f(y, k) 为 y 中每个位的数的 k 次方之和.x ≥ 0 分析 : f(y, k) - y = ...