Пример #1
0
 public void ShowContextMenuForNodeControl(Point location, NodeControl nodeControl)
 {
     ParentNode = nodeControl;
     Canvas.SetLeft(this, location.X);
     Canvas.SetTop(this, location.Y);
     Visibility = Visibility.Visible;
     if (App.UserStyle == UserStyle.Author)
     {
         AuthorContextMenu.Visibility = Visibility.Visible;
         AuthorContextMenu.Focus();
     }
     else
     {
         ViewerContextMenu.Visibility = Visibility.Visible;
         ViewerContextMenu.Focus();
         ViewerContextMenu.Rating.DataContext = ParentNode.ViewModelNode.NodeProperties;
     }
 }
Пример #2
0
        private static void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            DocumentGrid documentGrid = sender as DocumentGrid;
            ContextMenu  contextMenu;

            if (documentGrid == null)
            {
                return;
            }

            // We only want to programmatically generate the menu for Mongoose
            if (!(documentGrid.DocumentViewerOwner is DocumentApplicationDocumentViewer))
            {
                return;
            }

            // If the DocumentViewer or ScrollViewer has a ContextMenu set, the DocumentGrid menu should be ignored
            if (documentGrid.DocumentViewerOwner.ContextMenu != null || documentGrid.DocumentViewerOwner.ScrollViewer.ContextMenu != null)
            {
                return;
            }

            // Start by grabbing whatever's set to the UiScope's ContextMenu property.
            contextMenu = documentGrid.ContextMenu;

            // If someone explicitly set it null -- don't mess with it.
            if (documentGrid.ReadLocalValue(FrameworkElement.ContextMenuProperty) == null)
            {
                return;
            }

            // If it's not null, someone's overriding our default -- don't mess with it.
            if (contextMenu != null)
            {
                return;
            }

            // It's a default null, so spin up a temporary ContextMenu now.
            contextMenu                 = new ViewerContextMenu();
            contextMenu.Placement       = PlacementMode.RelativePoint;
            contextMenu.PlacementTarget = documentGrid;
            ((ViewerContextMenu)contextMenu).AddMenuItems(documentGrid, e.UserInitiated);

            Point uiScopeMouseDownPoint;

            if (e.CursorLeft == KeyboardInvokedSentinel)
            {
                uiScopeMouseDownPoint = new Point(.5 * documentGrid.ViewportWidth, .5 * documentGrid.ViewportHeight);
            }
            else
            {
                uiScopeMouseDownPoint = Mouse.GetPosition(documentGrid);
            }

            contextMenu.HorizontalOffset = uiScopeMouseDownPoint.X;
            contextMenu.VerticalOffset   = uiScopeMouseDownPoint.Y;

            // This line raises a public event.
            contextMenu.IsOpen = true;

            e.Handled = true;
        }
        private static void OnContextMenuOpening(object sender, ContextMenuEventArgs e)
        {
            DocumentGrid documentGrid = sender as DocumentGrid;
            ContextMenu contextMenu;

            if (documentGrid == null)
            {
                return;
            }

            // We only want to programmatically generate the menu for Mongoose
            if (!(documentGrid.DocumentViewerOwner is DocumentApplicationDocumentViewer))
                return;

            // If the DocumentViewer or ScrollViewer has a ContextMenu set, the DocumentGrid menu should be ignored
            if (documentGrid.DocumentViewerOwner.ContextMenu != null || documentGrid.DocumentViewerOwner.ScrollViewer.ContextMenu != null)
                return;

            // Start by grabbing whatever's set to the UiScope's ContextMenu property.
            contextMenu = documentGrid.ContextMenu;

            // If someone explicitly set it null -- don't mess with it.
            if (documentGrid.ReadLocalValue(FrameworkElement.ContextMenuProperty) == null)
                return;

            // If it's not null, someone's overriding our default -- don't mess with it.
            if (contextMenu != null)
                return;

            // It's a default null, so spin up a temporary ContextMenu now.
            contextMenu = new ViewerContextMenu();
            contextMenu.Placement = PlacementMode.RelativePoint;
            contextMenu.PlacementTarget = documentGrid;
            ((ViewerContextMenu)contextMenu).AddMenuItems(documentGrid, e.UserInitiated);

            Point uiScopeMouseDownPoint;
            if (e.CursorLeft == KeyboardInvokedSentinel)
            {
                uiScopeMouseDownPoint = new Point(.5 * documentGrid.ViewportWidth, .5 * documentGrid.ViewportHeight);
            }
            else
            {
                uiScopeMouseDownPoint = Mouse.GetPosition(documentGrid);
            }

            contextMenu.HorizontalOffset = uiScopeMouseDownPoint.X;
            contextMenu.VerticalOffset = uiScopeMouseDownPoint.Y;

            // This line raises a public event.
            contextMenu.IsOpen = true;

            e.Handled = true;
        }