Dependency property of WPF is quite similar to normal .NET properties, but the concept behind is much more complex and powerful.
Dependency properties are used when the resolution of a property's value is based on other properties or runtime settings (such as operating system settings).
// Dependency Property
public static readonly DependencyProperty CurrentTimeProperty =
DependencyProperty.Register( "CurrentTime", typeof(DateTime),
typeof(MyClockControl), new FrameworkPropertyMetadata(DateTime.Now));
// .NET Property wrapper
public DateTime CurrentTime
{
get { return (DateTime)GetValue(CurrentTimeProperty); }
set { SetValue(CurrentTimeProperty, value); }
}
The difference between both the property is that: the value of a normal .NET property is read directly from a private member in your class, whereas the value of a DependencyProperty is resolved dynamically when calling the GetValue() method that is inherited from DependencyObject.
The advantages of Dependency property are:
1. Reduced memory footprint
2. Value inheritance
3. Change notification