我正在尝试添加从我的WPF应用程序中查看PDF文件的功能。
我一直关注以下教程:http://www.codeproject.com/Articles/579878/MoonPdfPanel-A-WPF-based-PDF-Viewer-Control#include,并且位于标题为“在应用程序中包含MoonPdfPanel”的部分。
我有以下XAML:
<Window x:Class="DocumentViewer.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:DocumentViewer"
xmlns:mpp="DocumentViewer:MoonPdfLib;assembly=MoonPdfLib"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<DockPanel>
<mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/>
<Grid DockPanel.Dock="Top">
<Menu x:Name="menu" IsMainMenu="True" HorizontalAlignment="Left" Height="20" VerticalAlignment="Top" Width="518">
<MenuItem Header="_File">
<MenuItem x:Name="loadDocument" Header="Load Document" Click="openFileMenuItem_click"></MenuItem>
<Separator />
<MenuItem x:Name="exit" Header="Exit" Click="exitApplication_click"></MenuItem>
</MenuItem>
</Menu>
</Grid>
<Grid x:Name="browserHost" DockPanel.Dock="Top" Margin="0,0,0,0">
</Grid>
<!--mpp:MoonPdfPanel x:Name="PdfPanel" Background="LightGray" ViewType="SinglePage" PageMargin="0,2,4,2" AllowDrop="True" /-->
<!--mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/-->
</DockPanel>
</Window>
但是,出于某种原因,我收到了一行编译错误:
<mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/>
说:
命名空间“MoonPdfPanel”在名称空间“DocumentViewer:MoonPdfLib
中不存在
我从https://sourceforge.net/projects/moonpdf/?source=typ_redirect下载了MoonPdfViewer,并确保它位于我的工作区的根目录中...据我所知,我已经按照教程所说的去做了,但我还是得到这个编译错误......
如果我尝试运行应用程序,当它告诉我存在构建错误,并询问我是否要继续并运行上一次成功构建时,如果我说“否”,则控制台中会显示3个错误:
命名空间“MoonPdfPanel”在名称空间“DocumentViewer:MoonPdfLib; assembly = MoonPdfLib”中不存在。
在'MoonPdfPanel'类型中找不到属性'PageDisplay'。
属性'PageDisplay'在XML命名空间'clr-namespace:MoonPdfLib; assembly = MoonPdfLib'中不存在。第11行72位。
我在这里做错了什么?如何将此MoonPdfPanel
添加到我的应用程序中?
答案 0 :(得分:1)
只需查看您提供的代码和链接,您的命名空间就错了。
你有:
xmlns:mpp="DocumentViewer:MoonPdfLib;assembly=MoonPdfLib"
应该是:
xmlns:mpp="clr-namespace:MoonPdfLib;assembly=MoonPdfLib"
您的本地名称空间可能是DocumentViewer
,但第三方库的名称空间使用项目引用。因此,除非它是命名空间中的实际组件,否则不包括命名空间,例如您自己的自定义控件。即使这样,命名空间也用句点.
分隔,而不是冒号。
小组按原样添加:
<mpp:MoonPdfPanel Name="pdfPanel" DockPanel.Dock="Bottom" Background="LightGray"
ViewType="SinglePage" PageRowDisplay="ContinuousPageRows" PageMargin="0,2,4,2" AllowDrop="True"/>
我可以使用以下方式加载PDF而不会出现任何问题:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select a PDF File";
ofd.Filter = "PDF File (*.pdf)|*.pdf";
if ((bool)ofd.ShowDialog())
{
pdfPanel.OpenFile(ofd.FileName);
}
结果如下: