diff --git a/src/Avalonia.Controls/Repeaters/ElementFactoryGetArgs.cs b/src/Avalonia.Controls/Repeaters/ElementFactoryGetArgs.cs deleted file mode 100644 index 173388b68e..0000000000 --- a/src/Avalonia.Controls/Repeaters/ElementFactoryGetArgs.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; - -namespace Avalonia.Controls.Repeaters -{ - public sealed class ElementFactoryGetArgs : EventArgs - { - public object Data { get; set; } - public IControl Parent { get; set; } - internal int Index { get; set; } - } -} diff --git a/src/Avalonia.Controls/Repeaters/ElementFactoryRecycleArgs.cs b/src/Avalonia.Controls/Repeaters/ElementFactoryRecycleArgs.cs deleted file mode 100644 index 3025546f67..0000000000 --- a/src/Avalonia.Controls/Repeaters/ElementFactoryRecycleArgs.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Avalonia.Controls.Repeaters -{ - public sealed class ElementFactoryRecycleArgs : EventArgs - { - public IControl Element { get; set; } - public IControl Parent { get; set; } - } -} diff --git a/src/Avalonia.Controls/Repeaters/ItemTemplateWrapper.cs b/src/Avalonia.Controls/Repeaters/ItemTemplateWrapper.cs index c26d73c02c..300fd11d1c 100644 --- a/src/Avalonia.Controls/Repeaters/ItemTemplateWrapper.cs +++ b/src/Avalonia.Controls/Repeaters/ItemTemplateWrapper.cs @@ -11,7 +11,7 @@ namespace Avalonia.Controls.Repeaters public ItemTemplateWrapper(IDataTemplate dataTemplate) => _dataTemplate = dataTemplate; - public IControl GetElement(ElementFactoryGetArgs args) + public IControl GetElement(IControl parent, object data) { var selectedTemplate = _dataTemplate; var recyclePool = RecyclePool.GetPoolInstance(selectedTemplate); @@ -20,13 +20,13 @@ namespace Avalonia.Controls.Repeaters if (recyclePool != null) { // try to get an element from the recycle pool. - element = recyclePool.TryGetElement(string.Empty, args.Parent); + element = recyclePool.TryGetElement(string.Empty, parent); } if (element == null) { // no element was found in recycle pool, create a new element - element = selectedTemplate.Build(args.Data); + element = selectedTemplate.Build(data); // Associate template with element element.SetValue(RecyclePool.OriginTemplateProperty, selectedTemplate); @@ -35,9 +35,8 @@ namespace Avalonia.Controls.Repeaters return element; } - public void RecycleElement(ElementFactoryRecycleArgs args) + public void RecycleElement(IControl parent, IControl element) { - var element = args.Element; var selectedTemplate = _dataTemplate; var recyclePool = RecyclePool.GetPoolInstance(selectedTemplate); if (recyclePool == null) @@ -47,7 +46,7 @@ namespace Avalonia.Controls.Repeaters RecyclePool.SetPoolInstance(selectedTemplate, recyclePool); } - recyclePool.PutElement(args.Element, "" /* key */, args.Parent); + recyclePool.PutElement(element, "" /* key */, parent); } } } diff --git a/src/Avalonia.Controls/Repeaters/ViewManager.cs b/src/Avalonia.Controls/Repeaters/ViewManager.cs index d7f8f224b8..5fccba5412 100644 --- a/src/Avalonia.Controls/Repeaters/ViewManager.cs +++ b/src/Avalonia.Controls/Repeaters/ViewManager.cs @@ -18,8 +18,6 @@ namespace Avalonia.Controls.Repeaters private readonly UniqueIdElementPool _resetPool; private IControl _lastFocusedElement; private bool _isDataSourceStableResetPending; - private ElementFactoryGetArgs _elementFactoryGetArgs; - private ElementFactoryRecycleArgs _elementFactoryRecycleArgs; private int _firstRealizedElementIndexHeldByLayout = FirstRealizedElementIndexDefault; private int _lastRealizedElementIndexHeldByLayout = LastRealizedElementIndexDefault; private bool _eventsSubscribed; @@ -107,21 +105,7 @@ namespace Avalonia.Controls.Repeaters var virtInfo = ItemsRepeater.GetVirtualizationInfo(element); var clearedIndex = virtInfo.Index; _owner.OnElementClearing(element); - - if (_elementFactoryRecycleArgs == null) - { - // Create one. - _elementFactoryRecycleArgs = new ElementFactoryRecycleArgs(); - } - - var context = _elementFactoryRecycleArgs; - context.Element = element; - context.Parent = _owner; - - _owner.ItemTemplateShim.RecycleElement(context); - - context.Element = null; - context.Parent = null; + _owner.ItemTemplateShim.RecycleElement(_owner, element); virtInfo.MoveOwnershipToElementFactory(); //_phaser.StopPhasing(element, virtInfo); @@ -579,22 +563,7 @@ namespace Avalonia.Controls.Repeaters } var data = _owner.ItemsSourceView.GetAt(index); - - if (_elementFactoryGetArgs == null) - { - // Create one. - _elementFactoryGetArgs = new ElementFactoryGetArgs(); - } - - var args = _elementFactoryGetArgs; - args.Data = data; - args.Parent = _owner; - args.Index= index; - - var element = itemTemplateFactory.GetElement(args); - - args.Data = null; - args.Parent = null; + var element = itemTemplateFactory.GetElement(_owner, data); var virtInfo = ItemsRepeater.TryGetVirtualizationInfo(element); if (virtInfo == null)