Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Reactive.Disposables;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Custom;

/// <summary>
/// A base class for behaviors using ActualThemeVariantChanged event.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class ActualThemeVariantChangedBehavior<T> : DisposingBehavior<T> where T : StyledElement
{
private CompositeDisposable? _disposables;

/// <inheritdoc />
protected override void OnAttached(CompositeDisposable disposables)
{
_disposables = disposables;
}

/// <inheritdoc />
protected override void OnActualThemeVariantChangedEvent()
{
OnActualThemeVariantChangedEvent(_disposables!);
}

/// <summary>
/// Called when the <see cref="StyledElementBehavior{T}.AssociatedObject"/> ActualThemeVariantChanged event is raised.
/// </summary>
/// <param name="disposable">The group of disposable resources that are disposed together</param>
protected abstract void OnActualThemeVariantChangedEvent(CompositeDisposable disposable);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Reactive.Disposables;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Custom;

/// <summary>
/// A base class for behaviors using DataContextChanged event.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class DataContextChangedBehavior<T> : DisposingBehavior<T> where T : StyledElement
{
private CompositeDisposable? _disposables;

/// <inheritdoc />
protected override void OnAttached(CompositeDisposable disposables)
{
_disposables = disposables;
}

/// <inheritdoc />
protected override void OnDataContextChangedEvent()
{
OnDataContextChangedEvent(_disposables!);
}

/// <summary>
/// Called when the <see cref="StyledElementBehavior{T}.AssociatedObject"/> DataContextChanged event is raised.
/// </summary>
/// <param name="disposable">The group of disposable resources that are disposed together</param>
protected abstract void OnDataContextChangedEvent(CompositeDisposable disposable);
}
31 changes: 31 additions & 0 deletions src/Avalonia.Xaml.Interactions.Custom/Core/InitializedBehavior.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Reactive.Disposables;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Custom;

/// <summary>
/// A base class for behaviors using Initialized event.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class InitializedBehavior<T> : DisposingBehavior<T> where T : StyledElement
{
private CompositeDisposable? _disposables;

/// <inheritdoc />
protected override void OnAttached(CompositeDisposable disposables)
{
_disposables = disposables;
}

/// <inheritdoc />
protected override void OnInitializedEvent()
{
OnInitializedEvent(_disposables!);
}

/// <summary>
/// Called when the <see cref="StyledElementBehavior{T}.AssociatedObject"/> Initialized event is raised.
/// </summary>
/// <param name="disposable">The group of disposable resources that are disposed together</param>
protected abstract void OnInitializedEvent(CompositeDisposable disposable);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System.Reactive.Disposables;
using Avalonia.Xaml.Interactivity;

namespace Avalonia.Xaml.Interactions.Custom;

/// <summary>
/// A base class for behaviors using ResourcesChanged event.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class ResourcesChangedBehavior<T> : DisposingBehavior<T> where T : StyledElement
{
private CompositeDisposable? _disposables;

/// <inheritdoc />
protected override void OnAttached(CompositeDisposable disposables)
{
_disposables = disposables;
}

/// <inheritdoc />
protected override void OnResourcesChangedEvent()
{
OnResourcesChangedEvent(_disposables!);
}

/// <summary>
/// Called when the <see cref="StyledElementBehavior{T}.AssociatedObject"/> ResourcesChanged event is raised.
/// </summary>
/// <param name="disposable">The group of disposable resources that are disposed together</param>
protected abstract void OnResourcesChangedEvent(CompositeDisposable disposable);
}
Loading