我有一個Windows窗體「MyForm」,它具有綁定到另一個類「MyData」中的屬性的文本框。數據源更新模式設置爲「On Property Change」綁定到另一個類中的屬性的文本字段不會更新
我使用VisualStudio IDE。它創建了下面的代碼結合
this.txtYield.DataBindings.Add(new Binding("Text", this.BindingSourceMyDataClass, "PropertyInMyDataClass", true, DataSourceUpdateMode.OnPropertyChanged));
在表單構造,加入初始化後的值的代碼到邁德特類結合形式
myDataClassInstantiated = new MyDataClass();
BindingSourceMyDataClass.DataSource = myDataClassInstantiated;
的INotifyProperty接口已經實現:
public double PropertyInMyDataClass
{
get { return _PropertyInMyDataClass; }
set
{
if (!Equals(_PropertyInMyDataClass, value))
{
_PropertyInMyDataClass = value;
FirePropertyChanged("PropertyInMyDataClass");
}
}
}
後臺工作者用於運行計算並更新屬性'PropertyInMyDataClass'
我希望窗體上的文本框會在後臺工作完成時自動更新。這並沒有發生
如果我手動複製指定從屬性到窗體的文本框中的值,正常顯示的數值
this.txtYield.Text = String.Format("{0:F0}", myDataClassInstantiated.PropertyInMyDataClass);
我試圖刷新()和Update()添加到MyForm.MyBackgroundWorker_RunWorkerCompleted方法,但數據仍未刷新。
如果我以後運行不同的背景的工人,同樣的形式更新不同的文本框,勢必PropertyInMyDataClass文本框中被更新
我會很感激的建議,這將有助於我瞭解並解決此數據綁定問題
感謝@大衛C.我在此表單上有大約15個字段需要更新,我可以等到BackgroundWorkker_RunWorkerCompleted在UI線程上調用。你的代碼是解決這個問題的正確方法。如果我可以等到後臺工作人員完成更新字段,那麼是否有辦法啓動刷新? – DarwinIcesurfer
@達爾文你如何構建對後臺工作者的調用,並填充數據對象。數據對象是靜態還是類似的? –
否數據對象不是靜態的,但在後臺工作進程完成之前,沒有任何數據有效。該類具有許多用於計算的輸入屬性,在計算完成後,需要在表單上更新許多結果。也許數據綁定導致我修復更多的問題。 – DarwinIcesurfer