Avalonia 官方截至 2024 年尚未内置 ColorPicker 控件,推荐使用社区维护的 Avalonia.ColorPicker 第三方库;也可基于原生控件手写简易版本,但需自行处理颜色转换与无障碍支持;复用 WPF/UWP 方案不推荐,因破坏跨平台性;官方已将 ColorPicker 列入规划,预计在 12.x 或后续版本集成。

Avalonia 官方目前(截至 2024 年)并未内置 ColorPicker 控件,但你可以通过以下几种成熟、实用的方式实现一个功能完整、体验良好的颜色选择器。
使用第三方开源库:Avalonia.ColorPicker
这是目前最推荐的方式。由社区维护的 Avalonia.ColorPicker 库提供了专业级的 HSV/RGB 色盘、色相条、透明度滑块、历史颜色、最近使用色、预设色板等完整功能,API 简洁且与 Avalonia 风格一致。
使用步骤:
- 在项目中安装 NuGet 包:
Avalonia.ColorPicker - 在
App.axaml或对应窗口的Styles中添加资源字典引用:<StyleInclude Source="resm:Avalonia.ColorPicker.Themes.Default.xaml?assembly=Avalonia.ColorPicker"/> - 在 XAML 中直接使用:
<acp:ColorPicker SelectedColor="{Binding MyColor}" /> - 支持双向绑定
Color类型(Avalonia.Media.Color),也支持string(如 "#FF0080FF")和uint格式
基于原生控件手写简易 ColorPicker
如果只需基础功能(比如仅选 RGB 值或十六进制),可组合 Avalonia 原生控件快速搭建:
- 用
Slider+TextBlock实现 R/G/B 三通道调节 - 用
Canvas或Image绘制渐变色盘(HSV 圆盘或 RGB 网格),配合PointerPressed/PointerMoved获取点击/拖拽坐标并换算为颜色 - 用
TextBox支持手动输入 HEX(如#3A86FF),搭配RegexValidationRule校验格式 - 用
Rectangle显示当前颜色预览,并设置Fill="{Binding CurrentBrush}"
注意:需自行处理颜色空间转换(如 RGB ↔ HSV)、Alpha 通道、无障碍支持和键盘导航,工作量不小,适合学习或极简场景。
复用 WPF/UWP 的 ColorPicker(不推荐)
有人尝试通过封装 WinUI 3 的 ColorPicker(Windows 平台)或调用 Windows API 实现,但这会严重破坏跨平台性,且 Avalonia 的渲染管线与 WinUI 不兼容,容易引发线程/上下文错误。除非你明确只面向 Windows 且接受高维护成本,否则应避免。
未来展望:官方 ColorPicker 已在规划中
Avalonia 团队已在 GitHub 的 UI Controls Roadmap 中将 ColorPicker 列为“planned”功能,预计会在 12.x 或后续稳定版本中集成。可关注该 issue 获取进展,但现阶段仍建议优先采用 Avalonia.ColorPicker 库。










