From 19b9cd2ee644b8a4dd5190bab4d21e8fe230b054 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Sun, 11 Dec 2022 14:25:41 -0500 Subject: [PATCH] Inherit ResourceInclude from the MergeResourceInclude --- .../Styling/MergeResourceInclude.cs | 63 ++----------------- 1 file changed, 5 insertions(+), 58 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/Styling/MergeResourceInclude.cs b/src/Markup/Avalonia.Markup.Xaml/Styling/MergeResourceInclude.cs index cd3b235e10..d231a1d221 100644 --- a/src/Markup/Avalonia.Markup.Xaml/Styling/MergeResourceInclude.cs +++ b/src/Markup/Avalonia.Markup.Xaml/Styling/MergeResourceInclude.cs @@ -2,6 +2,8 @@ using System.Diagnostics.CodeAnalysis; using Avalonia.Controls; +#nullable enable + namespace Avalonia.Markup.Xaml.Styling; /// @@ -12,68 +14,13 @@ namespace Avalonia.Markup.Xaml.Styling; /// When used in runtime, this type behaves like . /// [RequiresUnreferencedCode(TrimmingMessages.StyleResourceIncludeRequiresUnreferenceCodeMessage)] -public class MergeResourceInclude : IResourceProvider +public class MergeResourceInclude : ResourceInclude { - private readonly IServiceProvider _serviceProvider; - private readonly Uri? _baseUri; - private IResourceDictionary? _loaded; - private bool _isLoading; - - /// - /// Initializes a new instance of the class. - /// - /// The XAML service provider. - public MergeResourceInclude(IServiceProvider serviceProvider) - { - _serviceProvider = serviceProvider; - _baseUri = serviceProvider.GetContextBaseUri(); - } - - /// - /// Gets the loaded resource dictionary. - /// - public IResourceDictionary Loaded - { - get - { - if (_loaded == null) - { - _isLoading = true; - var source = Source ?? throw new InvalidOperationException("MergeResourceInclude.Source must be set."); - _loaded = (IResourceDictionary)AvaloniaXamlLoader.Load(_serviceProvider, source, _baseUri); - _isLoading = false; - } - - return _loaded; - } - } - - public IResourceHost? Owner => Loaded.Owner; - - /// - /// Gets or sets the source URL. - /// - public Uri? Source { get; set; } - - bool IResourceNode.HasResources => Loaded.HasResources; - - public event EventHandler? OwnerChanged + public MergeResourceInclude(Uri? baseUri) : base(baseUri) { - add => Loaded.OwnerChanged += value; - remove => Loaded.OwnerChanged -= value; } - bool IResourceNode.TryGetResource(object key, out object? value) + public MergeResourceInclude(IServiceProvider serviceProvider) : base(serviceProvider) { - if (!_isLoading) - { - return Loaded.TryGetResource(key, out value); - } - - value = null; - return false; } - - void IResourceProvider.AddOwner(IResourceHost owner) => Loaded.AddOwner(owner); - void IResourceProvider.RemoveOwner(IResourceHost owner) => Loaded.RemoveOwner(owner); }