# WebKitDemo **Repository Path**: dingshuanglei/WebKitDemo ## Basic Information - **Project Name**: WebKitDemo - **Description**: No description available - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-10 - **Last Updated**: 2026-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebKitDemo 基于 Avalonia UI 和 WebKit 的跨平台 WebView 控件演示项目。 ## 项目简介 WebKitDemo 是一个展示如何在 Avalonia 应用程序中集成 WebKit 浏览器的演示项目。该项目提供了一个自定义的 WebView 控件,支持在 Linux 平台上嵌入 WebKit 浏览器内容。 ## 项目结构 ### 核心组件 - **Ding.WebView** - WebView 控件库 - `WebView.cs` - WebView 控件主类,继承自 NativeControlHost - `LinuxWebViewHost.cs` - Linux 平台 WebView 主机实现 - `Linux_GtkManager.cs` - GTK 线程管理和 P/Invoke 互操作封装 - `WebViewHost.cs` - WebView 主机接口定义 ### 演示应用 - **Demo** - WebView 使用演示 - `Views/MainWindow.axaml.cs` - 主窗口,包含 WebKit 集成示例 - **Ding** - 基础 Avalonia 应用程序模板 ## 功能特性 - ✅ 基于 Avalonia UI 框架 - ✅ Linux 平台 WebKit 支持 - ✅ GTK 线程安全管理 - ✅ 跨线程调用封装 - ✅ 纯本机控件嵌入 - ✅ URL 加载功能 ## 技术栈 - **框架**: Avalonia UI - **浏览器引擎**: WebKit - **GUI 工具包**: GTK+ - **编程语言**: C# - **.NET 版本**: 跨平台支持 ## 快速开始 ### 环境要求 - .NET SDK 6.0 或更高版本 - Linux 桌面环境 - GTK+ 3.0 开发库 - WebKit2GTK 开发库 ### 安装依赖 ```bash # Ubuntu/Debian sudo apt-get install libgtk-3-dev libwebkit2gtk-4.0-dev # Fedora/RHEL sudo dnf install gtk3-devel webkit2gtk4.0-devel # Arch Linux sudo pacman -S gtk3 webkit2gtk ``` ### 运行演示 ```bash cd Demo dotnet run ``` ## 使用方法 ### XAML 中使用 ```xml ``` ### 代码中设置 URL ```csharp var webView = new WebView(); webView.Url = "https://www.example.com"; ``` ## API 参考 ### WebView 类 ```csharp // URL 属性 public string Url { get; set; } ``` ### GtkManager 类 ```csharp // 确保 GTK 初始化 public static void EnsureInitialized() // 创建带有 WebView 的插件 public static GtkPlugWithWebView CreatePlugWithWebView(ulong parentXid, string? url) // 销毁插件 public static void DestroyPlug(GtkPlugWithWebView? plug) ``` ## 平台支持 | 平台 | 状态 | 备注 | |------|------|------| | Linux | ✅ 已支持 | 使用 GTK + WebKit | | Windows | ⏳ 计划中 | 需要 Edge WebView2 | | macOS | ⏳ 计划中 | 需要 WKWebView | ## 项目架构 ``` WebKitDemo/ ├── Demo/ # 演示应用 │ ├── Views/ # 视图层 │ └── ViewModels/ # 视图模型 ├── Ding/ # 基础应用 ├── Ding.WebView/ # WebView 控件库 │ ├── Hosts/ # 平台主机实现 │ ├── Interfaces/ # 接口定义 │ └── Managers/ # 平台管理类 └── LICENSE # 许可证 ``` ## 许可证 本项目采用 [LICENSE](LICENSE) 中指定的许可证。 ## 贡献指南 欢迎提交 Issue 和 Pull Request 来帮助改进项目。 ## 参考资料 - [Avalonia UI 文档](https://docs.avaloniaui.net/) - [WebKitGTK 文档](https://webkitgtk.org/) - [GTK+ 文档](https://www.gtk.org/)