This is an old revision of the document!


Dependency Properties

If data binding is required to certain properties, then these need to be implemented as Dependency Properties.

Here is a good example (from: C# is Easy: Dependency Property):

public class Button : ButtonBase
{
  // The dependency property
  public static readonly DependencyProperty IsCancelProperty;
 
  // Constructor
  static Button()
  {
    // Register the property
    Button.IsCancelProperty = DependencyProperty.Register(“IsCancel”,
        typeof(bool), typeof(Button),
        new FrameworkPropertyMetadata(false,
        new PropertyChangedCallback(OnIsDefaultChanged)));}
 
  // A .NET property wrapper (not must)
  public bool IsCancel
  {
    get { return (bool)GetValue(Button.IsCancelProperty ); }
    set { SetValue(Button.IsCancelProperty , value); }
  }
 
  // A property changed callback (not must)
  private static void OnIsCancelChanged(
    DependencyObject o, DependencyPropertyChangedEventArgs e) {}}