Поделиться через


Практическое руководство. Реализация свойства зависимостей

Обновлен: Ноябрь 2007

В этом примере показано, как обеспечить поддержку свойства среда CLR (common language runtime) с использованием поля DependencyProperty, определяя тем самым свойство зависимостей. Если вы определяете собственные свойства и хотите, чтобы они поддерживали множество аспектов функциональности Windows Presentation Foundation (WPF), включая стили, привязку данных, наследование, анимацию и значения по умолчанию, следует реализовать их как свойство зависимостей.

Пример

В следующем примере сначала регистрируется свойство зависимостей путем вызова метода Register. Поле идентификатора, используемое для хранения имени и характеристик свойства зависимостей, должно иметь имя Name, которое выбирается для свойства зависимостей в составе вызова Register с добавлением строкового литерала Property. Например, если регистрируется свойство зависимостей с именем Name для поля Location, то поле идентификатора, определяемое для свойства зависимостей, должно называться LocationProperty.

В этом примере для свойства зависимостей и его метода доступа CLR используется имя State; поле идентификатора называется StateProperty; тип свойства — Boolean; тип, регистрирующий свойство зависимостей — MyStateControl.

Если не следовать этому шаблону именования, конструкторы могут неправильно обработать свойство, и определенные аспекты приложения стиля системы свойств могут работать не так, как ожидалось.

Для свойства зависимостей можно также указать используемые по умолчанию метаданные. В этом примере в качестве значения по умолчанию для свойства зависимостей State регистрируется значение false.

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}

Полный пример см. в разделе Пример пользовательских классов со свойствами зависимостей.

Дополнительные сведения о том, как и зачем реализовать свойство зависимостей в противоположность поддержке свойства CLR с использованием закрытого поля, см. в разделе Общие сведения о свойствах зависимости.

См. также

Основные понятия

Общие сведения о свойствах зависимости

Другие ресурсы

Разделы пошагового руководства по свойствам

Примеры использования свойств