更改时将事件附加到属性

时间:2010-02-21 17:44:39

标签: c# silverlight

c#(silverlight)是否有任何功能可以在不使用依赖项属性的情况下进行任何更改时查看usercontrol的属性?我想要一个不是静态的。

1 个答案:

答案 0 :(得分:3)

有两种标准机制可以实现“观察”模式(即所描述的)。一个是使用依赖属性。

另一个是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.
    }
}