AvalonEdit: текстовое состояние

Как в Avalonedit определить, что текст изменен? Я хочу уведомить пользователя, что изменения текста сохраняются/не сохраняются в файл.

Я пробовал такой код, но швы свойств IsModified устанавливаются после того, как произошло событие TextChanged. Поэтому я всегда получаю значение IsModified для предыдущего шага модификации.

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

person Alex K.    schedule 28.10.2015    source источник


Ответы (1)


IsModified — это свойство зависимости. Вы должны использовать привязку данных WPF, чтобы привязать их к вашему свойству CurrentStatus, а не делать это вручную.

В качестве альтернативы используйте DependencyPropertyDescriptor для прослушивания изменений свойств зависимостей:

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

Не забудьте также использовать RemoveValueChanged, иначе произойдет утечка памяти< /а>.

person Daniel    schedule 28.10.2015