问题标签 [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.

0 投票
1 回答
1308 浏览

readonly - 在 AvalonEdit 中使(并保持)行只读

在 AvalonEdit 控件中使某些行只读的可靠方法是什么?用户可以更改 C# 或 VB 模板文件中的某些方法主体,但不能更改其他内容。当用户添加或删除行时,每行的只读状态需要保持不变,即编辑内容下方的只读块需要相应地上下移动。

我在 winforms 上的 WPFHost 中使用 AvalonEdit。

0 投票
0 回答
496 浏览

c# - ElementHost 重绘

我在我的WinForms应用程序中使用AvalonEdit 。AvalonEdit被放置在带有ElementHost的控件上。应用程序具有Telerik 的RadDock,并且AvalonEdit可以放置在其窗口上。我经常遇到ElementHost重绘的问题。我不知道所有的症状,但我可以通过改变焦点和在编辑器上移动其他窗口来重现这个问题。在此之后,我的应用程序中的所有 WPF 控件都损坏并且无法重新绘制。强制重绘ElementHost的唯一方法正在调整大小。我可以改变例如宽度和 WPF 控件将被重绘。但这种“解决方案”是不可接受的。在 x64 和 x86 机器上,可以为停靠或浮动窗口、带有或不带有活动滚动条的窗口重现该问题。要“修复” ElementHost,我需要重新启动应用程序。
有人对我有什么建议吗?

0 投票
3 回答
2319 浏览

c# - 如何在自定义 WPF C# 项目中的 AvalonEdit 控件中加载大文本文件

我们正在开发一个 .Net 4.0 C# WPF Line-of-business 应用程序,需要向用户显示(只读)大文本文件。TextBlock如 SO 中所述,这不是一个选项,并尝试了建议的 AvalonEdit 控件。运行 AvalonEdit.Sample 独立应用程序可以在不到一秒的时间内加载一个 8k 行的 4MB 文件,但是将 AvalonEdit 嵌入TextEditor到我们的 WPF 应用程序中需要花费 20 秒,与之前的TextBlock.

UI 相当复杂,带有用于树形菜单和表单的拆分器。该表单有几个拆分器来创建可调整大小的区域,其中一个包含一个选项卡控件。其中一个选项卡项具有TextEditor来自 AvalonEdit。

XAML

CS

加载文件时,我的笔记本电脑 i7 4 核 CPU 使用率为 33%。

TextEditor关于 AvalonEdit作为独立应用程序和自定义 WPF 应用程序中的不同行为的任何建议?

如何加载大文件(10MB,10k 行)TextEditor

更新:

视觉树:

视觉树

的属性TextEditor

文本编辑器属性

我删除了承载TextEditor所指出的 ScrollViewer,但实现了同样糟糕的性能。

更新 2: 我将其TextEditor移至新窗口以减少布局,但性能仍然很差。

新的、简化的可视化树:

视觉树 2

Grid列和行定义是*.

的属性TextEditor

文本编辑器属性

0 投票
3 回答
3269 浏览

c# - AvalonEdit 中的双向绑定不起作用

我在基于 WPF 和 MVVM 的项目中使用了 AvalonEdit。阅读这篇文章后,我创建了以下类:

并使用以下 XAML 来使用此控件:

但绑定有效OneWay,不会更新我的字符串属性,也不会运行验证规则。

如何修复绑定以按预期工作TwoWay

0 投票
1 回答
3581 浏览

c# - 在 ListView 的 ItemTemplate 中使用的 AvalonEdit 中的连接命令不起作用

我在我的项目中使用了 AvalonEdit 控件。当我使用 Ctrl+C 或 Ctrl+V 等快捷键时,相关的复制/粘贴命令可以正常工作。我决定在上下文菜单中使用这些命令以提高可用性,因为有些用户习惯于右键单击而不是快捷方式。我使用以下 XAML 代码进行控制:

但是当我运行程序时,这些命令总是在上下文菜单中显示为禁用,如下所示:

上下文菜单的屏幕截图

当我第一次遇到这个问题时,我发布了一个不同的问题,但在MD.Unicorn的帮助下(正如您在下面的评论中看到的那样),我意识到当您将 AvalonEdit 放在 ListBox 的 ItemTemplate 或 ListView 命令中时不起作用。

在 MD.unicorn 的帮助下,我创建了以下测试代码来重现结果:

ViewModel 类和一个简单的数据模板类

MainWindow 的 XAML 代码

如果您尝试此测试,您会看到如果在内容控件上使用 DataTemplate,则它在上下文菜单中的命令绑定工作正常,但在 ListViewItem 中它们被禁用。另请注意,DataTemplate 中的上下文菜单适用于 TextBox,并表明 ListView 本身不会破坏命令链。

如何修复上下文菜单并连接到 listView 项中的控制命令?

0 投票
1 回答
747 浏览

avalonedit - 如何使用 Avalon TextEditor 获取当前垂直滚动条位置

外部资源:http: //www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor

我正在使用编辑器来显示日志文件,并希望它在添加新行时始终滚动到按钮,但前提是它已经在底部。

我找到了一个 ScrollToEnd() 但这意味着它总是滚动,我需要某种方式来获取当前的滚动位置?任何人发现它或知道它是否不存在?

0 投票
5 回答
12049 浏览

c# - AvalonEdit 在代码中更改语法突出显示

我想在我的代码中更改 AvalonEdit 的语法突出显示。

XAML:

C#:

但是语法高亮没有改变。我究竟做错了什么?我的问题有更好的解决方案吗?

0 投票
1 回答
252 浏览

avalonedit - 防止插入符号将自身定位在行开始和第一个 VisualLineElement 之间(在 VisualColumn == 0 处)

我正在开发一个依赖AvalonEdit来管理文档的项目。本文档中的某些行被标记为使用无法从AvalonEdit中修改的特定缩进。

我已经设法通过VisualLineElements在这些标记行的开头注入来实现这一点。视觉元素具有缩进的 aDocumentLength0aVisualLength大小。我还重写了GetNextCaretPosition将插入符号“推”到左侧VisualLineElement(在向后移动的情况下)或向右(在向前移动的情况下)的方法。

这是我VisualLineElement的格式减少的版本(请注意,元素总是在 处注入VisualColumn == 0):

这很好用,除了我遇到的一个问题:我仍然可以将插入符号放在行首。从用户的角度来看,这非常令人困惑。更糟糕的是,在行首按“delete”或在缩进末尾按“退格”只会移动插入符号而不进行任何修改。据我了解,如果无法将插入符号放在行首(基于 中的代码CaretNavigationCommandHandler.OnMoveCaret),删除/退格问题将得到解决。

对于如何解决这个问题,我最好的猜测是覆盖HandlesLineBorders属性,使其返回 true,然后进行修改GetNextCaretPosition,以便: 1. 在元素上向前移动时,return VisualColumn + VisualLength(已经是这种情况) 2. 在元素上向后移动时,返回上一行的最后一个视觉列(我不知道该怎么做)

#2的最后一部分可能吗?如果是这样,我该怎么做?如果没有,我应该尝试其他方法吗?我真的很想坚持VisualLineElements在文档的实际内容和它的呈现方式之间保持清晰的分离。

0 投票
1 回答
777 浏览

wpf - AvalonEdit 如何修改特定行

例如,如何仅更改第 15 行的字体?我已经使用过.ScrollTo(15,4);,但是当我在第 15 行时没有命令突出显示或任何东西。(我想通过代码动态地做到这一点)。那么有什么方法可以只编辑一行?而且我还想知道如何通过代码突出显示该行。这是我的xml:

0 投票
1 回答
1975 浏览

c# - 选择 AvalonEdit 中突出显示的单词的所有实例

我想突出显示 AvalonEdit 中选定(突出显示)文本的所有实例。VS2010 做到了这一点,这是一个方便的功能。我知道我需要按照下面的代码实现 DocumentColorizingTransformer,但不知道如何从文档中获取选定的文本。选择信息在“CurrentContext”中不可用。

下面的代码查找“AvalonEdit”的所有实例。如何找到所选(突出显示)文本的所有实例。