WPF使用CefSharp显示网页
前言
遇到要将已经开发完成的网页封装到客户端显示的需求,所以就用WPF+CefSharp来实现客户端,期间遇到一些坑记录一下。
引入CefSharp
- 通过Nuget搜索CefSharp安装组件;
- XAML头引入
xmlns:wpf="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
; - 添加组件
<wpf:ChromiumWebBrowser Name="Browser"/>
设置配置项
根据需要设置相应配置项,大家可以根据自己需要去搜索。
C#跟Js
- 启用
Browser.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
- 注册C#对象到Js
Browser.JavascriptObjectRepository.Register("csObj", new CsharpObject(), isAsync: false, options: BindingOptions.DefaultBinder);
CsharpObject
是自定义的用于跟Js交互的对象。
下载功能
下载功能需要实现IDownloadHandler
接口。
感谢“咸鱼翻身?”大佬: https://www.cnblogs.com/mchao/p/13935777.html
拖放功能
网页中有用到一个拖放排序功能,CefSharp默认是禁用拖放功能的。
- 启用
Browser.AllowDrop = true;
- 实现
IDragHandler
接口
public class CustomDragHandler : IDragHandler
{
public bool OnDragEnter(IWebBrowser chromiumWebBrowser, IBrowser browser, IDragData dragData, DragOperationsMask mask)
{
return false;
}
public void OnDraggableRegionsChanged(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IList<DraggableRegion> regions)
{
}
}
- 设置给CefSharp对象
Browser.DragHandler = new CustomDragHandler();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?