WPF中監視DependencyProperty的變化
周銀輝
盡管一個類會提供很多事件,但有時候還是顯得不夠,比如說前兩天我就以為WPF的ListBox控件會有ItemsSourceChanged事件,但好像沒有。這里有一個方法可以監視任何一個DependencyProperty的Changed,下面是demo:
public class People : DependencyObject { public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof (string), typeof (People), new PropertyMetadata(default(string))); public string Name { get { return (string) GetValue(NameProperty); } set { SetValue(NameProperty, value); } } } //......... private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { var people = new People {Name = "zhang san"}; var descriptor = DependencyPropertyDescriptor.FromProperty(People.NameProperty, typeof (People)); descriptor.AddValueChanged(people, (o, args) => MessageBox.Show("name changed to " + people.Name)); people.Name = "Li si"; }