如何将窗体的自定义属性绑定到第二个属性?
问题描述:
我想将Windows窗体的自定义属性绑定到第二个属性,所以当我更新前者时,后者获得相同的值。如何将窗体的自定义属性绑定到第二个属性?
这是我想要做的最简单的例子:
public partial class Form2 : Form
{
public string MyTargetProperty { get; set; }
public string OtherProperty { get; set; }
public Form2()
{
InitializeComponent();
this.DataBindings.Add("MyTargetProperty", this, "OtherProperty");
}
private void button1_Click(object sender, EventArgs e)
{
MyTargetProperty = "test";
Console.WriteLine("OtherProperty " + OtherProperty);
}
}
当我点击按钮1,我应该能看到“OtherProperty”具有相同的价值“MyTargetProperty”。难道我做错了什么?我想念什么?
答
您的表单需要为MyTargetProperty
执行INotifyPropertyChanged
。
例子:
class FooForm : Form, INotifyPropertyChanged
{
private int myTargetProperty;
public int MyTargetProperty
{
get { return this.myTargetProperty; }
set
{
this.myTargetProperty = value;
this.OnPropertyChanged(
new PropertyChangedEventArgs("MyTargetProperty"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
var evt = this.PropertyChanged;
if (evt != null)
evt(this, e);
}
}
然后你需要添加像这样绑定:
this.DataBindings.Add(
"OtherProperty",
this,
"MyTargetProperty",
false,
DataSourceUpdateMode.Never);
这将执行一个双向绑定。当OtherProperty
更改时,MyTargetProperty
将不会更新。如果您需要双向绑定,则更改DataSourceUpdateMode
,并执行PropertyChanged
以获得OtherProperty
。