|
|
|
@ -7,10 +7,10 @@ using System; |
|
|
|
using System.Collections; |
|
|
|
using System.Collections.Specialized; |
|
|
|
using Avalonia.Controls.Templates; |
|
|
|
using Avalonia.Data; |
|
|
|
using Avalonia.Input; |
|
|
|
using Avalonia.Layout; |
|
|
|
using Avalonia.Logging; |
|
|
|
using Avalonia.Utilities; |
|
|
|
using Avalonia.VisualTree; |
|
|
|
|
|
|
|
namespace Avalonia.Controls |
|
|
|
@ -681,8 +681,15 @@ namespace Avalonia.Controls |
|
|
|
if (oldValue != null) |
|
|
|
{ |
|
|
|
oldValue.UninitializeForContext(LayoutContext); |
|
|
|
oldValue.MeasureInvalidated -= InvalidateMeasureForLayout; |
|
|
|
oldValue.ArrangeInvalidated -= InvalidateArrangeForLayout; |
|
|
|
|
|
|
|
WeakEventHandlerManager.Unsubscribe<EventArgs, ItemsRepeater>( |
|
|
|
oldValue, |
|
|
|
nameof(AttachedLayout.MeasureInvalidated), |
|
|
|
InvalidateMeasureForLayout); |
|
|
|
WeakEventHandlerManager.Unsubscribe<EventArgs, ItemsRepeater>( |
|
|
|
oldValue, |
|
|
|
nameof(AttachedLayout.ArrangeInvalidated), |
|
|
|
InvalidateArrangeForLayout); |
|
|
|
|
|
|
|
// Walk through all the elements and make sure they are cleared
|
|
|
|
foreach (var element in Children) |
|
|
|
@ -699,8 +706,15 @@ namespace Avalonia.Controls |
|
|
|
if (newValue != null) |
|
|
|
{ |
|
|
|
newValue.InitializeForContext(LayoutContext); |
|
|
|
newValue.MeasureInvalidated += InvalidateMeasureForLayout; |
|
|
|
newValue.ArrangeInvalidated += InvalidateArrangeForLayout; |
|
|
|
|
|
|
|
WeakEventHandlerManager.Subscribe<AttachedLayout, EventArgs, ItemsRepeater>( |
|
|
|
newValue, |
|
|
|
nameof(AttachedLayout.MeasureInvalidated), |
|
|
|
InvalidateMeasureForLayout); |
|
|
|
WeakEventHandlerManager.Subscribe<AttachedLayout, EventArgs, ItemsRepeater>( |
|
|
|
newValue, |
|
|
|
nameof(AttachedLayout.ArrangeInvalidated), |
|
|
|
InvalidateArrangeForLayout); |
|
|
|
} |
|
|
|
|
|
|
|
bool isVirtualizingLayout = newValue != null && newValue is VirtualizingLayout; |
|
|
|
|