用户控件
打开VS2010,新建项目(WpfPDFReader),右键项目添加User Control(用户控件)。因为Adobe PDF Reader COM 组件是不支持WPF的,为此我们需要将它放到WinForm. 控件中。所以,在列表中需要选择User Control,而不是User Control(WPF)。这里我将控件命名为:AdobeReaderControl.cs。完成添加双击控件进入设计模式。
在工具箱里选择添加组件,在COM 组件列表中点选“Adobe PDF Reader”。
AcroPDFLib 和AxAcroPDFLib 库会自动添加到项目中。
添加成功后会在工具箱里看到下图所示的控件。
将该COM 控件拖入User Control 。
控件默认名称为:axAcroPDF1,可按需要自行更改。
Dock属性设置为“Fill”,这样可以使控件自动适应窗口尺寸。
打开控件程序,修改构造函数。将PDF 文件传入控件并进行加载。
usingSystem.Windows.Forms;namespaceWpfPDFReader
{public partial classAdobeReaderControl:UserControl{publicAdobeReaderControl(stringfileName)
{
InitializeComponent();this.axAcroPDF1.LoadFile(fileName);
}
}
}
到此用户控件就基本完成了,下面开始WPF 部分的开发。
WPF
由于要将上面的WinForm. 控件加载到WPF 程序中,所以先要为WPF 添加WindowsFormsIntegration。
打开XAML 在 中添加Button 和WindowsFormsHost 控件,其中Button 用来启动文件目录窗口,从中选择要浏览的PDF文件;WindowsFormsHost 则用于嵌入WinForm. 控件。
<Windowx:Class="WpfPDFReader.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="WPF PDF Reader"Height="350"Width="525">
<Grid>
<ButtonContent="Open File"Click="Button_Click"Width="100"Height="30"VerticalContentAlignment="Center"VerticalAlignment="Top"Margin="0,10,0,0"/>
<WindowsFormsHostx:Name="winFormHost"Margin="0,46,0,0" />
Grid>
Window>
下面来完成Button 点击事件,将通过OpenFileDialog 选择的PDF 文件路径及名称传入AdobeReaderControl 用户控件中,并将该控件添加到WindowsFormsHost。
private stringopenFileName;privateOpenFileDialogopenFileDialog;private voidButton_Click(objectsender,RoutedEventArgse)
{
penFileDialog =newOpenFileDialog();
openFileDialog.DefaultExt ="pdf";
openFileDialog.Filter ="pdf files (*.pdf)|*.pdf";DialogResultresult = openFileDialog.ShowDialog();if(result == System.Windows.Forms.DialogResult.OK)
{
penFileName = openFileDialog.FileName;AdobeReaderControlpdfCtl =newAdobeReaderControl(openFileName);
winFormHost.Child = pdfCtl;
}else{return;
}
}
F5看下效果,点击“Open File” 选择一个PDF ,这样一个简单的WPF PDF Reader 就完成了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25284529/viewspace-684497/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25284529/viewspace-684497/