Avalonia不提供原生控件库,所有标准控件均为Skia自绘;嵌入原生控件需用NativeControlHost,支持WinForms、Gtk、Cocoa等平台句柄,但需手动处理生命周期、尺寸同步及事件桥接。

Avalonia 本身不提供“原生控件库”意义上的 Avalonia Native Controls(即一套由操作系统直接渲染、非 Avalonia 自绘的 Win32/WPF/Gtk 原生控件集合),它走的是自绘(skia-based)路线,所有标准控件(Button、TextBox 等)都是 Avalonia 自己实现并跨平台一致渲染的。
真正能嵌入原生控件的方式是 NativeControlHost
若你确实需要在 Avalonia 界面中显示平台专属的原生控件(如 WinForms Control、WPF Element、或 Linux 下的 Gtk Widget),核心方案是使用:
- NativeControlHost 控件:Avalonia 官方提供的宿主容器,专用于承载各平台原生句柄(HWND、GtkWidget、NSView 等)
- 它不渲染内容,只负责生命周期管理、尺寸同步和基本消息转发
- 需手动创建原生控件,并将其平台句柄(如 WinForms.Control.Handle)赋给
NativeControlHost.Child或通过IPlatformHandle封装后设置
WinForms 嵌入典型流程(Windows)
这是最常见场景,适用于渐进式迁移:
标签: linux windows 操作系统 mac macos win c# cos red
还木有评论哦,快来抢沙发吧~