Skip to content

Commit

Permalink
perf(VisualState): Create VisualState.Setters and StateTriggers b…
Browse files Browse the repository at this point in the history
…acking collections lazily
  • Loading branch information
jeromelaban committed May 19, 2021
1 parent 5205a11 commit 5c14003
Showing 1 changed file with 20 additions and 18 deletions.
38 changes: 20 additions & 18 deletions src/Uno.UI/UI/Xaml/VisualState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,6 @@ public VisualState()
{
InitializeBinder();
IsAutoPropertyInheritanceEnabled = false;

InitializeStateTriggerCollection();
InitializeSettersCollection();
}

private void InitializeSettersCollection()
{
Setters = new SetterBaseCollection(this, isAutoPropertyInheritanceEnabled: false);
}

private void InitializeStateTriggerCollection()
{
var stateTriggers = new DependencyObjectCollection<StateTriggerBase>(this, isAutoPropertyInheritanceEnabled: false);
stateTriggers.VectorChanged += OnStateTriggerCollectionChanged;

StateTriggers = stateTriggers;
}

public string Name { get; set; }
Expand Down Expand Up @@ -86,8 +70,14 @@ public SetterBaseCollection Setters
{
get
{
if(!(GetValue(SettersProperty) is SetterBaseCollection collection))
{
collection = Setters = new SetterBaseCollection(this, isAutoPropertyInheritanceEnabled: false);
}

EnsureMaterialized();
return (SetterBaseCollection)GetValue(SettersProperty);

return collection;
}

internal set => SetValue(SettersProperty, value);
Expand All @@ -107,7 +97,19 @@ public SetterBaseCollection Setters

public IList<StateTriggerBase> StateTriggers
{
get => (IList<StateTriggerBase>)GetValue(StateTriggersProperty);
get
{
if(!(GetValue(StateTriggersProperty) is IList<StateTriggerBase> list))
{
var stateTriggers = new DependencyObjectCollection<StateTriggerBase>(this, isAutoPropertyInheritanceEnabled: false);
stateTriggers.VectorChanged += OnStateTriggerCollectionChanged;

list = StateTriggers = stateTriggers;
}

return list;
}

internal set => SetValue(StateTriggersProperty, value);
}

Expand Down

0 comments on commit 5c14003

Please sign in to comment.