问题标签 [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.
readonly - 在 AvalonEdit 中使(并保持)行只读
在 AvalonEdit 控件中使某些行只读的可靠方法是什么?用户可以更改 C# 或 VB 模板文件中的某些方法主体,但不能更改其他内容。当用户添加或删除行时,每行的只读状态需要保持不变,即编辑内容下方的只读块需要相应地上下移动。
我在 winforms 上的 WPFHost 中使用 AvalonEdit。
c# - ElementHost 重绘
我在我的WinForms应用程序中使用AvalonEdit 。AvalonEdit被放置在带有ElementHost的控件上。应用程序具有Telerik 的RadDock,并且AvalonEdit可以放置在其窗口上。我经常遇到ElementHost重绘的问题。我不知道所有的症状,但我可以通过改变焦点和在编辑器上移动其他窗口来重现这个问题。在此之后,我的应用程序中的所有 WPF 控件都损坏并且无法重新绘制。强制重绘ElementHost的唯一方法正在调整大小。我可以改变例如宽度和 WPF 控件将被重绘。但这种“解决方案”是不可接受的。在 x64 和 x86 机器上,可以为停靠或浮动窗口、带有或不带有活动滚动条的窗口重现该问题。要“修复” ElementHost,我需要重新启动应用程序。
有人对我有什么建议吗?
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
移至新窗口以减少布局,但性能仍然很差。
新的、简化的可视化树:
Grid
列和行定义是*
.
的属性TextEditor
:
c# - AvalonEdit 中的双向绑定不起作用
我在基于 WPF 和 MVVM 的项目中使用了 AvalonEdit。阅读这篇文章后,我创建了以下类:
并使用以下 XAML 来使用此控件:
但绑定有效OneWay
,不会更新我的字符串属性,也不会运行验证规则。
如何修复绑定以按预期工作TwoWay
?
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 项中的控制命令?
avalonedit - 如何使用 Avalon TextEditor 获取当前垂直滚动条位置
外部资源:http: //www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor
我正在使用编辑器来显示日志文件,并希望它在添加新行时始终滚动到按钮,但前提是它已经在底部。
我找到了一个 ScrollToEnd() 但这意味着它总是滚动,我需要某种方式来获取当前的滚动位置?任何人发现它或知道它是否不存在?
c# - AvalonEdit 在代码中更改语法突出显示
我想在我的代码中更改 AvalonEdit 的语法突出显示。
XAML:
C#:
但是语法高亮没有改变。我究竟做错了什么?我的问题有更好的解决方案吗?
avalonedit - 防止插入符号将自身定位在行开始和第一个 VisualLineElement 之间(在 VisualColumn == 0 处)
我正在开发一个依赖AvalonEdit来管理文档的项目。本文档中的某些行被标记为使用无法从AvalonEdit中修改的特定缩进。
我已经设法通过VisualLineElements
在这些标记行的开头注入来实现这一点。视觉元素具有缩进的 aDocumentLength
和0
aVisualLength
大小。我还重写了GetNextCaretPosition
将插入符号“推”到左侧VisualLineElement
(在向后移动的情况下)或向右(在向前移动的情况下)的方法。
这是我VisualLineElement
的格式减少的版本(请注意,元素总是在 处注入VisualColumn == 0
):
这很好用,除了我遇到的一个问题:我仍然可以将插入符号放在行首。从用户的角度来看,这非常令人困惑。更糟糕的是,在行首按“delete”或在缩进末尾按“退格”只会移动插入符号而不进行任何修改。据我了解,如果无法将插入符号放在行首(基于 中的代码CaretNavigationCommandHandler.OnMoveCaret
),删除/退格问题将得到解决。
对于如何解决这个问题,我最好的猜测是覆盖HandlesLineBorders
属性,使其返回 true,然后进行修改GetNextCaretPosition
,以便: 1. 在元素上向前移动时,return VisualColumn + VisualLength
(已经是这种情况) 2. 在元素上向后移动时,返回上一行的最后一个视觉列(我不知道该怎么做)
#2的最后一部分可能吗?如果是这样,我该怎么做?如果没有,我应该尝试其他方法吗?我真的很想坚持VisualLineElements
在文档的实际内容和它的呈现方式之间保持清晰的分离。
wpf - AvalonEdit 如何修改特定行
例如,如何仅更改第 15 行的字体?我已经使用过.ScrollTo(15,4);
,但是当我在第 15 行时没有命令突出显示或任何东西。(我想通过代码动态地做到这一点)。那么有什么方法可以只编辑一行?而且我还想知道如何通过代码突出显示该行。这是我的xml:
c# - 选择 AvalonEdit 中突出显示的单词的所有实例
我想突出显示 AvalonEdit 中选定(突出显示)文本的所有实例。VS2010 做到了这一点,这是一个方便的功能。我知道我需要按照下面的代码实现 DocumentColorizingTransformer,但不知道如何从文档中获取选定的文本。选择信息在“CurrentContext”中不可用。
下面的代码查找“AvalonEdit”的所有实例。如何找到所选(突出显示)文本的所有实例。