private void AttachEventHandlers() { _registrations.Disposable = null; _activeDisposables = new CompositeDisposable(); if (m_button != null) { _activeDisposables.Add(m_button.RegisterDisposablePropertyChangedCallback(ButtonBase.IsPressedProperty, OnVisualPropertyChanged)); _activeDisposables.Add(m_button.RegisterDisposablePropertyChangedCallback(ButtonBase.IsPointerOverProperty, OnVisualPropertyChanged)); } if (m_flyout != null) { m_flyout.Closed += OnFlyoutClosed; m_flyout.Opening += OnFlyoutOpening; _activeDisposables.Add(() => { m_flyout.Closed -= OnFlyoutClosed; m_flyout.Opening -= OnFlyoutOpening; }); } PointerEntered += OnMenuBarItemPointerEntered; _activeDisposables.Add(() => PointerEntered -= OnMenuBarItemPointerEntered); var pointerPressHandler = new PointerEventHandler(OnMenuBarItemPointerPressed); AddHandler(UIElement.PointerPressedEvent, pointerPressHandler, true); var keyDownHandler = new KeyEventHandler(OnMenuBarItemKeyDown); AddHandler(UIElement.KeyDownEvent, keyDownHandler, true); _activeDisposables.Add(() => { RemoveHandler(UIElement.PointerPressedEvent, pointerPressHandler); RemoveHandler(UIElement.KeyDownEvent, keyDownHandler); }); AccessKeyInvoked += OnMenuBarItemAccessKeyInvoked; _activeDisposables.Add(() => AccessKeyInvoked -= OnMenuBarItemAccessKeyInvoked); _registrations.Disposable = _activeDisposables; }