2
有沒有c#(silverlight)的任何功能,我可以在其中查看usercontrol的屬性,以便在沒有使用依賴項屬性的情況下進行任何更改?我想要一個不是靜態的。更改時附加事件到屬性
有沒有c#(silverlight)的任何功能,我可以在其中查看usercontrol的屬性,以便在沒有使用依賴項屬性的情況下進行任何更改?我想要一個不是靜態的。更改時附加事件到屬性
有兩種標準機制,其中實現了「觀察」模式(正在描述)。一個是使用依賴屬性。
另一個是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.
}
}
我想你誤會依賴屬性。雖然包含對DependencyProperty對象的引用的字段是靜態的,但依賴屬性在概念上不是靜態的。一般來說,如果你從DependencyObject繼承,你可能想要使用依賴屬性來保持一致性(不得不記住綁定對某些屬性有效,而對象上的其他對象不好)。 – 2010-02-23 23:16:19