大数跨境

Ursa 2.0 正式发布:迈向 Avalonia 新时代

Ursa 2.0 正式发布:迈向 Avalonia 新时代 dotNET跨平台
2026-05-04
140
导读:Ursa 2.0 正式适配 Avalonia 12 啦!

亲爱的开发者朋友们,我们非常高兴地向大家宣布:大熊 Ursa 高性能 Avalonia 控件集 V2.0 正式发布啦!




什么是 Ursa


Ursa 是一个 Avalonia 的高性能企业级控件集,旨在帮助您快速构建现代化的桌面应用程序。我们致力于提供一套高性能、易用且美观的控件,让您可以专注于业务逻辑的开发,节约时间和资源,提高开发效率。


Ursa已经加入.NET基金会,成为基金会的正式成员项目。


Ursa采用MIT许可协议,您可以无任何限制地在任何项目中使用Ursa。


更新内容


全面迎接Avalonia 12 


Ursa 2.0 面向Avalonia 12进行设计,在窗体装饰、焦点管理、无障碍设计等方面全面采用Avalonia 12的全新API。


关于ViewModel框架中立性的变更


从Ursa 2.0 开始,Ursa的部分控件将要求ViewModel层对Avalonia和Ursa框架产生依赖。


新增功能


新增控件:ThemeVariantMapper,用于子区域的主题自动切换。

新增控件:UrsaGroupBox:增强的GroupBox控件。

新增捷克语、德语和波兰语支持。


主题更新


  • Ursa的Semi主题现在依赖Semi.Avalonia主题库。

  • Semi相关主题库统一归属semi命名空间。

  • 高对比度ThemeVariant现在改为使用Semi.Avalonia定义的静态成员。


标题栏与标题按钮(TitleBar & CaptionButtons)

  • 依据Avalonia 12 更新,移除 CaptionButtons 和ChromeLayer 相关旧实现。

  • TitleBar 从 ChromeLayer 迁移至 VisualLayerManager 内部,覆盖 UrsaWindow 内容。

  • 恢复此前计划移除的 IsMaximizeButtonVisiable等 属性(Avalonia 原生 CanMaximize/CanMinimize 仅用于禁用按钮,这些属性继续用于控制按钮是否可见)。

  • UrsaWindow 需指定 WindowDrawnDecorations 的特殊主题资源。

  • 修复新TitleBar设计的相关布局问题。


对话框(Dialogs)


  • 根据Avalonia 12的最新设计,OverlayDialogHost现在无法覆盖窗体的最大最小关闭等按钮。

  • OverlayDialogHost 新增默认 SafePadding,避免标题按钮与对话框内容冲突。

  • 对话框 API 大规模重命名,为降低迁移成本,原API依然有效,保留并标记为Obsolete。

  • 控件重命名:DefaultDialogWindow → StandardDialogWindow、DefaultDialogControl → StandardDialogControl。

  • 指定 DefaultDialogControl 内部子控件的名称

  • ScrollBarVisibility 现已作为对话框和抽屉的可配置选项。


路径选择器(PathPicker)


  • 按钮内容(Content)与文件选择器对话框的窗口标题解耦,新增 ButtonContent 属性。

  • 命令参数改为使用 IStorageItem(需 ViewModel 引用 Avalonia),后续优化为传递 IReadOnlyList<IStorageItem>。


水印(Watermark)


  • 跟随 Avalonia V12 设计规范,所有 Watermark 重命名为 PlaceholderText。

  • 为这些控件新增 PlaceholderForeground 属性,支持样式自定义。


日期时间选择器(Date and Time Pickers)


  • 对日期时间选择器进行全面重构,移除焦点管理相关的绝大部分冗余代码,调整了DateRangePicker的内部管理。

  • 重命名:CalendarView → DatePickerCalendarView。

  • DatePickerCalendarView 改用 DateOnly 作为负载(原 DateTime)。

  • TimePickerPresenter 改用 TimeOnly 作为负载(原 TimeSpan)。

  • 交互调整:移除所有控件的弹出切换按钮,整个控件可触发弹出层显示/隐藏。

  • 文本解析逻辑:仅在确认(如按 Enter 键)或失去焦点时,将文本解析为日期/时间,不再主动实时更新。

  • 日期选择器、时间选择器、日期时间选择器和时间范围选择器现在支持 Confirm 确认功能。

  • 日期选择器、日期范围选择器、日期时间选择器新增 DefaultDateKind 属性,支持指定 Utc/Local/Unspecified(默认 Unspecified,)。

  • 新增系列控件:新增类型为DateTimeOffset的日期选择器、日期范围选择器和日期时间选择器。用户可以显式指定时间的Offset。

  • 新增系列控件:新增类型为DateOnly的日期选择器和日期范围选择器。

  • 新增系列控件:新增类型为TimeOnly的时间选择器和时间范围选择器。

  • 测试补充:新增 DateOnly 和 TimeOnly 选择器的无头测试。


标签输入(TagInput)


  • 完全重构 TagInput 控件,仅支持 ClosableTag 作为元素,DataTemplate 仅修改 ClosableTag 的内容。


通知与提示(Notification and Toast)


  • OnClose 委托新增 MessageCloseReason 参数,用于说明消息关闭原因。

  • 通知和提示管理器支持 Close/CloseAll 操作。


Bug 修复


  • 修复 ElasticWrapPanel 在设置 IsFillHorizontal 和 ItemWidth 时,不跳过隐藏子元素的问题。

  • 修复 MultiAutoCompleteBox 在按键提交时抛出异常的问题。

  • 修复 NavMenu 初始折叠时不加载子菜单的问题。

  • 简化 WindowMessageManager 中的装饰层检索逻辑。

  • 移除 ReversibleStackPanelUtils 工具



关于Ursa2.0的破坏性更新细节,欢迎访问GitHub讨论区查看



Ursa在2.0适配过程中与Avalonia团队紧密合作,大量的开发反馈合并到上游,在这里由衷感谢Avalonia团队的支持!


  • Pull Request - 20716 在Mantra适配过程中发现的空字符串Glyph分行算法问题

  • Pull Request - 20896 Invalidate Rect范围错误,Ursa OverlayDialog适配过程中发现的问题

  • Issues - 20875 新控件CommandBar,在Semi适配过程中发现的视觉错误和命名规范问题

  • Issues - 20911 自定义Decoration主题,在UrsaWindow适配过程中发现的需求

  • Pull Request - 20840 新Decoration体系的全屏问题,在Semi适配过程中发现的问题

  • Pull Request - 20934 冗余样式,在Semi适配过程中发现的问题

  • Issues - 20961 AccessKey失效,在Ursa Form适配过程中发现的问题

  • Pull Request - 20999 VLM的API变化,Ursa Notification适配过程中发现的问题

  • Pull Request - 21093 DatePicker样式问题,Semi适配过程中发现的问题

  • Pull Request - 20929 API规范问题,Ursa适配过程中发现的问题

  • Pull Request - 20856 TabControl DataContext传导,Ursa适配过程中发现的问题



获取更多信息和资源

欢迎访问Ursa的GitHub仓库以获取源代码,参与社区讨论,并跟踪最新的开发进度。

欢迎访问Ursa的GitHub 或 GitCode 仓库以获取源代码,参与社区讨论,并跟踪最新的开发进度。


https://github.com/irihitech/Ursa.Avalonia

https://gitcode.com/IRIHI_Technology/Ursa.Avalonia


【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 2104
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读39.1k
粉丝0
内容2.1k