5.6 KiB
AtomUI 6.2.0 API 变更示例
AtomUI 6.2.0 在桌面输入、按钮、基础控件、通知和 Transfer 控件中包含有意的公共 API 破坏性变更, 下文给出对应迁移方式。
English version: AtomUI 6.2.0 API Change Examples。
快速对照
| 领域 | 6.2.0 之前 | 6.2.0 迁移 |
|---|---|---|
| SearchEdit 枚举 | SearchEditButtonStyle |
SearchButtonType |
| OtpLineEdit 分隔符 | SeparatorInterval 控制哪些 cell 边界显示 Separator |
Separator 在每个相邻 cell 之间显示;自定义内容使用 SeparatorTemplate,整体 cell 间距使用 OTP Token 的 CellGap |
| Button 表面 | CustomBackground |
直接设置标准 Background;轮廓设置 BorderBrush |
| Theme manager 实现者 | IThemeManager 没有 Semantic Part registry 成员 |
自定义 IThemeManager 实现增加 SemanticParts 属性,或使用内置 ThemeManager |
| Notification 管理器实现 | IMessageManager 和 INotificationManager 没有 DestroyAll 成员 |
自定义实现增加这两个方法 |
SearchEdit:重命名 SearchEditButtonStyle
公共枚举 SearchEditButtonStyle 已改为 SearchButtonType。SearchButtonStyle 属性名称和枚举值
(Default、Primary)保持不变,但属性类型发生变化。AutoCompleteSearchEdit.SearchButtonStyle 同样使用
新类型。
6.2.0 之前
var search = new SearchEdit
{
SearchButtonStyle = SearchEditButtonStyle.Primary
};
6.2.0
var search = new SearchEdit
{
SearchButtonStyle = SearchButtonType.Primary
};
请更新 C# using、XAML 和生成代码中对旧枚举类型的引用。属性名称、枚举值、搜索事件和按钮行为均保持不变。
重命名用于消除共享 atom: XAML 命名空间中生成的 Semantic Part 样式类与枚举同名导致的冲突。
OtpLineEdit:移除 SeparatorInterval
OtpLineEdit.SeparatorInterval 和 SeparatorIntervalProperty 已移除。设置 Separator 后,6.2.0 会在每一对相邻
cell 之间渲染分隔符,与 Ant Design OTP 分隔符契约一致。自定义 SeparatorTemplate 仍会收到
OtpLineEditSeparatorContext,其 separator index 表示从 1 开始的边界位置。
6.2.0 之前
var otp = new OtpLineEdit
{
Length = 6,
Separator = "-",
SeparatorInterval = 3
};
6.2.0
var otp = new OtpLineEdit
{
Length = 6,
Separator = "-"
};
如果应用需要分组 cell,请组合多个 OtpLineEdit 实例,或提供自定义模板和布局。可使用 OtpLineEditToken.CellGap
调整 cell host 的整体间距;该 Token 不会改变分隔符契约,也不会进入 Text。
Button:移除 CustomBackground
Button.CustomBackground、Button.CustomBackgroundProperty 以及内部 custom-background overlay 已移除。请直接设置
Background 和 BorderBrush。这些值在 hover、pressed 和 disabled 状态下保持用户选择的表面值,与普通内联样式语义一致。
6.2.0 之前
<atom:Button CustomBackground="#1677FF" Content="Save" />
6.2.0
<atom:Button Background="#1677FF" Content="Save" />
渐变或程序化设置使用同一个 Background 属性;自定义轮廓使用 BorderBrush,不再需要额外 overlay 或模板部件。
Transfer 受保护方法返回类型
受保护的 AbstractTransfer.BuildSourcePanelSource 和 AbstractTransfer.BuildTargetPanelSource 现在返回
IReadOnlyList<IItemKey>?。自定义 Transfer 派生控件如果重写或调用这些方法,需要同步更新方法签名和调用代码。
ProgressBar:移除 protected 绘制辅助方法
AbstractGeneralProgressBar.DrawIndicatorBar(DrawingContext, double, IBrush) 现在属于实现细节,不再以 protected 形式暴露。
调用它的派生进度控件需要自行实现绘制,或将定制迁移到控件模板与 Semantic Part 样式入口。
Separator:使用 SeparatorRail 虚线样式
线条绘制移动到模板拥有的 SeparatorRail 后,AbstractSeparator 上的静态 DashStyle 和 DotStyle 访问器已移除。
需要标准虚线定义时使用 SeparatorRail.DashStyle 和 SeparatorRail.DotStyle。
Notification 生命周期和管理器接口
WindowNotificationManager.CardExpiredPollingInterval 与 CleanupPollingInterval 已移除。管理器现在由单一调度器
协调过期和清理,进度刷新由调度器配置。
Notification Token 模型也与当前源码声明保持一致。旧的 NotificationMarginBottom、NotificationContentMargin 和
HeaderMargin Token 成员已移除,使用控件主题中更具体的通知间距 Token。
IMessageManager.DestroyAll() 与 INotificationManager.DestroyAll() 是新增接口成员。自定义管理器实现需要增加这些方法;
内置管理器会关闭当前所有消息或通知卡片。
Theme manager:实现 SemanticParts
Semantic Part registry 现在通过 IThemeManager.SemanticParts 暴露。这是有意的接口契约扩展:应用若自行实现
IThemeManager,必须增加该属性并返回 SemanticPartRegistry。使用 AtomUI 内置 ThemeManager 的应用不需要改动。
public sealed class CustomThemeManager : IThemeManager
{
public SemanticPartRegistry SemanticParts { get; } = SemanticPartRegistry.Empty;
// 其余 IThemeManager 成员按原方式实现。
}
兼容性说明
以上变更是 v6.1.9 到 v6.2.0 审计确认的破坏性变更。本区间引入的 content-addressed 仓库构建任务缓存属于源码构建内部实现, 已发布包的构建消费契约没有变化。