Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you hide a WPF DocumentViewer's menu bars?

At the moment I have a DocumentViewer in a WPF window that displays an XPS file. I have created my own "Next Page" and "Previous Page" buttons and have set the DocumentViewer.Background property to be completely transparent.

All that is left of the DocumentViewer's own controls is the menu bar at the top (displaying zoom settings, print, etc.) and the "Find" bar at the bottom. I would quite like to remove (or hide) both of these bars, but I can't seem to figure out how!?

Also, when the document is loaded it defaults to a zoom level that doesn't display the entire page on screen, I need to change it to display 1 page at a time (fully); I'm sure there is a way of doing this but again, I haven't found how as yet.

like image 662
Siyfion Avatar asked Oct 30 '09 11:10

Siyfion


2 Answers

Here's a simple "work-around" way to just hide those elements that doesn't require overriding the entire control template:

 <DocumentViewer>
     <DocumentViewer.Resources>
         <!-- Hides the search box-->
         <Style TargetType="ContentControl">
             <Setter Property="Visibility" Value="Collapsed" />
         </Style>

         <!-- Hides the toolbar -->          
         <Style TargetType="ToolBar">
             <Setter Property="Visibility" Value="Collapsed" />
         </Style>
     </DocumentViewer.Resources>
</DocumentViewer>
like image 73
dtesenair Avatar answered Oct 19 '22 18:10

dtesenair


To remove the toolbar you have to change the DocumentViewer's control template.

Start with the template in this link http://msdn.microsoft.com/en-us/library/aa970452.aspx and remove the ToolBar element (and maybe also the ContentControl with x:Name="PART_FindToolBarHost" at the bottom).

About setting the zoom, I don't have an elegant XAML solution, but you can call the DocumentViewer's FitToWidth or FitToHeight methods after you load the document (and every page if you must, you already have your own next/prev page code that can call those methods)

like image 38
Nir Avatar answered Oct 19 '22 16:10

Nir