1

我打算为一个小项目使用 .NET 数据绑定,该项目主要是一个配置编辑器。因此,一组设置绑定到一个表单,在开始时从 app.config 加载,并随时保存回来(有提示)。没有格式化,没有验证,没有数据库 - 非常简单的设置。我不相信 .NET 会执行随机回调,因此计划使用手动更新Binding.WriteValue,以便用户可以应用或拒绝所做的任何更改。

是否有任何本机 .NET 对象可用于触发WriteValues所有绑定?我看过BindingContextand BindingManagerBase,但没有找到一个很好的例子来说明如何使用它们。

我知道有BindingSource.ResetBindings,这是一个逻辑等价于ReadValue(没有ReadValue成员),所以寻找这样的东西来写回值。

我想避免遍历所有控件层次结构并单独枚举它们的每个绑定。

4

1 回答 1

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 来刷新值。

于 2014-07-18T13:32:41.057 回答