2010-04-16 134 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

相關問題