using System.Reactive.Disposables;
using Avalonia.Controls;
namespace Avalonia.Xaml.Interactions.Custom;
///
///
///
public abstract class ItemsControlContainerEventsBehavior : DisposingBehavior
{
///
protected override void OnAttached(CompositeDisposable disposables)
{
if (AssociatedObject is not { } itemsControl)
{
return;
}
itemsControl.ContainerPrepared += ItemsControlOnContainerPrepared;
itemsControl.ContainerIndexChanged += ItemsControlOnContainerIndexChanged;
itemsControl.ContainerClearing += ItemsControlOnContainerClearing;
disposables.Add(Disposable.Create(() =>
{
itemsControl.ContainerPrepared -= ItemsControlOnContainerPrepared;
itemsControl.ContainerIndexChanged -= ItemsControlOnContainerIndexChanged;
itemsControl.ContainerClearing -= ItemsControlOnContainerClearing;
}));
}
private void ItemsControlOnContainerPrepared(object? sender, ContainerPreparedEventArgs e)
{
OnContainerPrepared(sender, e);
}
private void ItemsControlOnContainerIndexChanged(object sender, ContainerIndexChangedEventArgs e)
{
OnContainerIndexChanged(sender, e);
}
private void ItemsControlOnContainerClearing(object? sender, ContainerClearingEventArgs e)
{
OnContainerClearing(sender, e);
}
///
///
///
///
///
protected virtual void OnContainerPrepared(object? sender, ContainerPreparedEventArgs e)
{
}
///
///
///
///
///
protected virtual void OnContainerIndexChanged(object? sender, ContainerIndexChangedEventArgs e)
{
}
///
///
///
///
///
protected virtual void OnContainerClearing(object? sender, ContainerClearingEventArgs e)
{
}
}