using System; using System.Reactive.Disposables; using Avalonia.Controls; namespace Avalonia.Xaml.Interactions.Custom; /// /// /// public class ButtonHideFlyoutBehavior : 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?.Flyout?.Hide(); } }); disposables.Add(disposable); } }