Back to Devexpress

How to: Customize or Hide Popup Menus in the WPF PDF Viewer

wpf-120107-controls-and-libraries-pdf-viewer-examples-ui-customization-how-to-customize-or-hide-the-popup-menu.md

latest7.0 KB
Original Source

How to: Customize or Hide Popup Menus in the WPF PDF Viewer

  • Mar 09, 2023
  • 3 minutes to read

The following code examples show how to customize or hide the context menu.

Customize the Popup Menu

You can customize pop-up menu in code or in XAML.

XAML

Use the CommandProvider.Actions (for Bar command UI) or CommandProvider.RibbonActions (for Ribbon command UI) property to access the collection of actions. Use RemoveAction, UpdateAction or InsertAction to customize DefaultPdfBarManagerItemNames items.

This example shows how to remove items and add the Save As… item to the pop-up menu:

xaml
<dxpdf:PdfViewerControl x:Name="pdfViewer"
                        ShowStartScreen="True"
                        CommandBarStyle="Ribbon">
    <dxpdf:PdfViewerControl.CommandProvider>
        <dxpdf:PdfCommandProvider>
            <dxpdf:PdfCommandProvider.RibbonActions>
                <!--Remove Hand Tool and Select All items-->
                <dxb:RemoveAction ElementName="{x:Static dxpdf:DefaultPdfBarManagerItemNames.HandTool}"/>
                <dxb:RemoveAction ElementName="{x:Static dxpdf:DefaultPdfBarManagerItemNames.SelectAll}"/>
                <!--Add new Save As item-->
                <dxb:InsertAction ContainerName="{x:Static dxpdf:DefaultPdfBarManagerItemNames.ContextMenu}">
                    <dxb:InsertAction.Element>
                    <dxb:BarButtonItem Content="Save" LargeGlyph="{dx:DXImage Image=SaveAs_16x16.png}"
                        Command="{Binding ElementName=pdfViewer, Path=SaveAsCommand}"/>
                            </dxb:InsertAction.Element>
                </dxb:InsertAction>
            </dxpdf:PdfCommandProvider.RibbonActions>
        </dxpdf:PdfCommandProvider>
    </dxpdf:PdfViewerControl.CommandProvider>
</dxpdf:PdfViewerControl>

Code

Handle the PdfViewerControl.PopupMenuShowing event to add, remove or update the context menu items.

This example shows how to remove items and add the “Save As…” item to the page content pop-up menu:

View Example

xaml
<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PopupMenuShowing"
        xmlns:dxpdf="http://schemas.devexpress.com/winfx/2008/xaml/pdf" x:Class="PopupMenuShowing.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <dxpdf:PdfViewerControl x:Name="viewer"
                                PopupMenuShowing="Viewer_PopupMenuShowing"/>
    </Grid>
</Window>
csharp
using System.Windows;
using DevExpress.Xpf.PdfViewer;
using DevExpress.Xpf.Bars;

namespace PopupMenuShowing {

    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();

            // Load a document.
            viewer.OpenDocument("..\\..\\Demo.pdf");
        }

        private void Viewer_PopupMenuShowing(DependencyObject d, PopupMenuShowingEventArgs e) {

            // Remove the Hand tool item from the page context popup menu.
            RemoveAction removeHandTool = new RemoveAction();
            removeHandTool.ElementName = DefaultPdfBarManagerItemNames.HandTool;
            e.Actions.Add(removeHandTool);

            // Remove the Select All item from the page context popup menu.
            RemoveAction removeSelectAll = new RemoveAction();
            removeSelectAll.ElementName = DefaultPdfBarManagerItemNames.SelectAll;
            e.Actions.Add(removeSelectAll);

            // Insert the "Save As..." item that invokes the Save As dialog.
            BarButtonItem barButtonItem = new BarButtonItem();
            barButtonItem.Content = "Save As...";
            barButtonItem.Command = viewer.SaveAsCommand;
            InsertAction insertBarButtonItem = new InsertAction();
            insertBarButtonItem.ContainerName = DefaultPdfBarManagerItemNames.ContextMenu;
            insertBarButtonItem.Element = barButtonItem;
            e.Actions.Add(insertBarButtonItem);
        }
    }
}
vb
Imports System.Windows
Imports DevExpress.Xpf.PdfViewer
Imports DevExpress.Xpf.Bars

Namespace PopupMenuShowing

    Partial Public Class MainWindow
        Inherits Window

        Public Sub New()
            InitializeComponent()

            ' Load a document.
            viewer.OpenDocument("..\..\Demo.pdf")
        End Sub

        Private Sub Viewer_PopupMenuShowing(ByVal d As DependencyObject, ByVal e As PopupMenuShowingEventArgs)

            ' Remove the Hand tool item from the page context popup menu.
            Dim removeHandTool As New RemoveAction()
            removeHandTool.ElementName = DefaultPdfBarManagerItemNames.HandTool
            e.Actions.Add(removeHandTool)

            ' Remove the Select All item from the page context popup menu.
            Dim removeSelectAll As New RemoveAction()
            removeSelectAll.ElementName = DefaultPdfBarManagerItemNames.SelectAll
            e.Actions.Add(removeSelectAll)

            ' Insert the "Save As..." item that invokes the Save As dialog.
            Dim barButtonItem As New BarButtonItem()
            barButtonItem.Content = "Save As..."
            barButtonItem.Command = viewer.SaveAsCommand
            Dim insertBarButtonItem As New InsertAction()
            insertBarButtonItem.ContainerName = DefaultPdfBarManagerItemNames.ContextMenu
            insertBarButtonItem.Element = barButtonItem
            e.Actions.Add(insertBarButtonItem)
        End Sub
    End Class
End Namespace

Hide the Popup Menu

Set the PopupMenuShowingEventArgs.Cancel property to true in the PdfViewerControl.PopupMenuShowing event handler to disable the popup menu.

csharp
private void PdfViewer_PopupMenuShowing(DependencyObject d, DevExpress.Xpf.PdfViewer.PopupMenuShowingEventArgs e)
{
    e.Cancel = true;
}
vb
Private Sub PdfViewer_PopupMenuShowing(ByVal d As DependencyObject, ByVal e As DevExpress.Xpf.PdfViewer.PopupMenuShowingEventArgs)
    e.Cancel = True
End Sub