Skip to content

Commit 5c14003

Browse files
committed
perf(VisualState): Create VisualState.Setters and StateTriggers backing collections lazily
1 parent 5205a11 commit 5c14003

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/Uno.UI/UI/Xaml/VisualState.cs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,6 @@ public VisualState()
2020
{
2121
InitializeBinder();
2222
IsAutoPropertyInheritanceEnabled = false;
23-
24-
InitializeStateTriggerCollection();
25-
InitializeSettersCollection();
26-
}
27-
28-
private void InitializeSettersCollection()
29-
{
30-
Setters = new SetterBaseCollection(this, isAutoPropertyInheritanceEnabled: false);
31-
}
32-
33-
private void InitializeStateTriggerCollection()
34-
{
35-
var stateTriggers = new DependencyObjectCollection<StateTriggerBase>(this, isAutoPropertyInheritanceEnabled: false);
36-
stateTriggers.VectorChanged += OnStateTriggerCollectionChanged;
37-
38-
StateTriggers = stateTriggers;
3923
}
4024

4125
public string Name { get; set; }
@@ -86,8 +70,14 @@ public SetterBaseCollection Setters
8670
{
8771
get
8872
{
73+
if(!(GetValue(SettersProperty) is SetterBaseCollection collection))
74+
{
75+
collection = Setters = new SetterBaseCollection(this, isAutoPropertyInheritanceEnabled: false);
76+
}
77+
8978
EnsureMaterialized();
90-
return (SetterBaseCollection)GetValue(SettersProperty);
79+
80+
return collection;
9181
}
9282

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

10898
public IList<StateTriggerBase> StateTriggers
10999
{
110-
get => (IList<StateTriggerBase>)GetValue(StateTriggersProperty);
100+
get
101+
{
102+
if(!(GetValue(StateTriggersProperty) is IList<StateTriggerBase> list))
103+
{
104+
var stateTriggers = new DependencyObjectCollection<StateTriggerBase>(this, isAutoPropertyInheritanceEnabled: false);
105+
stateTriggers.VectorChanged += OnStateTriggerCollectionChanged;
106+
107+
list = StateTriggers = stateTriggers;
108+
}
109+
110+
return list;
111+
}
112+
111113
internal set => SetValue(StateTriggersProperty, value);
112114
}
113115

0 commit comments

Comments
 (0)