Show / Hide Table of Contents

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

В этом примере показано, как создавать резервные CLR свойство с 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, см. в разделе Общие сведения о свойствах зависимости.

См. также

  • Общие сведения о свойствах зависимости
  • Практические руководства
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX