WPF comes with Dependency Properties and everybody using WPF will know about these new kind of properties. When you define your own Dependency Properties in your own class you can pretty easy add a property change event handler:
public int MyProperty { get { return (int)GetValue(MyPropertyProperty); } set { SetValue(MyPropertyProperty, value); } } public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(int), typeof(MainWindow), new UIPropertyMetadata(0, MyPropertyvalueChangeCallback)); private static void MyPropertyvalueChangeCallback (DependencyObject d, DependencyPropertyChangedEventArgs e) { }
But how to add such a event handler to an already existing Dependency Property or somewhere else then in the defining class? E.g. to an property of a WPF-Control that was not build by you. Take a standard WPF-TextBox; both the Text
and the FontSize
properties are Dependency Properties but the TextBox
-class only provides a change event for the Text
-property. Nevertheless you can get a change event for any Dependency Property:
DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor.FromProperty (Control.FontSizeProperty, typeof (TextBox)); dpd.AddValueChanged(someTextBox, SomeTextBoxFontSizeChanged);
Every time the FontSizeProperty on the instance someTextBox
changes the given method is called. It’s that easy and you can implement this code everywhere not only within the class that defines the property.
Recent Comments