diff --git a/src/Avalonia.Controls/SplitButton/SplitButton.cs b/src/Avalonia.Controls/SplitButton/SplitButton.cs index f1d07b2679..2cafba620e 100644 --- a/src/Avalonia.Controls/SplitButton/SplitButton.cs +++ b/src/Avalonia.Controls/SplitButton/SplitButton.cs @@ -1,7 +1,6 @@ using System; using System.Windows.Input; using Avalonia.Controls.Metadata; -using Avalonia.Controls.Mixins; using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Interactivity; @@ -314,16 +313,9 @@ namespace Avalonia.Controls } // Must unregister events here while a reference to the old flyout still exists - if (oldFlyout != null) - { - UnregisterFlyoutEvents(oldFlyout); - } - - if (newFlyout != null) - { - RegisterFlyoutEvents(newFlyout); - } + UnregisterFlyoutEvents(oldFlyout); + RegisterFlyoutEvents(newFlyout); UpdatePseudoClasses(); } @@ -415,6 +407,22 @@ namespace Avalonia.Controls } } + /// + /// Invoked when the split button's flyout is opened. + /// + protected virtual void OnFlyoutOpened() + { + // Available for derived types + } + + /// + /// Invoked when the split button's flyout is closed. + /// + protected virtual void OnFlyoutClosed() + { + // Available for derived types + } + //////////////////////////////////////////////////////////////////////// // Event Handling //////////////////////////////////////////////////////////////////////// @@ -464,6 +472,8 @@ namespace Avalonia.Controls { _isFlyoutOpen = true; UpdatePseudoClasses(); + + OnFlyoutOpened(); } } @@ -479,6 +489,8 @@ namespace Avalonia.Controls { _isFlyoutOpen = false; UpdatePseudoClasses(); + + OnFlyoutClosed(); } } }