2010-04-16 1 views
2

Windows 폼의 사용자 지정 속성을 두 번째 속성에 바인딩하려고합니다. 이전 버전을 업데이트 할 때 동일한 값을 얻습니다. 내가 button1을 클릭하면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); 
    } 
} 

하는 내가 'OtherProperty가'MyTargetProperty '와 같은 값을 가지고 있음을 볼 수 있어야합니다 :

이 내가 할 노력하고있어 간단한 예입니다. 내가 뭔가 잘못하고 있는거야? 내가 놓친 게 있니?

답변

3

양식에 MyTargetProperty의 경우 INotifyPropertyChanged을 구현해야합니다.

예 :이 바인딩 한 방법을 수행합니다

this.DataBindings.Add(
    "OtherProperty", 
    this, 
    "MyTargetProperty", 
    false, 
    DataSourceUpdateMode.Never); 

:

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); 
    } 
} 

그런 다음 당신은 다음과 같은 바인딩을 추가해야합니다. 이 변경되면 MyTargetProperty이 업데이트되지 않습니다. 양방향 바인딩이 필요한 경우 DataSourceUpdateMode을 변경하고 OtherProperty에 대해 PropertyChanged을 구현하십시오.

관련 문제