2010-04-16 93 views
2

我想将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”。难道我做错了什么?我想念什么?

回答

3

您的表单需要为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

相关问题