|
|
|
@ -1,6 +1,5 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using Avalonia.Controls; |
|
|
|
using Avalonia.Styling.Activators; |
|
|
|
using Avalonia.Utilities; |
|
|
|
|
|
|
|
@ -15,7 +14,7 @@ namespace Avalonia.Styling |
|
|
|
internal class TypeNameAndClassSelector : Selector |
|
|
|
{ |
|
|
|
private readonly Selector? _previous; |
|
|
|
private readonly Lazy<List<string>> _classes = new Lazy<List<string>>(() => new List<string>()); |
|
|
|
private List<string>? _classes; |
|
|
|
private Type? _targetType; |
|
|
|
private string? _selectorString; |
|
|
|
|
|
|
|
@ -81,7 +80,7 @@ namespace Avalonia.Styling |
|
|
|
/// <summary>
|
|
|
|
/// The style classes which the selector matches.
|
|
|
|
/// </summary>
|
|
|
|
public IList<string> Classes => _classes.Value; |
|
|
|
public IList<string> Classes => _classes ??= new(); |
|
|
|
|
|
|
|
/// <inheritdoc/>
|
|
|
|
public override string ToString(Style? owner) |
|
|
|
@ -122,16 +121,16 @@ namespace Avalonia.Styling |
|
|
|
return SelectorMatch.NeverThisInstance; |
|
|
|
} |
|
|
|
|
|
|
|
if (_classes.IsValueCreated && _classes.Value.Count > 0) |
|
|
|
if (_classes is { Count: > 0 }) |
|
|
|
{ |
|
|
|
if (subscribe) |
|
|
|
{ |
|
|
|
var observable = new StyleClassActivator((Classes)control.Classes, _classes.Value); |
|
|
|
var observable = new StyleClassActivator(control.Classes, _classes); |
|
|
|
|
|
|
|
return new SelectorMatch(observable); |
|
|
|
} |
|
|
|
|
|
|
|
if (!StyleClassActivator.AreClassesMatching(control.Classes, Classes)) |
|
|
|
if (!StyleClassActivator.AreClassesMatching(control.Classes, _classes)) |
|
|
|
{ |
|
|
|
return SelectorMatch.NeverThisInstance; |
|
|
|
} |
|
|
|
@ -172,9 +171,9 @@ namespace Avalonia.Styling |
|
|
|
builder.Append(Name); |
|
|
|
} |
|
|
|
|
|
|
|
if (_classes.IsValueCreated && _classes.Value.Count > 0) |
|
|
|
if (_classes is { Count: > 0 }) |
|
|
|
{ |
|
|
|
foreach (var c in Classes) |
|
|
|
foreach (var c in _classes) |
|
|
|
{ |
|
|
|
if (!c.StartsWith(":")) |
|
|
|
{ |
|
|
|
|