DependencyProperty Класс

Определение

Представляет свойство зависимостей, зарегистрированное в системе свойств зависимостей. Свойства зависимостей обеспечивают поддержку выражений значений, привязки данных, анимации и уведомления об изменении свойств. Дополнительные сведения о том, как значения DependencyProperty служат идентификаторами для свойств зависимостей, см. в обзоре свойств зависимостей.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyProperty final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
Наследование
Object Platform::Object IInspectable DependencyProperty
Атрибуты

Примеры

В этом примере показано базовое использование, в котором DependencyProperty устанавливается как общедоступный статический элемент класса. Это делается путем вызова register и хранения возвращаемого значения в качестве члена класса. Дополнительные примеры см. в разделе "Настраиваемые свойства зависимостей".

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}

Комментарии

Основные понятия свойств зависимостей подробно рассматриваются в обзоре свойств зависимостей.

Экземпляры DependencyProperty часто ссылаются в документации в качестве идентификаторов свойств зависимостей. Идентификаторы предоставляют способ ссылаться на свойство зависимостей, зарегистрированное в определенном типе владельца DependencyObject . Когда тип владельца регистрирует свойство, тип владельца предоставляет DependencyProperty экземпляр в качестве идентификатора, который является статическим членом класса владельца.

Владелец DependencyObject предоставляет хранилище свойств для свойства зависимостей. При работе со свойством зависимостей в коде можно использовать DependencyProperty идентификаторы в качестве входных данных для вызовов системных методов свойств, таких как SetValue. Однако в большинстве случаев получение или установка свойства зависимостей проще путем получения или установки оболочки; Эта концепция описана в обзоре свойств зависимостей.

DependencyPropertyподдерживает собственное преобразование синтаксиса атрибута XAML для заполнения значений, который используется при указании значения свойстваsetter. Это преобразование использует ownerTypeName.форма propertyName для входной строки.

Note

Связанный синтаксис, который также можно использовать для указания свойства по имени и требуется определенным API данных и анимации является синтаксисом пути к свойству. Путь к свойству можно использовать для ссылки на структуру класса с свойствами и значением этого свойства. Дополнительные сведения см. в разделе «Синтаксис пути свойства».

Tip

Если вы программируют с помощью языка Microsoft .NET (C#), проекты типа TypeName в качестве System.Type. При программировании с помощью C#оператор часто используется typeof для получения ссылок на System.Type типа.

Если вы используете C++/WinRT , вы можете использовать winrt::xaml_typename<T>() вспомогательную функцию для создания TypeName объекта. Дополнительные сведения см. в шаблоне функции winrt::xaml_typename и примере кода.

среда выполнения Windows реализует функцию языка присоединенного свойства XAML с DependencyProperty идентификаторами и хранилищем свойств в DependencyObject. Дополнительные сведения см. в разделе "Общие сведения о присоединенных свойствах".

Настраиваемые свойства зависимостей

Если вы хотите, чтобы свойства пользовательских типов поддерживали выражения значений, привязку данных или анимацию, необходимо вернуть свойства с помощью свойства зависимостей, следуя этим рекомендациям:

  • Зарегистрируйте свойство зависимостей с помощью метода Register , который возвращает значение DependencyProperty. Это идентификатор свойства зависимостей. Этот объект должен предоставляться в качестве доступного статического свойства только для чтения в классе. По соглашению имя этого DependencyProperty поля идентификатора должно заканчиваться свойством.
  • Во время регистрации можно предоставить свойствам метаданные PropertyMetadata для дальнейшего определения поведения свойства.
  • Предоставьте get и set методы доступа для свойства: это оболочки свойств, которые упрощают доступ к свойству для всех вызывающих пользователей.

Ссылки XAML на имя свойства зависимостей

Некоторые свойства, которые обычно задаются в разметке XAML, используются DependencyProperty в качестве значения. Например, вы задали setter.Property в XAML. Чтобы задать такое свойство в XAML, укажите имя свойства зависимостей в качестве значения атрибута.

Для Setter.Property тип, из которого вы ссылаетесь на имя свойства зависимостей, уже распространяется на целевой типстиля , в котором существует setter . Для свойства зависимостей объекта TargetType можно указать значение Setter.Property с помощью простого имени свойства зависимости. Например, если у вас есть стиль, предназначенный для ползунка, и вы хотите стиль свойства Orientation, значение атрибута свойства может быть просто "Ориентация". Простые имена также работают до тех пор, пока свойство зависимостей поступило из класса в более глубоком наследовании целевого типа. Например, чтобы стиль свойства Видимости в стилеползунка, значение атрибута свойства "Видимость" работало. В этом случае видимость была определена UIElement, но наследует ползунок.

Можно также использовать Setter.Property для ссылки на имя присоединенного свойства. Для значения атрибута используйте форму AttachedPropertyOwner.AttachedPropertyName, как и для задания присоединенного свойства в xaml. Например, вот метод setter , который задает присоединенное свойство AutomationProperties.ItemType в стиле: <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Note

Имя свойства зависимостей не является именем идентификатора DependencyProperty статического свойства. Это строка имени, с которым зарегистрировано свойство, и имя, которое является типичным именем использования этого свойства в среда выполнения Windows программировании при использовании Microsoft IntelliSense и справочной документации. Другими словами, вы не хотите, чтобы строка, указанная для setter.Property в XAML, заканчивается свойством Property (за исключением нескольких редких случаев, когда свойство зависимостей фактически содержит суффикс "Свойство").

Использование dependencyProperty (идентификатор свойства зависимостей) в коде

Существует несколько методов служебной программы для системы свойств среда выполнения Windows, которые используют DependencyProperty значение в качестве входного параметра. К ним относятся:

Свойства

Имя Описание
UnsetValue

Указывает статическое значение, используемое системой свойств, а не null указывающее, что свойство существует, но не имеет его значения, заданное системой свойств или любым кодом приложения.

Методы

Имя Описание
GetMetadata(TypeName)

Извлекает значение метаданных свойства для свойства зависимостей, зарегистрированного в типе. Вы указываете тип, из которого вы хотите получить информацию в качестве ссылки на тип.

Register(String, TypeName, TypeName, PropertyMetadata)

Регистрирует свойство зависимостей с указанным именем свойства, типом свойства, типом владельца и метаданными свойств для свойства. Используйте этот метод при определении или инициализации производного класса DependencyObject , который будет иметь зарегистрированное свойство зависимостей.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

Регистрирует присоединенное свойство зависимостей с указанным именем свойства, типом свойства, типом владельца и метаданными свойств для свойства.

Применяется к

См. также раздел