【问题标题】:One-way binding单向绑定
【发布时间】:2016-08-24 17:26:48
【问题描述】:

我知道这个问题存在,但我在答案中找不到解决方案。

我有一个与自定义类绑定数据的表单,因此当更改表单时,自定义类会收到通知(相反的情况永远不会发生)。

myForm.DataBindings.Add("Items", ItemsController.Singleton, "Items", false, 
                        DataSourceUpdateMode.OnPropertyChanged);

现在发生的情况是,当我创建表单实例并使用一些值设置 Items 属性时,数据绑定会检查 ItemsController Items 属性并将其更新回具有 0 个项目的表单,我想使用单向数据绑定来防止这种情况发生。

是否有可能,或者我将不得不依赖事件的唯一?

【问题讨论】:

  • 在 DataBinding 中“OneWay”表示仅从 DataSource 到 Form 控件的更新方向。
  • 从表单控件到自定义类
  • 为什么不能将项目设置为自定义类Items 属性,那么它是有效的。并记住在您的自定义类中实现INotifyPropertyChanged 接口
  • 让我看看。您想设置表单Items 属性来更新ItemsController,而不是相反?
  • @Fabio 这是一种选择,但由于我使用工厂模式来创建表单,因此我希望工厂处理两者之间的绑定(感谢您的帮助,我只想学习和我不明白反对票:/)

标签: c# winforms data-binding


【解决方案1】:

看起来您正在寻找Binding.ControlUpdateMode 属性:

在对数据源的更改传播到绑定控件属性时获取或设置

myForm.DataBindings.Add(new Binding("Items", ItemsController.Singleton, "Items")
{
    DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged,
    ControlUpdateMode = ControlUpdateMode.Never
});

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 2012-02-11
    • 1970-01-01
    • 2018-07-07
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多