日期:2014-05-18  浏览次数:20847 次

请问一个关于控件和变量的binding
我想把一个button的text绑定到一个变量v上,然后发现修改了v以后button的text并没有变换,以下是我的代码:
  Binding binding = new Binding("Text", v, null, false , DataSourceUpdateMode.OnPropertyChanged, null);
  button1.DataBindings.Add(binding);
其中v是一个string的变量,请问是不是dataMember设置错了呢?
如果v是一个int类型的,那应该如何修改这个binding呢? 非常感谢

------解决方案--------------------
这种情况除非v实现了INotifyPropertyChanged才可能保证v变了,binding跟着变。

MSDN这样解释的:
若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列任一功能:
实现 INotifyPropertyChanged 接口(首选)。
为绑定类型的每个属性提供更改事件。

对于Binding:
可以为数据源指定以下任意一个类的实例:
DataSet
DataTable
DataView
DataViewManager
BindingSource
实现 IList 接口的任何类
任何类

有关创建 dataMember 字符串的更多信息,请参见 Binding 类。

在创建到某个控件属性的绑定时,新的 Binding 会检查所绑定的控件公开的事件并附加到两个特殊事件:
Control.Validating
一个名为属性名称Changed 的事件(例如,Control.BackColorChanged)