使用AvalonDock制作WPF多标签浏览器(二)

本文介绍如何使用AvalonDock库创建一个具备多标签功能的WPF Web浏览器。通过自定义事件和参数,实现在新标签页中添加WebBrowser控件。同时,详细阐述了处理焦点变化和地址栏输入的逻辑,以及遇到的一个与DocumentFloatingWindow相关的问题。
摘要由CSDN通过智能技术生成

 

闲话少叙,书接上文。

 

现在我们已经通过ReStyleDocumentPane加上了一个加号的按钮,并且可以通过点击该按钮给DocumentPaneItems添加一个DocumentContent了。

不过每个新添加进来的DocumentContent内部都是空的,而我们需要的是每个新标签中都有一个WebBrowser,要实现这一点很简单,只要给DocumentContentContentDocumentContentContentControl的子类)属性赋值为一个WebBrowser的实例就OK了。

 

但是这不应该是AvalonDock的默认行为,所以我们要把这部分写到客户端--也就是引用AvalonDock.dll文件或者直接引用AvalonDock工程的Solution中去。

如何可以在客户端得知有一个新的DocumentContent被添加进

您好,针对您的问题,CefSharp.Wpf 是一个基于 Chromium Embedded Framework(CEF)的 .NET 库,用于在 WPF 应用程序中嵌入浏览器。要实现多个浏览器隔离 Cookie,您可以在代码中创建多个 CefSharp.BrowserSubprocess 对象,并为每个对象设置独立的 cookie 存储路径。 具体实现步骤如下: 1. 在代码中创建多个 CefSharp.BrowserSubprocess 对象,例如: ``` var browser1 = new CefSharp.Wpf.ChromiumWebBrowser(); var browser2 = new CefSharp.Wpf.ChromiumWebBrowser(); ``` 2. 设置每个浏览器的 cookie 存储路径,例如: ``` browser1.BrowserSettings = new CefSharp.BrowserSettings { ApplicationCache = CefState.Disabled, WebSecurity = CefState.Enabled, FileAccessFromFileUrls = CefState.Enabled, UniversalAccessFromFileUrls = CefState.Enabled, DefaultEncoding = "UTF-8", JavaScript = CefState.Enabled, JavaScriptAccessClipboard = CefState.Disabled, JavaScriptCloseWindows = CefState.Disabled, JavaScriptDomPaste = CefState.Disabled, LocalStorage = CefState.Enabled, Plugins = CefState.Enabled, RemoteFonts = CefState.Enabled, WebGl = CefState.Enabled, WebAudio = CefState.Enabled, FileAccessFromUrls = CefState.Enabled, ImageLoading = CefState.Enabled, TextAreaResize = CefState.Enabled, WebSecurityEnabled = true, CefCommandLineArgs = new Dictionary<string, string> { { "disable-gpu", "1" }, { "disable-gpu-compositing", "1" }, { "disable-software-rasterizer", "1" } }, PersistSessionCookies = true, FilePath = @"C:\Users\user1\AppData\Local\Temp\cefsharp_cookies1" }; browser2.BrowserSettings = new CefSharp.BrowserSettings { ApplicationCache = CefState.Disabled, WebSecurity = CefState.Enabled, FileAccessFromFileUrls = CefState.Enabled, UniversalAccessFromFileUrls = CefState.Enabled, DefaultEncoding = "UTF-8", JavaScript = CefState.Enabled, JavaScriptAccessClipboard = CefState.Disabled, JavaScriptCloseWindows = CefState.Disabled, JavaScriptDomPaste = CefState.Disabled, LocalStorage = CefState.Enabled, Plugins = CefState.Enabled, RemoteFonts = CefState.Enabled, WebGl = CefState.Enabled, WebAudio = CefState.Enabled, FileAccessFromUrls = CefState.Enabled, ImageLoading = CefState.Enabled, TextAreaResize = CefState.Enabled, WebSecurityEnabled = true, CefCommandLineArgs = new Dictionary<string, string> { { "disable-gpu", "1" }, { "disable-gpu-compositing", "1" }, { "disable-software-rasterizer", "1" } }, PersistSessionCookies = true, FilePath = @"C:\Users\user1\AppData\Local\Temp\cefsharp_cookies2" }; ``` 3. 将浏览器对象添加到 WPF 窗口中,例如: ``` grid.Children.Add(browser1); grid.Children.Add(browser2); ``` 通过以上步骤,您就可以实现多个浏览器隔离 Cookie 的功能了。需要注意的是,每个浏览器的 cookie 存储路径应该是独立的,以避免 cookie 冲突。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值