當用戶在3個文本框中輸入數字時,我計算第4個文本框中的平均值。 CalculateAverage方法是從前3個文本框的TextChanged事件中調用的。所有的文本框都被綁定。 (注:我知道計算值不應該存儲在數據庫中,但我無法改變這一點。)我使用WPF 4和實體框架4.如何防止計算的綁定文本框上的UpdateSource作爲數據加載?
我的問題是,平均文本框始終有EntityState.Modified。這是因爲加載數據或導航記錄導致TextChanged事件調用CalculateAverage。即使用戶沒有進行更改,並且CurrentValue(平均值)與OriginalValue匹配,綁定機制現在認爲此記錄是「髒的」。
我想知道是否有比我實施的更清潔的解決方案。我的修復是在數據加載和記錄導航過程中設置一個標誌。這意味着我不得不添加一個OnRecordChanging事件來設置_changingRecords標誌和一個OnRecordChanged事件來取消設置它。在CalculateAverage開始時,我有:if (_loadingData || _changingRecords) return;
退出CalculateAverage並阻止更新到平均字段。
有沒有一種更清潔的方法來避免這個問題?
由於這是唯一的答案(迄今爲止),我接受了它。我正在使用我的_loadingData和_changingRecords標誌,如問題中所述。不過,它似乎不是一個乾淨的解決方案給我。 – DeveloperDan 2011-06-03 15:38:51