Compartir a través de


DependencyProperty Clase

Definición

Representa una propiedad de dependencia registrada con el sistema de propiedades de dependencia. Las propiedades de dependencia proporcionan compatibilidad con expresiones de valor, enlace de datos, animación y notificación de cambio de propiedad. Para obtener más información sobre cómo los valores de DependencyProperty sirven como identificadores para las propiedades de dependencia, consulte Información general sobre las propiedades de dependencia.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 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(Windows.Foundation.UniversalApiContract), 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
See Remarks
Herencia
Object Platform::Object IInspectable DependencyProperty
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

En este ejemplo se muestra un uso básico en el que dependencyProperty se establece como un miembro estático público de una clase. Esto se hace llamando a Register y almacenando el valor devuelto como miembro de la clase . Para obtener más ejemplos, consulte Propiedades de dependencia personalizadas.

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); }
    }
}
Public Class Fish
    Inherits Control

    Public Shared ReadOnly SpeciesProperty As DependencyProperty = _
    DependencyProperty.Register(
    "Species", _
    GetType(String), _
    GetType(Fish), _
    Nothing)
    Public Property Species As String
        Get
            Species = CType(GetValue(SpeciesProperty), String)
        End Get
        Set(value As String)
            SetValue(SpeciesProperty, value)
        End Set
    End Property
End Class

Aquí no se muestra un ejemplo de extensiones de componentes de Visual C++ (C++/CX), ya que debe factorizarse de forma completamente diferente a los ejemplos de Microsoft .NET e implica varios archivos de código diferentes. Consulte ejemplos en Propiedades de dependencia personalizadas.

Comentarios

Los conceptos de las propiedades de dependencia se tratan en detalle en el tema Información general sobre las propiedades de dependencia.

A menudo se hace referencia a las instancias de DependencyProperty en la documentación como identificadores de propiedad de dependencia. Los identificadores proporcionan una manera de hacer referencia a una propiedad de dependencia que se registró en un tipo de propietario DependencyObject determinado. Cuando el tipo de propietario registra la propiedad, el tipo de propietario expone la instancia dependencyProperty como identificador, que es un miembro estático de la clase owner.

DependencyObject propietario proporciona el almacén de propiedades para la propiedad de dependencia. Al trabajar con una propiedad de dependencia en el código, puede usar identificadores DependencyProperty como entrada para las llamadas a métodos del sistema de propiedades como SetValue. Sin embargo, en la mayoría de los casos, obtener o establecer una propiedad de dependencia es más sencillo al obtener o establecer el contenedor; este concepto se explica en Información general sobre las propiedades de dependencia.

DependencyProperty admite una conversión nativa para la sintaxis de atributo XAML para rellenar los valores, que se usa cuando un establecedor especifica su valor property . Esta conversión usa un formulario ownerTypeName**.**propertyName para la cadena de entrada.

Nota:

Una sintaxis relacionada que también se puede usar para especificar una propiedad por nombre y que es necesaria para determinados datos y la API de animación es la sintaxis de ruta de acceso de propiedad. Se puede usar una ruta de acceso de propiedad para hacer referencia a la estructura de una clase que tiene propiedades y el valor de esa propiedad. Para más información, consulta Sintaxis de property-path.

Sugerencia

Si va a programar con un lenguaje Microsoft .NET (C# o Microsoft Visual Basic), el tipo TypeName se proyecta como System.Type. Al programar con C#, es habitual usar el operador typeof para obtener referencias al System.Type de un tipo. En Microsoft Visual Basic, use GetType. Si usa extensiones de componentes de Visual C++ (C++/CX),donde deberá crear una estructura auxiliar TypeName , puede usar la extensión de componente typeid.

El Windows Runtime implementa la característica de lenguaje de propiedades adjuntas XAML con identificadores DependencyProperty y almacenamiento de propiedades en dependencyObject. Para obtener más información, consulta Introducción a las propiedades adjuntas.

Propiedades de dependencia personalizadas

Si desea que las propiedades de los tipos personalizados admitan expresiones de valor, enlace de datos o animación, debe hacer una copia de seguridad de las propiedades con una propiedad de dependencia siguiendo estas directrices:

  • Registre una propiedad de dependencia mediante el método Register , que devuelve dependencyProperty. Este es el identificador de propiedad de dependencia. Debe exponer este objeto como una propiedad de solo lectura estática accesible en la clase . Por convención, el nombre de este campo de identificador DependencyProperty debe terminar con "Property".
  • Durante el registro, puede proporcionar PropertyMetadata para que la propiedad defina aún más los comportamientos de la propiedad.
  • Proporcione descriptores de acceso get y set para la propiedad: estos son los contenedores de propiedades y simplificarán el acceso a la propiedad para todos los autores de llamadas.

Referencias XAML a un nombre de propiedad de dependencia

Algunas propiedades que normalmente se establecen en el marcado XAML usan DependencyProperty como valor. Por ejemplo, estableces Setter.Property en XAML. Para establecer esta propiedad en XAML, especifique el nombre de la propiedad de dependencia como valor de atributo.

Para Setter.Property , el tipo desde el que se hace referencia a un nombre de propiedad de dependencia ya está en el ámbito del TargetType del estilo donde existe el establecedor . Para una propiedad de dependencia en el objeto TargetType , puede especificar un valor Setter.Property con el nombre simple de la propiedad de dependencia. Por ejemplo, si tiene un estilo que tiene como destino un Control deslizante y desea aplicar estilo a la propiedad Orientation , el valor del atributo Property puede ser simplemente "Orientation". Los nombres simples también funcionan siempre que la propiedad de dependencia provena de una clase en la herencia más profunda del tipo de destino. Por ejemplo, para aplicar un estilo a la propiedad Visibilityen style para un control deslizante, funcionará un valor de atributo Property de "Visibility". En ese caso, UIElement definió Visibility, pero hereda a Slider.

También puede usar Setter.Property para hacer referencia a un nombre de propiedad adjunta. Para el valor del atributo, use el formulario AttachedPropertyOwner.AttachedPropertyName, al igual que usaría para establecer esa propiedad adjunta como atributo en XAML. Por ejemplo, este es un establecedor que establece la propiedad adjunta AutomationProperties.ItemType en un estilo: <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Nota:

El nombre de una propiedad de dependencia no es el nombre del identificador de propiedad estática DependencyProperty. Es la cadena de nombre con la que está registrada la propiedad y el nombre que es el nombre de uso típico de esa propiedad en Windows Runtime programación cuando se expone por Microsoft IntelliSense y la documentación de referencia. En otras palabras, no quieres que la cadena que especifiques para Setter.Property en XAML termine con "Property" (excepto en algunos casos raros en los que la propiedad de dependencia realmente contiene el sufijo "Property").

Uso de dependencyProperty (identificador de propiedad de dependencia) en el código

Hay varios métodos que son métodos de utilidad para el sistema de propiedades Windows Runtime que usan un valor DependencyProperty como parámetro de entrada. Se incluyen los siguientes:

Propiedades

UnsetValue

Especifica un valor estático que usa el sistema de propiedades en lugar de null para indicar que la propiedad existe, pero no tiene su valor establecido por el sistema de propiedades o por ningún código de aplicación.

Métodos

GetMetadata(TypeName)

Recupera el valor de metadatos de propiedad de la propiedad de dependencia como registrado en un tipo. Especifique el tipo del que desea obtener información como referencia de tipo.

Register(String, TypeName, TypeName, PropertyMetadata)

Registra una propiedad de dependencia con el nombre de propiedad, el tipo de propiedad, el tipo de propiedad y los metadatos de propiedad especificados para la propiedad. Utilice este método al definir o inicializar una clase derivada dependencyObject que será propietaria de la propiedad de dependencia registrada.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

Registra una propiedad de dependencia adjunta con el nombre de propiedad, el tipo de propiedad, el tipo de propiedad y los metadatos de propiedad especificados para la propiedad.

Se aplica a

Consulte también