Само свойство зависимости должно быть статическим без привязки к одному экземпляру.И это относится и к его обратным вызовам (OnAnimationVerticalOffsetChanged в вашем случае) - это должны быть статические методы (не волнуйтесь, экземпляр объекта передается через его параметр, вам просто нужно выполнить приведение типа, чтобы убедиться, что объект соответствует типу, который выработают с).
Вы должны использовать статический инициализатор для инициализации DP, метод, который вы использовали (инициализация в конструкторе) работает, но DP будет перезаписывать для каждого экземпляра.
См.этот вопрос для более глубокого объяснения.
РЕДАКТИРОВАТЬ:
Исправленный код:
public double AnimatingVerticalOffset
{
get { return (double)GetValue(AnimatingVerticalOffsetProperty); }
set { SetValue(AnimatingVerticalOffsetProperty, value); }
}
public static readonly DependencyProperty AnimatingVerticalOffsetProperty =
DependencyProperty.Register("AnimatingVerticalOffset", typeof(double), typeof(ListChooser), new UIPropertyMetadata(OnAnimationVerticalOffsetChanged));
static ListChooser()
{
}
Если обратный вызов не является статическим, вы получите ошибку компиляции (=>вы должны сделать его статическим).
РЕДАКТИРОВАТЬ:
Помните, что определение DP является статическим, а не значение свойства само по себе!DP работают точно так же, как и любое другое свойство, просто у него есть некоторые дополнительные функции: наследование значений, ставки, анимация ...