如何在数据加载时阻止计算的绑定文本框上的UpdateSource?

时间:2011-03-24 19:34:04

标签: wpf entity-framework binding updatesourcetrigger

当用户在3个文本框中输入数字时,我会在第4个文本框中计算平均值。从前3个文本框的TextChanged事件中调用CalculateAverage方法。所有文本框都绑定。 (注意:我知道计算值不应存储在数据库中,但我无法更改。)我正在使用WPF 4和Entity Framework 4。

我的问题是普通文本框始终具有EntityState.Modified。这是因为加载数据或导航记录会导致TextChanged事件调用CalculateAverage。即使用户没有进行更改并且CurrentValue(平均值)与OriginalValue匹配,绑定机制现在也认为此记录是“脏”的。

我想知道是否有比我实施的更清洁的解决方案。我的修复是在数据加载期间和记录导航期间设置标志。这意味着我必须添加一个OnRecordChanging事件来设置_changingRecords标志和一个OnRecordChanged事件来取消设置它。在CalculateAverage的开头,我有if (_loadingData || _changingRecords) return;来保释计算平均值,并阻止更新平均字段。

是否有更清洁的方法来避免这个问题?

1 个答案:

答案 0 :(得分:0)

这样可行,我们实际上在项目上做了同样的事情,以避免控件之间的“事件风暴”。

您应该注意的一件事是错误情况,这样您就不会陷入“加载”状态,以便更新停止工作。