Files
AtomUI/docs/releases/6.2.0-api-changes.zh-CN.md
2026-09-18 22:08:23 +08:00

5.6 KiB
Raw Permalink Blame History

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 仓库构建任务缓存属于源码构建内部实现, 已发布包的构建消费契约没有变化。