2011-03-24 25 views
0

當用戶在3個文本框中輸入數字時,我計算第4個文本框中的平均值。 CalculateAverage方法是從前3個文本框的TextChanged事件中調用的。所有的文本框都被綁定。 (注:我知道計算值不應該存儲在數據庫中,但我無法改變這一點。)我使用WPF 4和實體框架4.如何防止計算的綁定文本框上的UpdateSource作爲數據加載?

我的問題是,平均文本框始終有EntityState.Modified。這是因爲加載數據或導航記錄導致TextChanged事件調用CalculateAverage。即使用戶沒有進行更改,並且CurrentValue(平均值)與OriginalValue匹配,綁定機制現在認爲此記錄是「髒的」。

我想知道是否有比我實施的更清潔的解決方案。我的修復是在數據加載和記錄導航過程中設置一個標誌。這意味着我不得不添加一個OnRecordChanging事件來設置_changingRecords標誌和一個OnRecordChanged事件來取消設置它。在CalculateAverage開始時,我有:if (_loadingData || _changingRecords) return;退出CalculateAverage並阻止更新到平均字段。

有沒有一種更清潔的方法來避免這個問題?

回答

0

這將起作用,我們實際上在一個項目上做了同樣的事情,以避免控件之間的「事件風暴」。

你應該注意的一件事是錯誤條件,以便你不會陷入「加載」狀態,以便更新停止工作。

+0

由於這是唯一的答案(迄今爲止),我接受了它。我正在使用我的_loadingData和_changingRecords標誌,如問題中所述。不過,它似乎不是一個乾淨的解決方案給我。 – DeveloperDan 2011-06-03 15:38:51

相關問題