diff --git a/src/Toolkit/Toolkit/LayerContentDataSource.cs b/src/Toolkit/Toolkit/LayerContentDataSource.cs index 326ad1f47..fc866c9fb 100644 --- a/src/Toolkit/Toolkit/LayerContentDataSource.cs +++ b/src/Toolkit/Toolkit/LayerContentDataSource.cs @@ -362,7 +362,18 @@ private IEnumerable TrackLayerContentsRecursive(IEnumerable, INotifyCollectionChanged, object?, NotifyCollectionChangedEventArgs>(this, incc) + { + OnEventAction = static (instance, source, eventArgs) => instance.Layers_CollectionChanged(source, eventArgs), + OnDetachAction = static (instance, source, weakEventListener) => source.CollectionChanged -= weakEventListener.OnEvent, + }; + incc.CollectionChanged += listener.OnEvent; + yield return listener.Detach; + } + + foreach (var layer in layers.ToArray()) { if (layer is INotifyPropertyChanged inpc) { @@ -375,22 +386,11 @@ private IEnumerable TrackLayerContentsRecursive(IEnumerable, INotifyCollectionChanged, object?, NotifyCollectionChangedEventArgs>(this, incc) - { - OnEventAction = static (instance, source, eventArgs) => instance.Layers_CollectionChanged(source, eventArgs), - OnDetachAction = static (instance, source, weakEventListener) => source.CollectionChanged -= weakEventListener.OnEvent, - }; - incc.CollectionChanged += listener.OnEvent; - yield return listener.Detach; - } } }