diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml index 275b25e01e..15e956bdc6 100644 --- a/api/Avalonia.nupkg.xml +++ b/api/Avalonia.nupkg.xml @@ -97,6 +97,12 @@ baseline/Avalonia/lib/netstandard2.0/Avalonia.Base.dll current/Avalonia/lib/netstandard2.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Controls.ResourcesChangedEventArgs.Empty + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 F:Avalonia.Media.DrawingImage.ViewboxProperty @@ -109,6 +115,12 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Controls.ResourcesChangedEventArgs.#ctor + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0002 M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers) @@ -487,6 +499,12 @@ baseline/Avalonia/lib/net6.0/Avalonia.Dialogs.dll current/Avalonia/lib/net6.0/Avalonia.Dialogs.dll + + CP0002 + F:Avalonia.Controls.ResourcesChangedEventArgs.Empty + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 F:Avalonia.Media.DrawingImage.ViewboxProperty @@ -499,6 +517,12 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + M:Avalonia.Controls.ResourcesChangedEventArgs.#ctor + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0002 M:Avalonia.Input.IKeyboardNavigationHandler.Move(Avalonia.Input.IInputElement,Avalonia.Input.NavigationDirection,Avalonia.Input.KeyModifiers) @@ -1201,6 +1225,18 @@ baseline/Avalonia/lib/netstandard2.0/Avalonia.OpenGL.dll current/Avalonia/lib/netstandard2.0/Avalonia.OpenGL.dll + + CP0007 + T:Avalonia.Controls.ResourcesChangedEventArgs + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + + + CP0007 + T:Avalonia.Controls.ResourcesChangedEventArgs + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0008 T:Avalonia.Media.StreamGeometryContext @@ -1225,12 +1261,24 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0009 + T:Avalonia.Controls.ResourcesChangedEventArgs + baseline/Avalonia/lib/net10.0/Avalonia.Base.dll + current/Avalonia/lib/net10.0/Avalonia.Base.dll + CP0009 T:Avalonia.Platform.Screen baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0009 + T:Avalonia.Controls.ResourcesChangedEventArgs + baseline/Avalonia/lib/net8.0/Avalonia.Base.dll + current/Avalonia/lib/net8.0/Avalonia.Base.dll + CP0009 T:Avalonia.Platform.Screen diff --git a/src/Avalonia.Base/Controls/IResourceHost.cs b/src/Avalonia.Base/Controls/IResourceHost.cs index 361e3562ec..286f0e36ef 100644 --- a/src/Avalonia.Base/Controls/IResourceHost.cs +++ b/src/Avalonia.Base/Controls/IResourceHost.cs @@ -29,12 +29,4 @@ namespace Avalonia.Controls /// void NotifyHostedResourcesChanged(ResourcesChangedEventArgs e); } - - // TODO12: merge with IResourceHost - internal interface IResourceHost2 : IResourceHost - { - event EventHandler ResourcesChanged2; - - void NotifyHostedResourcesChanged(ResourcesChangedToken token); - } } diff --git a/src/Avalonia.Base/Controls/ResourceDictionary.cs b/src/Avalonia.Base/Controls/ResourceDictionary.cs index e0944a5708..f8f6267e7b 100644 --- a/src/Avalonia.Base/Controls/ResourceDictionary.cs +++ b/src/Avalonia.Base/Controls/ResourceDictionary.cs @@ -358,7 +358,7 @@ namespace Avalonia.Controls if (hasResources) { - owner.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + owner.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } @@ -385,7 +385,7 @@ namespace Avalonia.Controls if (hasResources) { - owner.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + owner.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } diff --git a/src/Avalonia.Base/Controls/ResourceNodeExtensions.cs b/src/Avalonia.Base/Controls/ResourceNodeExtensions.cs index 36cc00d245..07c1c8d654 100644 --- a/src/Avalonia.Base/Controls/ResourceNodeExtensions.cs +++ b/src/Avalonia.Base/Controls/ResourceNodeExtensions.cs @@ -158,7 +158,7 @@ namespace Avalonia.Controls protected override void Initialize() { - _target.SubscribeToResourcesChanged(ResourcesChanged, ResourcesChanged2); + _target.ResourcesChanged += ResourcesChanged; if (_target is IThemeVariantHost themeVariantHost) { @@ -168,7 +168,7 @@ namespace Avalonia.Controls protected override void Deinitialize() { - _target.UnsubscribeFromResourcesChanged(ResourcesChanged, ResourcesChanged2); + _target.ResourcesChanged -= ResourcesChanged; if (_target is IThemeVariantHost themeVariantHost) { @@ -186,11 +186,6 @@ namespace Avalonia.Controls PublishNext(GetValue()); } - private void ResourcesChanged2(object? sender, ResourcesChangedToken token) - { - PublishNext(GetValue()); - } - private void ActualThemeVariantChanged(object? sender, EventArgs e) { PublishNext(GetValue()); @@ -230,7 +225,7 @@ namespace Avalonia.Controls _target.OwnerChanged += OwnerChanged; _owner = _target.Owner; - _owner?.SubscribeToResourcesChanged(ResourcesChanged, ResourcesChanged2); + _owner?.ResourcesChanged += ResourcesChanged; if (_overrideThemeVariant is null && _owner is IThemeVariantHost themeVariantHost) { @@ -242,7 +237,7 @@ namespace Avalonia.Controls { _target.OwnerChanged -= OwnerChanged; - _owner?.UnsubscribeFromResourcesChanged(ResourcesChanged, ResourcesChanged2); + _owner?.ResourcesChanged -= ResourcesChanged; if (_overrideThemeVariant is null && _owner is IThemeVariantHost themeVariantHost) { @@ -270,7 +265,7 @@ namespace Avalonia.Controls private void OwnerChanged(object? sender, EventArgs e) { - _owner?.UnsubscribeFromResourcesChanged(ResourcesChanged, ResourcesChanged2); + _owner?.ResourcesChanged -= ResourcesChanged; if (_overrideThemeVariant is null && _owner is IThemeVariantHost themeVariantHost) { @@ -279,7 +274,7 @@ namespace Avalonia.Controls _owner = _target.Owner; - _owner?.SubscribeToResourcesChanged(ResourcesChanged, ResourcesChanged2); + _owner?.ResourcesChanged += ResourcesChanged; if (_overrideThemeVariant is null && _owner is IThemeVariantHost themeVariantHost2) { @@ -299,11 +294,6 @@ namespace Avalonia.Controls PublishNext(); } - private void ResourcesChanged2(object? sender, ResourcesChangedToken token) - { - PublishNext(); - } - private object? GetValue() { var theme = _overrideThemeVariant ?? (_target.Owner as IThemeVariantHost)?.ActualThemeVariant; diff --git a/src/Avalonia.Base/Controls/ResourceProvider.cs b/src/Avalonia.Base/Controls/ResourceProvider.cs index f0ab42a4a8..f73f11e713 100644 --- a/src/Avalonia.Base/Controls/ResourceProvider.cs +++ b/src/Avalonia.Base/Controls/ResourceProvider.cs @@ -45,7 +45,7 @@ public abstract class ResourceProvider : AvaloniaObject, IResourceProvider protected void RaiseResourcesChanged() { - Owner?.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } /// @@ -57,7 +57,7 @@ public abstract class ResourceProvider : AvaloniaObject, IResourceProvider { if (HasResources) { - owner.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + owner.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } @@ -70,7 +70,7 @@ public abstract class ResourceProvider : AvaloniaObject, IResourceProvider { if (HasResources) { - owner.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + owner.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } diff --git a/src/Avalonia.Base/Controls/ResourcesChangedEventArgs.cs b/src/Avalonia.Base/Controls/ResourcesChangedEventArgs.cs index a60c95a2e0..f78910b003 100644 --- a/src/Avalonia.Base/Controls/ResourcesChangedEventArgs.cs +++ b/src/Avalonia.Base/Controls/ResourcesChangedEventArgs.cs @@ -1,10 +1,24 @@ -using System; +using System.Threading; -namespace Avalonia.Controls +namespace Avalonia.Controls; + +/// +/// Represents the event arguments of . +/// The identifies the changes. +/// +/// The sequence number used to identify the changes. +/// +/// For performance reasons, this type is a struct. +/// Avoid using a default instance of this type or its default constructor, call instead. +/// +public readonly record struct ResourcesChangedEventArgs(int SequenceNumber) { - // TODO12: change this to be a struct, remove ResourcesChangedToken - public class ResourcesChangedEventArgs : EventArgs - { - public static new readonly ResourcesChangedEventArgs Empty = new ResourcesChangedEventArgs(); - } + private static int s_lastSequenceNumber; + + /// + /// Creates a new instance of with an auto-incremented sequence number. + /// + /// + public static ResourcesChangedEventArgs Create() + => new(Interlocked.Increment(ref s_lastSequenceNumber)); } diff --git a/src/Avalonia.Base/Controls/ResourcesChangedHelper.cs b/src/Avalonia.Base/Controls/ResourcesChangedHelper.cs deleted file mode 100644 index 8ad121ad3a..0000000000 --- a/src/Avalonia.Base/Controls/ResourcesChangedHelper.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Avalonia.LogicalTree; - -namespace Avalonia.Controls; - -internal static class ResourcesChangedHelper -{ - internal static void NotifyHostedResourcesChanged(this IResourceHost host, ResourcesChangedToken token) - { - if (host is IResourceHost2 host2) - host2.NotifyHostedResourcesChanged(token); - else - host.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Empty); - } - - internal static void NotifyResourcesChanged(this ILogical logical, ResourcesChangedToken token) - { - if (logical is StyledElement styledElement) - styledElement.NotifyResourcesChanged(token); - else - logical.NotifyResourcesChanged(ResourcesChangedEventArgs.Empty); - } - - internal static void SubscribeToResourcesChanged( - this IResourceHost host, - EventHandler handler, - EventHandler handler2) - { - if (host is IResourceHost2 host2) - host2.ResourcesChanged2 += handler2; - else - host.ResourcesChanged += handler; - } - - internal static void UnsubscribeFromResourcesChanged( - this IResourceHost host, - EventHandler handler, - EventHandler handler2) - { - if (host is IResourceHost2 host2) - host2.ResourcesChanged2 -= handler2; - else - host.ResourcesChanged -= handler; - } -} diff --git a/src/Avalonia.Base/Controls/ResourcesChangedToken.cs b/src/Avalonia.Base/Controls/ResourcesChangedToken.cs deleted file mode 100644 index 8de692e729..0000000000 --- a/src/Avalonia.Base/Controls/ResourcesChangedToken.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Threading; - -namespace Avalonia.Controls; - -internal record struct ResourcesChangedToken(int SequenceNumber) -{ - private static int s_lastSequenceNumber; - - public static ResourcesChangedToken Create() - => new(Interlocked.Increment(ref s_lastSequenceNumber)); -} diff --git a/src/Avalonia.Base/StyledElement.cs b/src/Avalonia.Base/StyledElement.cs index b7f6262d9f..711d17d014 100644 --- a/src/Avalonia.Base/StyledElement.cs +++ b/src/Avalonia.Base/StyledElement.cs @@ -29,7 +29,7 @@ namespace Avalonia IDataContextProvider, ILogical, IThemeVariantHost, - IResourceHost2, + IResourceHost, IStyleHost, ISetLogicalParent, ISetInheritanceParent, @@ -94,8 +94,7 @@ namespace Avalonia private AvaloniaObject? _templatedParent; private bool _dataContextUpdating; private ControlTheme? _implicitTheme; - private EventHandler? _resourcesChanged2; - private ResourcesChangedToken _lastResourcesChangedToken; + private ResourcesChangedEventArgs _lastResourcesChangedEventArgs; /// /// Initializes static members of the class. @@ -150,12 +149,6 @@ namespace Avalonia /// public event EventHandler? ResourcesChanged; - event EventHandler? IResourceHost2.ResourcesChanged2 - { - add => _resourcesChanged2 += value; - remove => _resourcesChanged2 -= value; - } - /// public event EventHandler? ActualThemeVariantChanged; @@ -437,14 +430,11 @@ namespace Avalonia /// void ILogical.NotifyResourcesChanged(ResourcesChangedEventArgs e) - => NotifyResourcesChanged(ResourcesChangedToken.Create()); + => NotifyResourcesChanged(e); /// void IResourceHost.NotifyHostedResourcesChanged(ResourcesChangedEventArgs e) - => NotifyResourcesChanged(ResourcesChangedToken.Create()); - - void IResourceHost2.NotifyHostedResourcesChanged(ResourcesChangedToken token) - => NotifyResourcesChanged(token); + => NotifyResourcesChanged(e); /// public bool TryGetResource(object key, ThemeVariant? theme, out object? value) @@ -499,7 +489,7 @@ namespace Avalonia // non-rooted control beacuse it's unlikely that dynamic resources need to be // correct until the control is added to the tree, and it causes a *lot* of // notifications. - NotifyResourcesChanged(ResourcesChangedToken.Create()); + NotifyResourcesChanged(ResourcesChangedEventArgs.Create()); } RaisePropertyChanged(ParentProperty, old, Parent); @@ -552,8 +542,8 @@ namespace Avalonia /// /// Notifies child controls that a change has been made to resources that apply to them. /// - /// The change token. - internal virtual void NotifyChildResourcesChanged(ResourcesChangedToken token) + /// The change token. + internal virtual void NotifyChildResourcesChanged(ResourcesChangedEventArgs e) { if (_logicalChildren is object) { @@ -563,7 +553,7 @@ namespace Avalonia { for (var i = 0; i < count; ++i) { - _logicalChildren[i].NotifyResourcesChanged(token); + _logicalChildren[i].NotifyResourcesChanged(e); } } } @@ -895,7 +885,7 @@ namespace Avalonia ReevaluateImplicitTheme(); ApplyStyling(); - NotifyResourcesChanged(ResourcesChangedToken.Create(), propagate: false); + NotifyResourcesChanged(ResourcesChangedEventArgs.Create(), propagate: false); OnAttachedToLogicalTree(e); AttachedToLogicalTree?.Invoke(this, e); @@ -999,23 +989,22 @@ namespace Avalonia } internal void NotifyResourcesChanged( - ResourcesChangedToken token, + ResourcesChangedEventArgs e, bool propagate = true) { // We already got a notification for this element, ignore. - if (token.Equals(_lastResourcesChangedToken)) + if (e.Equals(_lastResourcesChangedEventArgs)) { return; } - _lastResourcesChangedToken = token; + _lastResourcesChangedEventArgs = e; - _resourcesChanged2?.Invoke(this, token); - ResourcesChanged?.Invoke(this, ResourcesChangedEventArgs.Empty); + ResourcesChanged?.Invoke(this, e); if (propagate) { - NotifyChildResourcesChanged(token); + NotifyChildResourcesChanged(e); } } diff --git a/src/Avalonia.Base/Styling/StyleBase.cs b/src/Avalonia.Base/Styling/StyleBase.cs index 038fc7c5c3..7dbdb22e9c 100644 --- a/src/Avalonia.Base/Styling/StyleBase.cs +++ b/src/Avalonia.Base/Styling/StyleBase.cs @@ -54,7 +54,7 @@ namespace Avalonia.Styling if (hadResources || _resources.HasResources) { - Owner.NotifyHostedResourcesChanged(ResourcesChangedToken.Create()); + Owner.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } } diff --git a/src/Avalonia.Controls/Application.cs b/src/Avalonia.Controls/Application.cs index 0bad04bb23..ff04499c42 100644 --- a/src/Avalonia.Controls/Application.cs +++ b/src/Avalonia.Controls/Application.cs @@ -30,7 +30,7 @@ namespace Avalonia /// method. /// - Tracks the lifetime of the application. /// - public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IThemeVariantHost, IResourceHost2, IApplicationPlatformEvents, IOptionalFeatureProvider + public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IThemeVariantHost, IResourceHost, IApplicationPlatformEvents, IOptionalFeatureProvider { /// /// The application-global data templates. @@ -43,7 +43,6 @@ namespace Avalonia private Action>? _stylesRemoved; private IApplicationLifetime? _applicationLifetime; private bool _setupCompleted; - private EventHandler? _resourcesChanged2; /// /// Defines the property. @@ -62,12 +61,6 @@ namespace Avalonia /// public event EventHandler? ResourcesChanged; - event EventHandler? IResourceHost2.ResourcesChanged2 - { - add => _resourcesChanged2 += value; - remove => _resourcesChanged2 -= value; - } - [Obsolete("Use Application.Current.TryGetFeature() instead.")] public event EventHandler? UrlsOpened; @@ -239,16 +232,9 @@ namespace Avalonia void IResourceHost.NotifyHostedResourcesChanged(ResourcesChangedEventArgs e) { - _resourcesChanged2?.Invoke(this, ResourcesChangedToken.Create()); ResourcesChanged?.Invoke(this, e); } - void IResourceHost2.NotifyHostedResourcesChanged(ResourcesChangedToken token) - { - _resourcesChanged2?.Invoke(this, token); - ResourcesChanged?.Invoke(this, ResourcesChangedEventArgs.Empty); - } - void IStyleHost.StylesAdded(IReadOnlyList styles) { _stylesAdded?.Invoke(styles); diff --git a/src/Avalonia.Controls/Primitives/TemplatedControl.cs b/src/Avalonia.Controls/Primitives/TemplatedControl.cs index 7444e187be..d8ecfa99e8 100644 --- a/src/Avalonia.Controls/Primitives/TemplatedControl.cs +++ b/src/Avalonia.Controls/Primitives/TemplatedControl.cs @@ -362,7 +362,7 @@ namespace Avalonia.Controls.Primitives } /// - internal sealed override void NotifyChildResourcesChanged(ResourcesChangedToken token) + internal sealed override void NotifyChildResourcesChanged(ResourcesChangedEventArgs e) { var count = VisualChildren.Count; @@ -370,11 +370,11 @@ namespace Avalonia.Controls.Primitives { if (VisualChildren[i] is ILogical logical) { - logical.NotifyResourcesChanged(token); + logical.NotifyResourcesChanged(e); } } - base.NotifyChildResourcesChanged(token); + base.NotifyChildResourcesChanged(e); } /// diff --git a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs index 2e1b9a59fb..91aa6b9bd0 100644 --- a/src/Avalonia.Controls/Primitives/VisualLayerManager.cs +++ b/src/Avalonia.Controls/Primitives/VisualLayerManager.cs @@ -118,12 +118,12 @@ namespace Avalonia.Controls.Primitives } /// - internal override void NotifyChildResourcesChanged(ResourcesChangedToken token) + internal override void NotifyChildResourcesChanged(ResourcesChangedEventArgs e) { foreach (var l in _layers) - l.NotifyResourcesChanged(token); + l.NotifyResourcesChanged(e); - base.NotifyChildResourcesChanged(token); + base.NotifyChildResourcesChanged(e); } /// diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs index 78c2868b88..8a631fe075 100644 --- a/src/Avalonia.Controls/TopLevel.cs +++ b/src/Avalonia.Controls/TopLevel.cs @@ -121,12 +121,6 @@ namespace Avalonia.Controls (s, h) => s.ResourcesChanged -= h ); - private static readonly WeakEvent - ResourcesChanged2WeakEvent = WeakEvent.Register( - (s, h) => s.ResourcesChanged2 += h, - (s, h) => s.ResourcesChanged2 -= h - ); - private readonly IInputManager? _inputManager; private readonly IToolTipService? _tooltipService; private readonly IAccessKeyHandler? _accessKeyHandler; @@ -144,7 +138,6 @@ namespace Avalonia.Controls private ILayoutManager? _layoutManager; private Border? _transparencyFallbackBorder; private TargetWeakEventSubscriber? _resourcesChangesSubscriber; - private TargetWeakEventSubscriber? _resourcesChangesSubscriber2; private IStorageProvider? _storageProvider; private Screens? _screens; private LayoutDiagnosticBridge? _layoutDiagnosticBridge; @@ -270,25 +263,15 @@ namespace Avalonia.Controls var stylingParent = ((IStyleHost)this).StylingParent; - if (stylingParent is IResourceHost2 applicationResources2) + if (stylingParent is IResourceHost applicationResources2) { - _resourcesChangesSubscriber2 = new TargetWeakEventSubscriber( + _resourcesChangesSubscriber = new TargetWeakEventSubscriber( this, static (target, _, _, token) => { target.NotifyResourcesChanged(token); }); - ResourcesChanged2WeakEvent.Subscribe(applicationResources2, _resourcesChangesSubscriber2); - } - else if (stylingParent is IResourceHost applicationResources) - { - _resourcesChangesSubscriber = new TargetWeakEventSubscriber( - this, static (target, _, _, _) => - { - target.NotifyResourcesChanged(ResourcesChangedToken.Create()); - }); - - ResourcesChangedWeakEvent.Subscribe(applicationResources, _resourcesChangesSubscriber); + ResourcesChangedWeakEvent.Subscribe(applicationResources2, _resourcesChangesSubscriber); } impl.LostFocus += PlatformImpl_LostFocus; diff --git a/src/Avalonia.Themes.Fluent/Accents/SystemAccentColors.cs b/src/Avalonia.Themes.Fluent/Accents/SystemAccentColors.cs index 95f135a40a..920c66ed1a 100644 --- a/src/Avalonia.Themes.Fluent/Accents/SystemAccentColors.cs +++ b/src/Avalonia.Themes.Fluent/Accents/SystemAccentColors.cs @@ -154,6 +154,6 @@ internal sealed class SystemAccentColors : ResourceProvider private void PlatformSettingsOnColorValuesChanged(object? sender, PlatformColorValues e) { _invalidateColors = true; - Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Empty); + Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } diff --git a/src/Avalonia.Themes.Fluent/FluentTheme.xaml.cs b/src/Avalonia.Themes.Fluent/FluentTheme.xaml.cs index 53cd36215c..fc03021743 100644 --- a/src/Avalonia.Themes.Fluent/FluentTheme.xaml.cs +++ b/src/Avalonia.Themes.Fluent/FluentTheme.xaml.cs @@ -63,7 +63,7 @@ namespace Avalonia.Themes.Fluent if (change.Property == DensityStyleProperty) { - Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Empty); + Owner?.NotifyHostedResourcesChanged(ResourcesChangedEventArgs.Create()); } } diff --git a/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs b/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs index e65282b36b..fbe09fa0de 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Data/DynamicResourceExpression.cs @@ -84,8 +84,6 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions private void ResourcesChanged(object? sender, ResourcesChangedEventArgs e) => PublishValue(); - private void ResourcesChanged2(object? sender, ResourcesChangedToken token) => PublishValue(); - private void ActualThemeVariantChanged(object? sender, EventArgs e) { if (!IsRunning) @@ -134,7 +132,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions { if (host is not null) { - host.SubscribeToResourcesChanged(ResourcesChanged, ResourcesChanged2); + host.ResourcesChanged += ResourcesChanged; if (!_overrideThemeVariant && _host is IThemeVariantHost themeVariantHost) { @@ -148,7 +146,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions { if (host is not null) { - host.UnsubscribeFromResourcesChanged(ResourcesChanged, ResourcesChanged2); + host.ResourcesChanged -= ResourcesChanged; if (!_overrideThemeVariant && _host is IThemeVariantHost themeVariantHost) themeVariantHost.ActualThemeVariantChanged -= ActualThemeVariantChanged;