Second thing to do is registering a public dependency property that is assigned to Attached properties are a special kind of Dependency Properties.
They allow you to attach a value to an object that does not know anything about this value. Each layout panel needs different data to align its child elements. Since you can write your own layout panel, the list is infinite.
In the case of a dependency property the actual value that is accessed by a property getter and setter methods is NOT a direct field variable either in the same class on which the property is accessed from or NEITHER a direct field variable in one of its base classes.
This means in a dependency property case the actual Property name and the value that the property gets and sets for the callers are loosely coupled.
NET property is read directly from a private member in your class, whereas the value of a Dependency Property is resolved dynamically when calling the method that is inherited from Dependency Object. This baseclass defines a key, value dictionary that contains local values of dependency properties.