DependencyProperty Precedence(3)

Let’s focused on the coercion of DP value.

In the precedence list, the coercion source is the highest.

In order to verify it, I have created a class called CoercionButton.

   1: public class CoercionButton : Button
   2: {
   3:     static CoercionButton()
   4:     {
   5:         WidthProperty.OverrideMetadata(typeof(CoercionButton), new FrameworkPropertyMetadata(null, OnCoerceValueCallback));
   6:     }
   8:     // public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
   9:     public static object OnCoerceValueCallback(DependencyObject d, object baseValue)
  10:     {
  11:         return 150.0;
  12:     }
  13: }

It overrides the Metadata of WidthProperty and adds CoerceValueCallback. And in the callback, returns a constant value 150.0.

We change the “Target Button” from normal Button type to CoercionButton type.


But the event handler for other 4 buttons remain some.

No matter which button you clicks, the Width of “Target Button” is always 150.

And the animation doesn’t work.

Skip to main content