All right, you swallowed the pure terminological bait, if you think that dependency property "is always static readonly". Not even close. "Always static" is not a property (which is of course can be static), but the instance of the class
StaticProperty
, which is — surprise! — is not a property. (Therefore, "readonly property" is just your fantasy.)
This is a static field needed to implement the property, a kind of a property descriptor, which is a real .NET property and, of course, does not have to be static.
You can read original documentation and understand it all:
https://msdn.microsoft.com/en-us/library/ms752914%28v=vs.110%29.aspx.
Of course, it requires using your brain's muscles. If you think it's difficult, I can offer you very simplified, extremely short explanation of the idea and the technique of using of this feature, with explanation of the rationale, complete with a shortest possible code sample. Please see just this section of my article:
The Problem of Unwanted WPF ProgressBar Animation: a Clearer Solution (3.3. By Virtue of Dependency Property).
The article itself is very insignificant, dedicated to a tiny problem, but the illustration of the dependency property feature is really clear and minimalistic. Of course, my explanation is not comprehensive. For all the detail, please see the first link.
—SA