Show / Hide Table of Contents

Практическое руководство. Добавление типа владельца для свойства зависимостей

В этом примере показано, как добавить класс в качестве владельца свойства зависимостей, зарегистрированные для другого типа. Таким образом, WPF XAML чтения и система свойств способны распознать класс в качестве дополнительного владельца свойства. Добавление в качестве владельца при необходимости позволяет добавлять класс для предоставления метаданных определенного типа.

В следующем примере StateProperty свойство регистрируется путем MyStateControl класса. Класс UnrelatedStateControl добавляет себя в качестве владельца StateProperty с помощью AddOwner метода, в частности с помощью подпись, которая обеспечивает более новые метаданные для свойства зависимостей, так как оно существует в типе добавление. Обратите внимание, что необходимо предоставить CLR методы доступа для свойства, как показано в примере реализация свойства зависимостей пример, а также повторно предоставить идентификатор свойства зависимостей для класса, добавляемого в как владелец.

Без оболочки свойства зависимостей по-прежнему будет работать с точки зрения программный доступ с помощью GetValue или SetValue. Но чаще всего требуется параллельное поведение системы свойств CLR оболочек свойств. Оболочки упрощают установку свойства зависимости и обеспечить возможность задать свойства, как XAML атрибуты.

Чтобы узнать, как переопределить метаданные по умолчанию, см. в разделе переопределение метаданных для свойства зависимостей.

Пример

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));
}
public class UnrelatedStateControl : Control
{
  public UnrelatedStateControl() { }
  public static readonly DependencyProperty StateProperty = MyStateControl.StateProperty.AddOwner(typeof(UnrelatedStateControl), new PropertyMetadata(true));
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); }
  }
}

См. также

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