DependencyProperty.RegisterReadOnly Método

Definición

Registra una propiedad de dependencia como una propiedad de dependencia de solo lectura.

Sobrecargas

RegisterReadOnly(String, Type, Type, PropertyMetadata)

Registra una propiedad de dependencia de solo lectura, con el tipo de propiedad, el tipo de propietario y los metadatos de propiedad especificados.

RegisterReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

Registra una propiedad de dependencia de solo lectura, con el tipo de propiedad, el tipo de propietario, los metadatos de propiedad y una devolución de llamada de validación especificados.

RegisterReadOnly(String, Type, Type, PropertyMetadata)

Registra una propiedad de dependencia de solo lectura, con el tipo de propiedad, el tipo de propietario y los metadatos de propiedad especificados.

public:
 static System::Windows::DependencyPropertyKey ^ RegisterReadOnly(System::String ^ name, Type ^ propertyType, Type ^ ownerType, System::Windows::PropertyMetadata ^ typeMetadata);
public static System.Windows.DependencyPropertyKey RegisterReadOnly (string name, Type propertyType, Type ownerType, System.Windows.PropertyMetadata typeMetadata);
static member RegisterReadOnly : string * Type * Type * System.Windows.PropertyMetadata -> System.Windows.DependencyPropertyKey
Public Shared Function RegisterReadOnly (name As String, propertyType As Type, ownerType As Type, typeMetadata As PropertyMetadata) As DependencyPropertyKey

Parámetros

name
String

Nombre de la propiedad de dependencia que se va a registrar.

propertyType
Type

Tipo de la propiedad.

ownerType
Type

Tipo de propietario que registra la propiedad de dependencia.

typeMetadata
PropertyMetadata

Metadatos de propiedad de la propiedad de dependencia.

Devoluciones

DependencyPropertyKey

Clave de propiedad de dependencia que debe usarse para establecer el valor de un campo estático de solo lectura en la clase, que se usa para hacer referencia a la propiedad de dependencia.

Ejemplos

En el ejemplo siguiente se registra una AquariumSize propiedad de dependencia como de solo lectura. En el ejemplo se define AquariumSizeKey como una clave interna (para que otras clases del ensamblado puedan invalidar los metadatos) y expone el identificador de propiedad de dependencia basado en esa clave como AquariumSizeProperty. Además, se crea un contenedor para AquariumSize, con solo un descriptor de acceso get.

internal static readonly DependencyPropertyKey AquariumSizeKey = DependencyProperty.RegisterReadOnly(
  "AquariumSize",
  typeof(double),
  typeof(Aquarium),
  new PropertyMetadata(double.NaN)
);
public static readonly DependencyProperty AquariumSizeProperty =
  AquariumSizeKey.DependencyProperty;
public double AquariumSize
{
  get { return (double)GetValue(AquariumSizeProperty); }
}
Friend Shared ReadOnly AquariumSizeKey As DependencyPropertyKey = DependencyProperty.RegisterReadOnly("AquariumSize", GetType(Double), GetType(Aquarium), New PropertyMetadata(Double.NaN))
Public Shared ReadOnly AquariumSizeProperty As DependencyProperty = AquariumSizeKey.DependencyProperty
Public ReadOnly Property AquariumSize() As Double
    Get
        Return CDbl(GetValue(AquariumSizeProperty))
    End Get
End Property

Comentarios

Este método devuelve el tipo DependencyPropertyKey, mientras que RegisterAttached devuelve el tipo DependencyProperty. Normalmente, las claves que representan propiedades de solo lectura no se hacen públicas, ya que las claves se pueden usar para establecer el valor de la propiedad de dependencia llamando a SetValue(DependencyPropertyKey, Object). El diseño de la clase afectará a los requisitos, pero generalmente se recomienda limitar el acceso y la visibilidad de cualquiera DependencyPropertyKey a solo las partes del código necesarias para establecer esa propiedad de dependencia como parte de la lógica de la clase o de la aplicación. También se recomienda exponer un identificador de propiedad de dependencia para la propiedad de dependencia de solo lectura, exponiendo el valor de DependencyPropertyKey.DependencyProperty como un public static readonly campo en la clase.

Las propiedades de dependencia de solo lectura son un escenario bastante típico tanto en la API existente como en escenarios de personalización, ya que otras características de WPF pueden requerir una propiedad de dependencia incluso si esa propiedad no está pensada para ser configurable por los autores de llamadas. Puede usar el valor de una propiedad de dependencia de solo lectura como base para otras operaciones del sistema de propiedades que toman una propiedad de dependencia, como basar un Trigger en la propiedad de dependencia en un estilo.

Para obtener más información sobre el registro de propiedades de dependencia, vea DependencyProperty.

Se aplica a

RegisterReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

Registra una propiedad de dependencia de solo lectura, con el tipo de propiedad, el tipo de propietario, los metadatos de propiedad y una devolución de llamada de validación especificados.

public:
 static System::Windows::DependencyPropertyKey ^ RegisterReadOnly(System::String ^ name, Type ^ propertyType, Type ^ ownerType, System::Windows::PropertyMetadata ^ typeMetadata, System::Windows::ValidateValueCallback ^ validateValueCallback);
public static System.Windows.DependencyPropertyKey RegisterReadOnly (string name, Type propertyType, Type ownerType, System.Windows.PropertyMetadata typeMetadata, System.Windows.ValidateValueCallback validateValueCallback);
static member RegisterReadOnly : string * Type * Type * System.Windows.PropertyMetadata * System.Windows.ValidateValueCallback -> System.Windows.DependencyPropertyKey
Public Shared Function RegisterReadOnly (name As String, propertyType As Type, ownerType As Type, typeMetadata As PropertyMetadata, validateValueCallback As ValidateValueCallback) As DependencyPropertyKey

Parámetros

name
String

Nombre de la propiedad de dependencia que se va a registrar.

propertyType
Type

Tipo de la propiedad.

ownerType
Type

Tipo de propietario que registra la propiedad de dependencia.

typeMetadata
PropertyMetadata

Metadatos de propiedad de la propiedad de dependencia.

validateValueCallback
ValidateValueCallback

Referencia a una devolución de llamada creada por el usuario que debe realizar cualquier validación personalizada del valor de la propiedad de dependencia además de la validación habitual de tipo.

Devoluciones

DependencyPropertyKey

Clave de propiedad de dependencia que debe usarse para establecer el valor de un campo estático de solo lectura en la clase, que se usa para hacer referencia a la propiedad de dependencia más tarde.

Comentarios

Este método devuelve el tipo DependencyPropertyKey, mientras que RegisterAttached devuelve el tipo DependencyProperty. Normalmente, las claves que representan propiedades de solo lectura no se hacen públicas, ya que las claves se pueden usar para establecer el valor de la propiedad de dependencia llamando a SetValue(DependencyPropertyKey, Object). El diseño de la clase afectará a los requisitos, pero generalmente se recomienda limitar el acceso y la visibilidad de cualquiera DependencyPropertyKey a solo las partes del código necesarias para establecer esa propiedad de dependencia como parte de la lógica de la clase o de la aplicación. También se recomienda exponer un identificador de propiedad de dependencia para la propiedad de dependencia de solo lectura, exponiendo el valor de DependencyPropertyKey.DependencyProperty como un public static readonly campo en la clase.

Las propiedades de dependencia de solo lectura son un escenario bastante típico. Puede usar el valor de una propiedad de dependencia de solo lectura como base para otras operaciones del sistema de propiedades que toman una propiedad de dependencia, como basar un Trigger en la propiedad de dependencia en un estilo.

Para obtener más información sobre el registro de propiedades de dependencia, vea DependencyProperty.

La validación en una propiedad de dependencia de solo lectura puede ser menos importante. El nivel de acceso no público que especifique para la clave reduce la probabilidad de una entrada arbitraria no válida.

Se aplica a