WPF XAML编译错误 - 名称空间

时间:2016-05-25 16:40:53

标签: c# wpf xaml

我正在尝试添加从我的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添加到我的应用程序中?

1 个答案:

答案 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);
     }

结果如下:

MoonPdf Display