当用户在 3 个文本框中输入数字时,我会在第 4 个文本框中计算平均值。从前 3 个文本框的 TextChanged 事件调用 CalculateAverage 方法。所有文本框都已绑定。(注意:我知道计算值不应该存储在数据库中,但我无法更改它。)我正在使用 WPF 4 和 Entity Framework 4。
我的问题是平均文本框总是有 EntityState.Modified。这是因为加载数据或导航记录会导致 TextChanged 事件调用 CalculateAverage。即使用户没有进行更改并且 CurrentValue(平均)与 OriginalValue 匹配,绑定机制现在仍认为此记录是“脏的”。
我想知道是否有比我实施的更清洁的解决方案。我的解决方法是在数据加载和记录导航期间设置一个标志。这意味着我必须添加一个 OnRecordChanging 事件来设置 _sharingRecords 标志和一个 OnRecordChanged 事件来取消设置它。在CalculateAverage 开始时,我有:if (_loadingData || _changingRecords) return;
退出CalculateAverage 并防止更新平均字段。
有没有更清洁的方法来避免这个问题?