namespace LanMountainDesktop.PluginSdk; /// /// 外观变更事件参数,当主题、圆角或其他外观属性变化时触发。 /// public sealed class AppearanceChangedEvent : EventArgs { /// /// 创建外观变更事件实例。 /// /// 当前外观快照 /// 变更的属性集合 public AppearanceChangedEvent( PluginAppearanceSnapshot snapshot, IReadOnlyCollection changedProperties) { ArgumentNullException.ThrowIfNull(snapshot); ArgumentNullException.ThrowIfNull(changedProperties); Snapshot = snapshot; ChangedProperties = changedProperties; } /// /// 当前外观快照。 /// public PluginAppearanceSnapshot Snapshot { get; } /// /// 变更的属性集合。 /// public IReadOnlyCollection ChangedProperties { get; } /// /// 圆角是否发生变化。 /// public bool CornerRadiusChanged => ChangedProperties.Contains(AppearanceProperty.CornerRadius); /// /// 主题变体(亮色/暗色)是否发生变化。 /// public bool ThemeVariantChanged => ChangedProperties.Contains(AppearanceProperty.ThemeVariant); /// /// 强调色是否发生变化。 /// public bool AccentColorChanged => ChangedProperties.Contains(AppearanceProperty.AccentColor); /// /// 圆角风格是否发生变化。 /// public bool CornerRadiusStyleChanged => ChangedProperties.Contains(AppearanceProperty.CornerRadiusStyle); /// /// 检查指定属性是否发生变化。 /// /// 要检查的属性 /// 如果属性发生变化则返回 true public bool HasChanged(AppearanceProperty property) { return ChangedProperties.Contains(property); } /// /// 检查是否有任何外观属性发生变化。 /// public bool HasAnyChanges => ChangedProperties.Count > 0; } /// /// 可变更的外观属性枚举。 /// public enum AppearanceProperty { /// /// 圆角Token值发生变化。 /// CornerRadius, /// /// 主题变体(亮色/暗色)发生变化。 /// ThemeVariant, /// /// 强调色发生变化。 /// AccentColor, /// /// 圆角风格(Sharp/Balanced/Rounded/Open)发生变化。 /// CornerRadiusStyle, /// /// 壁纸发生变化。 /// Wallpaper, /// /// 系统材质模式发生变化。 /// SystemMaterialMode, /// /// 所有外观属性(用于批量更新)。 /// All }