Когда пользователи вводят числа в 3 текстовых поля, я вычисляю среднее значение в 4-м текстовом поле.Метод CalculateAverage вызывается из события TextChanged первых 3 текстовых полей.Все текстовые поля связаны.(Примечание: я знаю, что рассчитанные значения не должны храниться в базе данных, но я не могу это изменить.) Я использую WPF 4 и Entity Framework 4.
Моя проблема в том, что средний тексткоробка всегда имеет EntityState.Modified.Это связано с тем, что при загрузке данных или навигации по записям событие TextChanged вызывает метод CalculateAverage.Даже если пользователь не внес изменений и CurrentValue (в среднем) совпадает с OriginalValue, механизм привязки теперь считает эту запись «грязной».
Мне интересно, есть ли более чистое решение, чем этоЯ реализовал.Мое исправление - установить флаг во время загрузки данных и во время навигации по записям.Это означает, что мне пришлось добавить событие OnRecordChanging, чтобы установить флаг _changingRecords, и событие OnRecordChanged, чтобы отменить его.В начале CalculateAverage у меня есть: if (_loadingData || _changingRecords) return;
для выхода из CalculateAverage и предотвращения обновления среднего поля.
Есть ли более чистый подход, чтобы избежать этой проблемы?