DependencyProperty Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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(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
- Herencia
- Atributos
Ejemplos
En este ejemplo se muestra un uso básico en DependencyProperty
el que se establece como miembro estático público de una clase. Para ello, llame a Register y almacene 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); }
}
}
Aquí no se muestra un ejemplo de extensiones de componentes de Visual C++ (C++/CX), ya que debe factorizarse completamente de forma diferente a los ejemplos de Microsoft .NET e implica varios archivos de código diferentes. Vea 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 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 registrada en un tipo de propietario DependencyObject determinado. Cuando el tipo de propietario registra la propiedad, el tipo de propietario expone la DependencyProperty
instancia 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 obteniendo o estableciendo 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 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 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), typeName escribe proyectos como System.Type. Al programar con C#, es habitual usar el typeof
operador 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 DependencyProperty
identificadores 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 instrucciones:
- Registre una propiedad de dependencia mediante el método Register , que devuelve un
DependencyProperty
. Este es el identificador de la 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 esteDependencyProperty
campo de identificador 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
get
yset
descriptores de acceso 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 su valor. Por ejemplo, estableces Setter.Property en XAML. Para establecer dicha propiedad en XAML, especifique el nombre de la propiedad de dependencia como el valor del 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 y cuando la propiedad de dependencia provena de una clase en la herencia más profunda del tipo de destino. Por ejemplo, para aplicar 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 adjunto. Para el valor del atributo, use el formulario AttachedPropertyOwner.AttachedPropertyName, al igual que usaría para establecer esa propiedad adjunta como un 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 DependencyProperty
propiedad estática. 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 contenga 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 DependencyProperty
valor como parámetro de entrada. Entre ellas se incluyen las siguientes:
- DependencyObject.ClearValue
- DependencyObject.GetAnimationBaseValue
- DependencyObject.GetValue
- DependencyObject.ReadLocalValue
- DependencyObject.SetValue
- DependencyPropertyChangedEventArgs.Property
- Constructor Setter(DependencyProperty,Object)
Propiedades
UnsetValue |
Especifica un valor estático que usa el sistema de propiedades en lugar |
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 propietario y los metadatos de propiedad especificados para la propiedad. Use este método al definir o inicializar una clase derivada dependencyObject que poseerá 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. |