Error de propiedad de dependencia

Estoy aprendiendo propiedades de dependencia. Leí muchos posts y libros pero todavía no estoy claro.

El programa que se muestra a continuación es el que escribí para aprender. Algún error en eso, por favor ayuda a resolver. Tengo preguntas.

¿El uso principal del elemento de propiedad Dependencia personalizado es para la notificación de cambios?Encontré un código 'IsDefaultProperty' paraBotón en un libro de texto WPF. Significa 'IsDefault'propiedad es una propiedad de dependencia?¿Por qué mostraron ese código? ¿Significa, internamente, en la clase Button, se define así? (¿Mostraron código interno?) O mostraron cómo definirlo como personalizado?

Aquí está mi código:

<code>namespace DependencyProperties
{
    public class Contact
    {
        private int id=100;
        private string name="shri";
        public static readonly DependencyProperty IsPresentProperty;

        public int ID
        {
            get { return id; }
        }
        public string NAME
        {
            get { return name; }
        }

        static Contact()
        {
            IsPresentProperty = DependencyProperty.Register("IsPresent", typeof(bool),typeof(Contact),new FrameworkPropertyMetadata(false,new PropertyChangedCallback(OnIsPresentChanged)));
        }

        public bool Present
        {
            get { return (bool)GetValue(Contact.IsPresentProperty); }
            set { SetValue(Contact.IsPresentProperty, value); }
        }

        private static void OnIsPresentChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {  

        }
    }
}
</code>

Y veo el error:

<code>> Error: GetValue and SetValue does not exist in the current context
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta