WPF Avalon编辑使文本大写

WPF Avalon编辑使文本大写,wpf,runtime-error,avalonedit,Wpf,Runtime Error,Avalonedit,我正在使用带有Avalon编辑文本框的C#WPF 我试图使文本框中的所有文本都大写,但我收到一条错误消息“此时不应打开任何撤消组” 我正在使用以下代码: a.Text = a.Text.ToUpper(); 其中“a”是AvalonEdit.TextEditor 谢谢。设置文本编辑器.Text属性会产生清除撤消堆栈的副作用(与普通WPF文本框一样)。只有在没有打开的撤消组时才允许清除撤消堆栈 如果不想清除撤消堆栈,请使用textEditor.Document上的方法修改文档。您将希望避免替换整

我正在使用带有Avalon编辑文本框的C#WPF

我试图使文本框中的所有文本都大写,但我收到一条错误消息“此时不应打开任何撤消组”

我正在使用以下代码:

a.Text = a.Text.ToUpper();
其中“a”是AvalonEdit.TextEditor


谢谢。

设置
文本编辑器.Text
属性会产生清除撤消堆栈的副作用(与普通WPF
文本框一样)。只有在没有打开的撤消组时才允许清除撤消堆栈

如果不想清除撤消堆栈,请使用
textEditor.Document
上的方法修改文档。您将希望避免替换整个文本,因为这也会重置选择和插入符号的位置(毕竟,AvaloneEdit无法知道新文本与旧文本的关系)

如果确实要清除撤消堆栈(例如,将视图切换到其他文档),则必须找出撤消组打开的原因。最有可能的情况是,您的代码是从在撤消组仍处于打开状态时调用的事件的事件处理程序运行的(例如,
document.TextChanged
)--您可能希望切换到其他事件(例如,
document.UpdateFinished
在撤消组关闭后调用)

如果您只想在输入时修改大写文本,那么最好在将文本添加到文档之前对其进行修改:处理
TextArea.textcentering
事件以取消任何小写输入(设置
e.Handled=true;
),然后调用
TextArea.performtOutput()
以相应的大写文本重复文本输入过程

对于复制粘贴,您可以处理附加的
DataObject.PastingEvent
并修改要粘贴的数据