Пример #1
0
        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;
        }