问题标签 [avalonedit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何在 AvalonEdit 中启用虚拟空间?
我想在 AvalonEdit 中实现类似于 Visual Studio 中的“虚拟空间”功能。
即插入符号可以位于文本行末尾之外,如果您按任意键,则会自动添加空格以进行匹配。
我非常习惯这个功能,但是谷歌搜索和研究 AvalonEdit 的代码都没有给我任何关于如何启用它的线索,如果它完全受支持的话。
如果不是,建议如何扩展插入符号处理机制会很好。
谢谢!
c# - 如何在 Microsoft Surface 应用程序中使用 AvalonEdit?
我在 Microsoft Surface 应用程序中使用AvalonEdit 。它工作得很好,但我有一个折叠问题。有这个小 + 图标可以启用折叠。但我不知道如何注册适当的联系人处理程序。任何提示如何做到这一点?
c# - AvalonEdit WPF TextEditor (SharpDevelop):如何突出显示特定范围的文本?
令人难以置信的 AvalonEdit WPF TextEditor 控件似乎缺少一个重要功能,或者至少我无法弄清楚。给定偏移量和长度,在 TextDocument 中使用 HighlightColor 突出显示该部分。很简单,对吧?
显然不是。我有 RTFM,关于“语法突出显示”的文档让我更加困惑。其他人在 SharpDevelop 论坛中提出了同样的问题,恐怕我无法理解 Herr Grunwald 的回答。
这是我的尝试,使用 DocumentHighlighter 类(当然它不起作用):
谢谢你的帮忙!
syntax-highlighting - 如何创建 AvalonEdit 语法文件 (.xshd) 并将其嵌入到我的程序集中?
我正在尝试为 AvalonEdit 定义一些自定义突出显示规则。似乎没有任何文档 - 有一些关于文件格式的文档,但没有关于如何在创建定义后实际加载和使用定义。
“语法高亮” wiki 页面(用于旧的 WinForms TextEditor)记录了如何从磁盘上的 .xshd 文件加载高亮定义,但我宁愿将其作为资源嵌入,就像 AvalonEdit 使用其内置定义一样.
我查看了加载其内置荧光笔的 ICSharpCode.AvalonEdit 项目中的代码,但实际的“从资源加载”代码是在 DefaultHighlightingManager.LoadHighlighting 中完成的,它是私有的 - 并且让事情变得更奇怪,显然只在发布版本中调用。
我可以继续摸索,从私有方法中复制/粘贴一些代码,并尝试拼凑一些可能会或可能不会起作用的东西,但似乎值得问一下:这样做的标准方法是什么?第三方代码是否有推荐的方法从资源中加载突出显示定义?
Daniel 的回答给了我一个良好的开端,但是您需要在传递给 GetManifestResourceStream 的字符串中包含命名空间名称——如果不这样做,您将得到 NullReferenceException(因为它返回一个空流)。
我最终使用以下方法将名为 ResourceLoader 的静态类添加到与 .xshd 文件相同的项目文件夹中:
然后我就可以打电话了ResourceLoader.LoadHighlightingDefinition("Name.xshd")
。
对于在家中跟随的任何人,.xshd 文件需要将其构建操作设置为嵌入式资源。
c# - AvalonEdit:即使没有聚焦也可以突出显示当前行
我正在使用 AvalonEdit,我希望用户始终能够看到插入符号在哪一行,即使编辑器没有焦点。为此,我找到并改编了一些使用 BackgroundRenderer 突出当前行背景的代码。
不幸的是,如果我在编辑器没有聚焦时更改 CaretOffset,我的背景矩形会保持在编辑器失去焦点时的当前行上。在编辑器再次获得焦点之前,它不会同步到新的当前行。
我弄清楚了为什么会发生这种情况(只是不知道如何解决它)。根据 IBackgroundRenderer 的文档注释,“背景渲染器仅在其关联的已知层选择绘制它们时才会绘制。例如,当插入符号隐藏时,插入符号层中的背景渲染器将不可见。” 我的背景渲染器存在于 KnownLayer.Caret 上,所以是的,我明白了为什么当编辑器没有聚焦时它没有更新——这是因为插入符号也被隐藏了。(考虑到这一点,我真的很惊讶我的矩形仍然可见。)
我尝试在设置 CaretOffset 后立即显式调用 textEditor.TextArea.TextView.InvalidateLayer(KnownLayer.Caret) ,但这没有任何效果——我猜该调用被忽略了,因为插入符号被隐藏了。
即使编辑器没有焦点,强制我的当前行突出显示更新的最佳方法是什么?
这是我的课程的代码。如果有更好的方法,我当然愿意放弃它并采取不同的方法。
然后在我的 UserControl 的构造函数中,我将渲染器添加到编辑器中:
wpf - 如果不可见,AvalonEdit 不会更新
我已经在我的应用程序中实现了 AvalonEdit。一切正常,除了一个小故障 - 如果我通过 Text 属性手动更改编辑器的内容,而编辑器不可见(例如,它在另一个选项卡上),编辑器的内容不会改变。然后,当我对编辑器本身的文本进行任何更改时,属性的值将被编辑器中的值覆盖。
如何手动告诉编辑器从 Text 属性重新加载其内容?
感谢帮助!
c# - Avalon 中的大括号折叠编辑
我使用 Daniel Grünwald 的 BraceFoldingStrategy:
这按预期工作,但还有一个问题
最后一个大括号上总是有一个最后一个 - 图标。我试图删除它,但是当我查看列表 newFoldings 时,我可以看到那里只有 3 个折叠。那么第四个是从哪里来的呢?
编辑
根据 Daniel Grünwald 的说法,问题在于我必须使用不同的折叠管理器。但是,我在设置第二个 FoldingManager 的初始化代码中找不到任何语句。也许有任何提示?
编辑 2
我检查了当前安装的 FoldingManager 有 3 个折叠,但我仍然不知道第四个折叠定义在哪里。
c# - 如何在 AvalonEdit 中以编程方式设置代码选择?
我在 Microsoft Surface 应用程序中使用 AvalonEdit。由于联系人的处理方式与普通 WPF 应用程序略有不同,因此我想以编程方式设置代码选择。
通过代码选择,我的意思是如果用户用鼠标选择它,这部分代码的背景会改变。
我现在选择应该开始和结束的 DocumentLine 或 VisualLine。但是我现在如何才能做出这个选择呢?
wpf - 托管 WPF 复合控件中的奇怪滚动条 UI
我的 Windows 窗体应用程序以其中一种形式托管 AvalonEdit(有问题的复合 WPF 控件)以满足其文本编辑要求。这是我使用的代码:
代码编译并执行良好,滚动条除外 - http://dl.dropbox.com/u/2584752/avalonEditBug.png。右键单击栏左侧会引发 ArgumentOutOfRange 异常。
奇怪的是,当我尝试在新创建的示例项目中托管控件时,我无法重现该问题。'mI 使用最新版本的文本编辑器并安装了所有必需的程序集。
编辑:将编辑器包装在用户控件中也无济于事。
wpf - 在 wpf 应用程序中嵌入 word 2010 编辑器
如何在 WPF 应用程序中使用文字编辑器?是否可以仅在 WPF 中使用 Windows 窗体托管?还有另一种方法可以实现吗?
我找到了AvalonEdit,但它没有我需要的功能。所以使用这种方式,我的问题可能解决不了。
还有一些东西可以在 WPF 中托管 Windows 窗体控件,但这不是我的答案。
我想了解有没有办法在 wpf 应用程序中以本机方式使用文字编辑器?该解决方案中的所有 API 都可用吗?
提前致谢。