2013-02-15 57 views
1

我打算將.NET數據綁定用於小型項目,主要是配置編輯器。因此,一組設置綁定到一個表單,在開始時從app.config加載,並隨時保存(帶提示)。沒有格式化,沒有驗證,沒有數據庫 - 非常簡單的設置。我不相信.NET執行隨機回調,因此計劃使用Binding.WriteValue進行手動更新,以便用戶可以應用或拒絕所做的任何更改。如何爲所有綁定寫入值

是否有任何本機.NET對象,我可以使用觸發WriteValues所有綁定?我看過BindingContextBindingManagerBase,但沒有找到一個關於如何使用它們的好工作示例。

我知道有BindingSource.ResetBindings,這是一個邏輯等效於ReadValue(沒有ReadValue成員),所以尋找這樣的東西寫回值。

我想避免遍歷所有控件層次結構,並逐個枚舉每個綁定。

回答

1

我不知道你是否仍然需要這個答案,但在這裏。

拉姆達(短):

Controls.Cast<Control>().ForEach(control=>control.DataBindings.Cast<Binding>().ForEach(binding=>binding.WriteValue())); 

經典(長):

foreach (var control in Controls.Cast<Control>()) 
{ 
    foreach (var binding in control.DataBindings.Cast<Binding>()) 
    { 
     binding.WriteValue(); 
    } 
} 

我不知道你有多少個控件有表單上,但不能與良好的性能。另外如果你有嵌套控件,你需要調用遞歸。

更好地將值分配給您分配給DataSource的類的Istance。不要將其寫入控件屬性,最好將其寫入數據存儲區。那麼你可以使用綁定並調用ResetBindings來刷新值。

+0

感謝您的回答。我最終得到了類似的東西。很難完全記住,因爲需求是一年多以前。從那時起我也改變了工作。 :)無論如何,+1和接受。 – Neolisk 2014-07-18 13:46:53