Custom command in context menu of PDF viewer (MVVM)

2 posts, 0 answers
  1. Alexander
    Alexander avatar
    4 posts
    Member since:
    Oct 2018

    Posted 10 Jul 2019 Link to this post

    I would like to ask about context menu of PDF viewer.

    So, I have PDF viewer (which is located in some UserControl), it works fine. In my app I allow to user creating of custom bookmarks - just some name and page number. One of the ways, how can user create own bookmark - right click and choose create bookmark in context menu. To create this I would like to use custom RelayCommand, which is in ViewModel of MainWindow and also uses some properties from ViewModel of MainWindow.

    So, there is some problem. Since PdfViewer has it own DataContext (Command Descriptors), I can't use PlacementTarget to get some information from Window/UserControl DataContext (I tried relative source - it doesn't work). I found a solution - I created addition class with own RelayCommand, that works with STATIC variables (instance of PDF viewer to get current page) and methods (to create bookmark) from ViewModel. But I really dont like it really this solution.

    So, I would like to ask you, how can I use my custom command from ViewModel in context menu of Pdf viewer? Or at least how can I pass CurrentPageNumer as argument, when I click on my custom menu item (command from custom class, which is initialized as static resource) in contextmenu of PDFviewer?

    Now it looks like that:
    <telerik:RadMenuItem Header="Create Custom Bookmark" Command="{Binding SomeCommand, Source={StaticResource customClass}}"    
                                                     Visibility="Visible" >

    Thank you in advance!
    Best regards,

  2. Georgi
    Georgi avatar
    51 posts

    Posted 12 Jul 2019 Link to this post

    Hi Alexander,

    If I am understanding your scenario correctly, you would like to bind a custom command to a custom menu item of the context menu. If so, you can achieve the desired result by creating a custom command descriptors and apply them to the CommandDescriptors property of RadPdfViewer. You can create custom command by inheriting from the FixedDocumentViewerCommandBase class and add it to the CommandDescriptors by extending the DefaultCommandDescriptors class as can be seen in the Command Descriptors section of the documentation. The FixedDocumentViewerCommandBase class keeps a reference to a FixedDocumentViewerBase instance, which is the base class for RadPdfViewer. This way when the command is executed you will have access to the CurrentPageNumber property.

    I hope this is helpful.

    Progress Telerik
    Get quickly onboarded and successful with your Telerik and/or Kendo UI products with the Virtual Classroom free technical training, available to all active customers. Learn More.
Back to Top