using System;
using System.Reactive.Disposables;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
namespace Avalonia.Xaml.Interactions.Custom;
///
///
///
public class HideAttachedFlyoutBehavior : DisposingBehavior
{
///
///
///
public static readonly StyledProperty IsFlyoutOpenProperty =
AvaloniaProperty.Register(nameof(IsFlyoutOpen));
///
///
///
public bool IsFlyoutOpen
{
get => GetValue(IsFlyoutOpenProperty);
set => SetValue(IsFlyoutOpenProperty, value);
}
///
///
///
///
protected override void OnAttached(CompositeDisposable disposables)
{
var disposable = this.GetObservable(IsFlyoutOpenProperty)
.Subscribe(isOpen =>
{
if (!isOpen && AssociatedObject is not null)
{
FlyoutBase.GetAttachedFlyout(AssociatedObject)?.Hide();
}
});
disposables.Add(disposable);
}
}