Подпишись на наш Twitter

Быть в курсе появления новых статей!

Для реализации dependency property, класс должен создать одиночный статический экземпляра класса DependencyProperty. Этот экземпляр статический потому, что DependencyProperty только описывает dependency property, а не является местом для хранения фактического значения свойства.

Начните с определения статического поля для нового свойства.

public static readonly DependencyProperty AgeProperty;

Вы обычно регистрируете свойство в статическом конструкторе, использую статический метод DependencyProperty.Register.

static Person()
{
    PropertyMetadata ageMetadata =
        new PropertyMetadata(
            18,     // Default value
            new PropertyChangedCallback(OnAgeChanged),
            new CoerceValueCallback(OnAgeCoerceValue));
 
    // Register the property
    AgeProperty =
        DependencyProperty.Register(
            "Age",                 // Property's name
            typeof(int),           // Property's type
            typeof(Person),        // Defining class' type
            ageMetadata,           // Defines default value & callbacks  (optional)
            new ValidateValueCallback(OnAgeValidateValue));   // validation (optional)
}

Вначале три обязательных параметра передаются для регистрации.

Но вы также можете указать:

  • Значение свойства по умолчанию
  • Метод, который должен быть вызван, когда значение свойства изменится
  • Coercion и validation колбэки

Оригинал: #117 – Registering a Dependency Property




Дата публикации: 06.11.2010 13:02

Ярлыки: Dependency Property, WPF