Browse Source
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>pull/18558/head
committed by
GitHub
16 changed files with 185 additions and 89 deletions
@ -0,0 +1,45 @@ |
|||
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<ResourcesChangedEventArgs> handler, |
|||
EventHandler<ResourcesChangedToken> handler2) |
|||
{ |
|||
if (host is IResourceHost2 host2) |
|||
host2.ResourcesChanged2 += handler2; |
|||
else |
|||
host.ResourcesChanged += handler; |
|||
} |
|||
|
|||
internal static void UnsubscribeFromResourcesChanged( |
|||
this IResourceHost host, |
|||
EventHandler<ResourcesChangedEventArgs> handler, |
|||
EventHandler<ResourcesChangedToken> handler2) |
|||
{ |
|||
if (host is IResourceHost2 host2) |
|||
host2.ResourcesChanged2 -= handler2; |
|||
else |
|||
host.ResourcesChanged -= handler; |
|||
} |
|||
} |
|||
@ -0,0 +1,11 @@ |
|||
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)); |
|||
} |
|||
Loading…
Reference in new issue