WPF XAML中使用ScintillaNET存在问题

4

我正在尝试在WPF中使用ScintillaNET(通过Windows Forms Host)。但是,我遇到了无效的XAML标记。我的XAML代码如下:

<Window x:Class="ObjectiveWin.Editor"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:scintilla="clr-namespace:ScintillaNET"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ObjectiveWin 2013 Express" Height="392.537" Width="628.358" WindowState="Maximized" Loaded="editor_Loaded">
<Grid>
    <WindowsFormsHost HorizontalAlignment="Left" Height="340" Margin="0,22,0,0" VerticalAlignment="Top" Width="620">
        <scintilla:Scintilla></scintilla:Scintilla>
    </WindowsFormsHost>
</Grid>

然而,Visual Studio 2012 给了我这些错误:
1. "clr-namespace:ScintillaNET" 中不存在 Scintilla 的名称。 2. XML 命名空间 'clr-namespace:ScintillaNET' 中不存在标记“Scintilla”。位于第8行14位置。 3. 未找到 'scintilla:Scintilla'。请验证您没有丢失程序集引用,并且所有已引用的程序集都已构建。
我到底做错了什么?如果有关系的话,我正在使用 .NET Framework 4.5 和 VS2012。
2个回答

3

您的命名空间有误 (MSDN)。

如果引用的 clr-namespace 在引用自定义类的应用程序代码所在的程序集中被定义,则可以省略程序集。

请检查此命名空间:

xmlns:scintilla="clr-namespace:ScintillaNET;assembly=ScintillaNET"

谢谢。现在它可以编译了,但是VS2012仍然抱怨名称Scintillaclr-namespace:ScintillaNET;assembly=ScintillaNET中不存在。还有什么问题吗? - inixsoftware
这只是VS2012的一个bug吗?它可以编译,但仍然存在XAML错误!? - inixsoftware
可能是个bug,但如果你运行一切都没问题。 - kmatyaszek
窗口加载时抛出了“XAML解析器异常”,因此仍然存在问题。你知道是什么问题吗? - inixsoftware
好的,我已经修复了。我将SciLexer.dll添加到项目中作为可执行文件(.exe、.dll),并将其构建操作设置为复制到输出目录,这样就不会抛出“XAML解析器异常”了。 - inixsoftware

0

我遇到了同样的问题。 在搜索时,我发现了一篇关于一个单独的WPF分支的帖子,参考http://scintillanet.codeplex.com/SourceControl/latest

如果你去那里并点击Branches,你就可以看到它。

我下载了这个分支并构建了它,然后我将ScintillaNET.dll和ScintillaNET.WPF.dll添加到我的WPF应用程序中。

但仍然没有运气,当比较我的项目与我从codeplex得到的项目时,我发现

我的应用程序:项目属性->应用程序->目标框架设置为.NET Framework 4客户端配置文件(这不是完整的.NET FrameWork 4,而是轻量级版本)

来自codeplex的应用程序设置为.NET Framework 4。将我的应用程序更改为完整的.NET Framework 4后,所有问题都解决了。

我添加到我的XAML命名空间

xmlns:sn="http://scintillanet.codeplex.com"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接