Microsoft.Windows.Controls.Ribbon.RibbonContextMenu.GetDismissPopupSource C# (CSharp) Method

GetDismissPopupSource() private method

private GetDismissPopupSource ( ) : UIElement
return UIElement
        private UIElement GetDismissPopupSource()
        {
            UIElement placementTarget = PlacementTarget;
            if (placementTarget == null)
            {
                return null;
            }
            Ribbon ribbon = RibbonControlService.GetRibbon(placementTarget);
            if (ribbon == null)
            {
                return null;
            }
            // The original source for corresponding ContextMenuOpening will
            // be the original source for DismissPopup event.
            UIElement returnValue = ribbon.ContextMenuOriginalSource;
            if (returnValue == null)
            {
                returnValue = placementTarget;
            }
            return returnValue;
        }

Usage Example

Ejemplo n.º 1
0
        private static void OnIsOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            RibbonContextMenu contextMenu = (RibbonContextMenu)d;

            if (!(bool)(e.NewValue))
            {
                if (!contextMenu._ignoreDismissPopupsOnNextClose)
                {
                    UIElement dismissPopupSource = contextMenu.GetDismissPopupSource();
                    if (CanRaiseDismissPopups(dismissPopupSource))
                    {
                        // Raise DismissPopup on owner if can raise and if
                        // was not asked to ignore.
                        dismissPopupSource.RaiseEvent(new RibbonDismissPopupEventArgs(RibbonDismissPopupMode.Always));
                        ((Ribbon)(RibbonControlService.GetRibbon(dismissPopupSource))).RestoreFocusOnContextMenuClose();
                    }
                }
                else
                {
                    contextMenu.RestoreFocusToRibbon();
                    contextMenu._ignoreDismissPopupsOnNextClose = false;
                }
            }
            else
            {
                contextMenu._ignoreDismissPopupsOnNextClose = false;
            }
        }