Прикрепить событие к свойству при изменении - PullRequest
2 голосов
/ 21 февраля 2010

Есть ли какая-либо особенность c # (silverlight), в которой я могу наблюдать свойство usercontrol, когда есть какие-либо изменения, сделанные без использования свойств зависимости?Я хочу тот, который не является статичным.

1 Ответ

3 голосов
/ 21 февраля 2010

Существует два стандартных механизма, в которых реализован паттерн «наблюдения» (который и описывает). Одним из них является использование свойств зависимости.

Другая реализация интерфейса INotifyPropertyChanged.

public partial class MyUserControl : UserControl, INotifyPropertyChanged
{

  string _myProperty;
  public string MyProperty
  {
     get { return _myProperty; }
     set
     {
       _myProperty = value;
       NotifyPropertyChanged("MyProperty");
     }
  }

  private void NotifyPropertyChanged(string name)
  {
      if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(name);
  }

  public event PropertyChangedEventHandler PropertyChanged
}

Чтобы просмотреть свойство, вам необходимо присоединиться к событию PropertyChanged.

MyUserControl control = new MyUserControl();
control += Control_PropertyChanged;

...

void Control_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "MyProperty")
    {
      //Take appropriate action when MyProperty has changed.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...