【问题标题】:Update Databinding on lost focus更新失去焦点的数据绑定
【发布时间】:2013-06-07 09:40:56
【问题描述】:

我看到 WPF 有一个 UpdateSourceTrigger 属性,它允许在控件失去焦点后进行数据绑定,winforms 有类似的东西吗?

我遇到了一个问题,即在更新数据绑定值时,整个源都会更改,而不是单个属性。

这给我带来了一个问题,因为我有一个CheckBox,当更改选中状态时,会更新另一个具有来自同一数据绑定源的数据绑定的源,这使得我的复选框永远不会改变值(或者更确切地说它确实会改变它返回)

我创建了一个 example program 来演示这一点。 (带有复选框和文本框的基本表单)

或者,是否有另一种方法来处理我的数据绑定以仅更改数据绑定的属性值而不是源?

【问题讨论】:

  • 我不太明白你想要什么。数据绑定应该绑定控件和源之间的数据。您想在不更改源的情况下更改控件中的某些值吗?一些具体的例子会很好。
  • @King King,链接提供了一个完整的例子。在示例中,在第 8 行,您可以看到它调用“文本”(文本被覆盖),它最终更改了文本框的数据绑定值,结果将复选框重置为源值,因此永远不允许复选框具有不同的价值
  • @sayse winforms 的数据绑定与 WPF 相比是可笑的。我认为如果不求助于子类化文本框或类似的东西,您将无法实现这一目标。
  • @highcore - 我很害怕......我想我需要将我的复选框绑定源移动到其他地方......

标签: c# winforms data-binding


【解决方案1】:

最后我不得不使用CheckedChanged 事件手动更新数据绑定。

例如,使用我的示例程序的源代码。

checkBox1.CheckedChanged += (s, e) => { 
  dc.BooleanVal = ((CheckBox)s).checked;
  customControl1.Text = "3"; 
  label1.Text = dc.BooleanVal.ToString(); };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2013-09-15
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多