Преглед изворни кода

Add ItemsControl.PreparingContainer event (#14153)

Tom Edwards пре 1 година
родитељ
комит
353ad7dbd4
1 измењених фајлова са 11 додато и 0 уклоњено
  1. 11 0
      src/Avalonia.Controls/ItemsControl.cs

+ 11 - 0
src/Avalonia.Controls/ItemsControl.cs

@@ -212,6 +212,15 @@ namespace Avalonia.Controls
             remove => _childIndexChanged -= value;
         }
 
+        /// <summary>
+        /// Occurs immediately before a container is prepared for use.
+        /// </summary>
+        /// <remarks>
+        /// The prepared element might be newly created or an existing container that is being re-
+        /// used.
+        /// </remarks>
+        public event EventHandler<ContainerPreparedEventArgs>? PreparingContainer;
+
         /// <summary>
         /// Occurs each time a container is prepared for use.
         /// </summary>
@@ -702,6 +711,8 @@ namespace Avalonia.Controls
 
         internal void PrepareItemContainer(Control container, object? item, int index)
         {
+            PreparingContainer?.Invoke(this, new(container, index));
+
             // If the container has no theme set, or we've already applied our ItemContainerTheme
             // (and it hasn't changed since) then we're in control of the container's Theme and may
             // need to update it.