c# - 阿瓦隆编辑 : Textstate

标签 c# .net avalonedit

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

我已经尝试过这样的代码,但是 IsModified 属性接缝是在 TextChanged 事件发生后设置的。因此,我总是为之前的修改步骤获取 IsModified 的值。

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

最佳答案

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

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

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

不要忘记同时使用RemoveValueChanged,否则您将leak memory .

关于c# - 阿瓦隆编辑 : Textstate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33390456/

相关文章:

.net - 实现 UserManager 以使用自定义类和存储过程

.net - Avalon 文本编辑器中上下键的光标位置没有改变

c# - 使用 AvalonEdit 进行语法高亮显示

c# - Panel.TabStop = true 没有效果

c# - 如果反射效率低下,什么时候最合适?

c# - 您如何处理您开发的软件的升级?

c# - TFS 构建 CopyDirectory 错误不停止构建

.net - 无法从 Swift 访问 HttpPost Web Api

c# - 在 avalon edit 中更改默认行高

c# - Host.CreateDefaultBuilder 未加载环境配置覆盖