AvalonEdit:文本状态

本文关键字:状态 文本 AvalonEdit | 更新日期: 2023-09-27 18:19:32

如何在Avalonedit中确定该文本被修改?我想通知用户,文本修改已保存/未保存到文件中。

我尝试过这样的代码,但IsModified属性接缝是在TextChanged事件发生后设置的。所以我总是得到之前修改步骤的IsModified的值。

this.TextEditor.TextChanged += (o, i) =>
{
   this.CurrentStatus = this.TextEditor.IsModified ? Status.FILENOTSAVED : Status.NONE;
};

AvalonEdit:文本状态

IsModified是一个依赖属性。您应该使用WPF数据绑定将其绑定到CurrentStatus属性,而不是手动执行。

或者,使用DependencyPropertyDescriptor来侦听依赖属性更改:

var dpd = DependencyPropertyDescriptor.FromProperty(TextEditor.IsModifiedProperty, typeof(TextEditor));
dpd.AddValueChanged(this.TextEditor, OnIsModifiedChanged);

别忘了同时使用RemoveValueChanged,否则会泄露内存。