XAML binding doesn't seem to set if the property is initialized in the constructor
See this answer: Binding Setting Property but UI not updating. Can I debug within referenced project/control?
Use SetCurrentValue() in constructor.
I've crossposted the problem at MSDN forums, someone there has suggested to create an issue at Microsft Connect... Long story short: the key mechanism I didn't clearly understand was DP's value precedence. It is perfectly described here (local value has higher priority than templated parent's value).
Second, not really obvious moment is that the value is considered as templated parent's if it was set by any template (not even element's own template).
HTH.