Object
->
DispatcherObject
->
DependencyObject
->
Visual
->
UIElement
->
FrameworkElement
->
Control
->
DocumentViewerBase
->DocumentViewer
DocumentViewer
表示一个文档查看控件,该控件可以承载分页的
FixedDocument
内容,例如
XpsDocument
。
自定义 DocumentViewer 控件
若要对多个
DocumentViewer
控件应用相同的属性设置,请使用
Style
属性。 您可以修改
ControlTemplate
默认值,为控件指定独特的外观。 有关创建
ControlTemplate
的详细信息,请参阅
通过创建 System.windows.controls.controltemplate> 自定义现有控件的外观
。 若要查看特定于
DocumentViewer
的部分和状态,请参阅
DocumentViewer 样式和模板
。
此控件的依赖属性可能由控件的默认样式设置。 如果按默认样式设置属性,则当控件出现在应用程序中时,属性可能会更改为默认值。 默认样式取决于应用程序运行时使用的桌面主题。 有关详细信息,请参阅
默认的 WPF 主题
。
| 名称 | 备注 | 权限 |
|---|---|---|
| CanDecreaseZoomProperty |
标识 CanDecreaseZoom 依赖项属性。 |
public static readonly |
| CanIncreaseZoomProperty |
标识 CanIncreaseZoom 依赖项属性。 |
public static readonly |
| CanMoveDownProperty |
标识 CanMoveDown 依赖项属性。 |
public static readonly |
| CanMoveLeftProperty |
标识 CanMoveLeft 依赖项属性。 |
public static readonly |
| CanMoveRightProperty |
标识 CanMoveRight 依赖项属性。 |
public static readonly |
| CanMoveUpProperty |
标识 CanMoveUp 依赖项属性。 |
public static readonly |
| ExtentHeightProperty |
标识 ExtentHeight 依赖项属性。 |
public static readonly |
| ExtentWidthProperty |
标识 ExtentWidth 依赖项属性。 |
public static readonly |
| HorizontalOffsetProperty |
标识 HorizontalOffset 依赖项属性。 |
public static readonly |
| HorizontalPageSpacingProperty |
标识 HorizontalPageSpacing 依赖项属性。 |
public static readonly |
| MaxPagesAcrossProperty |
标识 MaxPagesAcross 依赖项属性。 |
public static readonly |
| ShowPageBordersProperty |
标识 ShowPageBorders 依赖项属性。 |
public static readonly |
| VerticalOffsetProperty |
标识 VerticalOffset 依赖项属性。 |
public static readonly |
| VerticalPageSpacingProperty |
标识 VerticalPageSpacing 依赖项属性。 |
public static readonly |
| ViewportHeightProperty |
标识 ViewportHeight 依赖项属性。 |
public static readonly |
| ViewportWidthProperty |
标识 ViewportWidth 依赖项属性。 |
public static readonly |
| ZoomProperty |
标识 Zoom 依赖项属性。 |
public static readonly |
| 名称 | 备注 | 权限 |
|---|---|---|
| CanDecreaseZoom |
获取一个值,该值指示 DocumentViewer 是否可以进一步缩小。 |
get; |
| CanIncreaseZoom |
获取一个值,该值指示 DocumentViewer 是否可以进一步放大。 |
get; |
| CanMoveDown |
获取一个值,该值指示 DocumentViewer 是否可以在文档中进一步向下移动。 |
get; |
| CanMoveLeft |
获取一个值,该值指示 DocumentViewer 是否可以在文档中进一步向左移动。 |
get; |
| CanMoveRight |
获取一个值,该值指示 DocumentViewer 是否可以在文档中进一步向右移动。 |
get; |
| CanMoveUp |
获取一个值,该值指示 DocumentViewer 是否可以在文档中进一步向上移动。 |
get; |
| ExtentHeight | 获取分页文档的整体垂直高度。 | get; |
| ExtentWidth | 获取分页文档的整体水平宽度。 | get; |
| FitToHeightCommand |
获取执行 FitToHeight() 操作的 RoutedUICommand 。 |
get; |
| FitToMaxPagesAcrossCommand |
获取执行 MaxPagesAcross 操作的 RoutedUICommand 。 |
get; |
| FitToWidthCommand |
获取执行 FitToWidth() 操作的 RoutedUICommand 。 |
get; |
| HorizontalOffset | 获取或设置水平滚动条位置。 | get; set; |
| HorizontalPageSpacing | 获取或设置页面之间的水平间距。 | get; set; |
| MaxPagesAcross | 获取或设置一个值,该值定义要显示的最大页面列数。 | get; set; |
| ShowPageBorders | 获取或设置一个值,该值指示是否显示阴影页边框。 | get; set; |
| VerticalOffset | 获取或设置垂直滚动条的位置。 | get; set; |
| VerticalPageSpacing | 获取或设置显示页面之间的垂直间距。 | get; set; |
| ViewportHeight | 获取可滚动的内容区域的垂直大小。 | get; |
| ViewportWidth | 获取可滚动的内容区域的水平大小。 | get; |
| ViewThumbnailsCommand |
获取执行 ViewThumbnails() 操作的 RoutedUICommand 。 |
get; |
| Zoom | 获取或设置文档缩放百分比。 | get; set; |
| 名称 | 备注 | 权限 |
|---|---|---|
| DecreaseZoom | 将文档内容缩小一个缩放级别。 | public |
| Find | 将焦点移到查找工具栏上,以搜索文档内容。 | public |
| FitToHeight | 使一个页面适合当前视区的高度。 | public |
| FitToMaxPagesAcross |
使文档适合 MaxPagesAcross 属性设置。 |
public |
| FitToWidth | 使一个页面适合当前视区的宽度。 | public |
| GetPageViewsCollection |
返回当前显示的 DocumentPageView 元素的集合。 |
protected |
| IncreaseZoom | 将文档内容放大一个缩放级别。 | public |
| MoveDown | 将文档内容向下滚动 16 个与设备无关的像素。 | public |
| MoveLeft | 将文档内容向左滚动 16 个与设备无关的像素。 | public |
| MoveRight | 将文档内容向右滚动 16 个设备独立像素。 | public |
| MoveUp | 将文档内容向上滚动 16 个与设备无关的像素。 | public |
| OnApplyTemplate |
响应对 ApplyTemplate() 方法的调用。 |
public |
| OnBringIntoView |
响应来自 OnBringIntoView(DependencyObject, Rect, Int32) 实现的 DocumentViewerBase 方法。 |
protected |
| OnCreateAutomationPeer |
创建并返回此 AutomationPeer 控件的 DocumentViewer 。 |
protected |
| OnDecreaseZoomCommand |
响应对 DecreaseZoom() 方法的调用。 |
protected |
| OnDocumentChanged | 当要显示的文档发生变化时对调用做出响应。 | protected |
| OnFindCommand |
响应对 Find() 方法的调用。 |
protected |
| OnFirstPageCommand |
响应对 FirstPage() 方法的调用。 |
protected |
| OnFitToHeightCommand |
响应对 FitToHeight() 方法的调用。 |
protected |
| OnFitToMaxPagesAcrossCommand |
响应对 FitToMaxPagesAcross 方法的调用。 |
protected |
| OnFitToWidthCommand |
响应对 FitToWidth() 方法的调用。 |
protected |
| OnGoToPageCommand |
响应对 GoToPage(Int32) 方法的调用。 |
protected |
| OnIncreaseZoomCommand |
响应对 IncreaseZoom() 方法的调用。 |
protected |
| OnKeyDown |
响应 KeyDown 事件。 |
protected |
| OnLastPageCommand |
响应对 LastPage() 方法的调用。 |
protected |
| OnMouseLeftButtonDown |
响应 MouseLeftButtonDown 事件。 |
protected |
| OnMoveDownCommand |
响应对 MoveDown() 方法的调用。 |
protected |
| OnMoveLeftCommand |
响应对 MoveLeft() 方法的调用。 |
protected |
| OnMoveRightCommand |
响应对 MoveRight() 方法的调用。 |
protected |
| OnMoveUpCommand |
响应对 MoveUp() 方法的调用。 |
protected |
| OnNextPageCommand |
响应对 NextPage() 方法的调用。 |
protected |
| OnPreviewMouseWheel |
响应 PreviewMouseWheel 事件。 |
protected |
| OnPreviousPageCommand |
响应对 PreviousPage() 方法的调用。 |
protected |
| OnScrollPageDownCommand |
响应对 ScrollPageDown() 方法的调用。 |
protected |
| OnScrollPageLeftCommand |
响应对 ScrollPageLeft() 方法的调用。 |
protected |
| OnScrollPageRightCommand |
响应对 ScrollPageRight() 方法的调用。 |
protected |
| OnScrollPageUpCommand |
响应对 ScrollPageUp() 方法的调用。 |
protected |
| OnViewThumbnailsCommand |
响应对 ViewThumbnails() 方法的调用。 |
protected |
| ScrollPageDown | 向下滚动一个视区。 | public |
| ScrollPageLeft | 向左滚动一个视区。 | public |
| ScrollPageRight | 向右滚动一个视区。 | public |
| ScrollPageUp | 向上滚动一个视区。 | public |
| ViewThumbnails | 显示页面的缩略图表示形式。 | public |
DocumentViewerBase
提供用于显示固定内容或流动内容(分别由
FixedDocument
或
FlowDocument
表示)的查看器的基类。
DocumentViewerBase
是一个最小基类,旨在仅提供在文档查看方案中通用的基本功能。 此基类不提供用户界面。
| 名称 | 备注 | 权限 |
|---|---|---|
| CanGoToNextPageProperty |
标识 CanGoToNextPage 依赖项属性。 |
public static readonly |
| CanGoToNextPagePropertyKey |
标识 CanGoToNextPage 依赖属性键。 |
public static readonly |
| CanGoToPreviousPageProperty |
标识 CanGoToPreviousPage 依赖项属性。 |
public static readonly |
| CanGoToPreviousPagePropertyKey |
标识 CanGoToPreviousPage 依赖属性键。 |
public static readonly |
| DocumentProperty |
标识 Document 依赖项属性。 |
public static readonly |
| IsMasterPageProperty |
标识 IsMasterPage 附加属性。 |
public static readonly |
| MasterPageNumberProperty |
标识 MasterPageNumber 依赖项属性。 |
public static readonly |
| MasterPageNumberPropertyKey |
标识 MasterPageNumber 依赖属性键。 |
public static readonly |
| PageCountProperty |
标识 PageCount 依赖项属性。 |
public static readonly |
| PageCountPropertyKey |
标识 PageCount 依赖属性键。 |
protected static readonly |
| 名称 | 备注 | 权限 |
|---|---|---|
| CanGoToNextPage |
获取一个值,该值指示此查看器是否能跳转到当前 Document 的下一页。 |
get; |
| CanGoToPreviousPage |
获取一个值,该值指示此查看器是否能跳转到当前 Document 的上一页。 |
get; |
| Document |
获取或设置要分页或由查看器显示的 IDocumentPaginatorSource 。 |
get; |
| LogicalChildren | 获取查看器的逻辑树中子级的枚举器。 | get; |
| MasterPageNumber | 获取当前母版页的页码。 | get; |
| PageCount |
获取当前 Document 的总页数。 |
get; |
| PageViews |
获取查看器所包含的活动 DocumentPageView 对象的只读集合。 |
get; |
| 名称 | 备注 | 权限 |
|---|---|---|
| CancelPrint | 取消任何当前打印作业。 | public |
| CanGoToPage | 返回一个值,该值指示查看器是否能跳转到指定的页码。 | public |
| FirstPage |
导致查看器跳转到当前文档的第一页(由 Document 属性表示)。 |
public |
| GetIsMasterPage |
返回指定的依赖对象的 IsMasterPage 附加属性值。 |
public |
| GetMasterPageView |
返回此查看器的当前母版 DocumentPageView 。 |
protected |
| GetPageViewsCollection |
创建并返回与当前显示文档(由 Document 属性表示)关联的 DocumentPageView 对象的新的只读集合。 |
protected |
| GoToPage | 导致查看器跳转到指定页码。 | public |
| InvalidatePageViews |
导致要重新生成 PageViews 工作集合。 |
protected |
| LastPage |
导致查看器跳转到当前文档的最后一页(由 Document 属性表示)。 |
public |
| NextPage |
导致查看器跳转到当前文档的下一页(由 Document 属性表示)。 |
public |
| 为查看器构建可视化树。 | public | |
| OnBringIntoView | 返回一个值,该值指示查看器是否能跳转到指定的页码。 | protected |
| OnCancelPrintCommand |
导致查看器跳转到当前文档的第一页(由 Document 属性表示)。 |
protected |
| OnCreateAutomationPeer |
返回指定的依赖对象的 IsMasterPage 附加属性值。 |
protected |
| OnDocumentChanged |
返回此查看器的当前母版 DocumentPageView 。 |
protected |
| OnDpiChanged |
创建并返回与当前显示文档(由 Document 属性表示)关联的 DocumentPageView 对象的新的只读集合。 |
protected |
| OnFirstPageCommand | 导致查看器跳转到指定页码。 | protected |
| OnGoToPageCommand |
处理 GoToPage 路由命令。 |
protected |
| OnLastPageCommand |
处理 LastPage 路由命令。 |
protected |
| OnMasterPageNumberChanged |
只要修改 MasterPageNumber 属性就会调用此方法。 |
protected |
| OnNextPageCommand |
处理 NextPage 路由命令。 |
protected |
| OnPageViewsChanged |
只要修改此查看器的 DocumentPageView 对象(由 PageViews 属性表示)的工作集,就会调用此方法。 |
protected |
| OnPreviousPageCommand |
处理 PreviousPage 路由命令。 |
protected |
| OnPrintCommand |
处理 路由命令。 |
protected |
| PreviousPage |
导致查看器跳转到当前文档的上一页(由 Document 属性表示)。 |
public |
| 调用标准的“打印”对话框,此对话框可用于打印查看器的内容和配置打印首选项。 | public | |
| SetIsMasterPage |
设置指定依赖对象上的 IsMasterPage 附加属性。 |
public |
| 名称 | 备注 |
|---|---|
|
当与此查看器(由 DocumentPageView 属性表示)关联的 PageViews 项目的集合更改时发生。 |
| 名称 | 备注 |
|---|---|
| object IServiceProvider.GetService (Type serviceType); | |
| void IAddChild.AddChild (object value); | |
| void IAddChild.AddText (string text); |
| 名称 | 备注 | 对应方法 |
|---|---|---|
| 获取一个值,该值指示是否应将查看器中的子元素用作母版页。 | GetIsMasterPage、SetIsMasterPage |
简单范例
<Window x:Class="DocumentViewerDemo.MainWindow"
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:DocumentViewerDemo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<DocumentViewer x:Name="myDocumentViewer">
</DocumentViewer>
</Window>
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Xps.Packaging;
namespace DocumentViewerDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
OpenFileDialog dialog = new OpenFileDialog { Filter = "XPS 文档(*.xps)|*.xps" };
if (dialog.ShowDialog() == true)
{
myDocumentViewer.Document = new XpsDocument(dialog.FileName, System.IO.FileAccess.Read).GetFixedDocumentSequence();
}
}
}
}