2010-04-16 4 views
2

Я хочу привязать настраиваемое свойство формы окна ко второму свойству, поэтому, когда я обновляю прежний, последнее получает то же значение.Как связать настраиваемое свойство формы окна со вторым свойством?

Это самый простой пример того, что я пытаюсь сделать:

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

Когда я нажимаю button1 я должен быть в состоянии видеть, что «OtherProperty» имеет такое же значение, как «MyTargetProperty». Я делаю что-то неправильно? Я что-то пропустил?

ответ

3

Ваша форма должна быть заполнена INotifyPropertyChanged для MyTargetProperty.

Пример:

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

Это будет выполнять один из способов связывания. MyTargetProperty никогда не будет обновляться при изменении OtherProperty. Если вам нужна двусторонняя привязка, вы меняете DataSourceUpdateMode, а также реализуете PropertyChanged для OtherProperty.

Смежные вопросы