AvalonEdit:文本状态



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

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

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

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

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

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

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

最新更新