【问题标题】:Attach an event to a property when changed更改时将事件附加到属性
【发布时间】:2010-02-21 17:44:39
【问题描述】:

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

【问题讨论】:

  • 我认为你误解了依赖属性。尽管包含对 DependencyProperty 对象的引用的字段是静态的,但依赖属性在概念上并不是静态的。一般来说,如果您从 DependencyObject 继承,您可能希望使用依赖属性来保持一致性(必须记住绑定将适用于某些属性,而不适用于对象上的其他属性)。

标签: c# silverlight


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2014-03-31
    • 1970-01-01
    • 2022-10-27
    相关资源
    最近更新 更多