Compartir vía


DependencyProperty.ReadOnly Propiedad

Definición

Obtiene un valor que indica si la propiedad de dependencia identificada por esta instancia de DependencyProperty es una propiedad de dependencia de sólo lectura.

public:
 property bool ReadOnly { bool get(); };
public bool ReadOnly { get; }
member this.ReadOnly : bool
Public ReadOnly Property ReadOnly As Boolean

Valor de propiedad

Boolean

Es true si la propiedad de dependencia es de sólo lectura; de lo contrario, es false.

Ejemplos

En el ejemplo siguiente se obtienen los metadatos predeterminados y las propiedades del identificador de propiedad de dependencia de varios campos de propiedad de dependencia y se usa la información para rellenar una tabla para implementar un "explorador de metadatos".

pm = dp.GetMetadata(dp.OwnerType);
MetadataClass.Text = pm.GetType().Name;
TypeofPropertyValue.Text = dp.PropertyType.Name;
DefaultPropertyValue.Text = (pm.DefaultValue!=null) ? pm.DefaultValue.ToString() : "null";
HasCoerceValue.Text = (pm.CoerceValueCallback == null) ? "No" : pm.CoerceValueCallback.Method.Name;
HasPropertyChanged.Text = (pm.PropertyChangedCallback == null) ? "No" : pm.PropertyChangedCallback.Method.Name;
ReadOnly.Text = (dp.ReadOnly) ? "Yes" : "No";
pm = dp.GetMetadata(dp.OwnerType)
MetadataClass.Text = pm.GetType().Name
TypeofPropertyValue.Text = dp.PropertyType.Name
DefaultPropertyValue.Text = If((pm.DefaultValue IsNot Nothing), pm.DefaultValue.ToString(), "null")
HasCoerceValue.Text = If((pm.CoerceValueCallback Is Nothing), "No", pm.CoerceValueCallback.Method.Name)
HasPropertyChanged.Text = If((pm.PropertyChangedCallback Is Nothing), "No", pm.PropertyChangedCallback.Method.Name)
    [ReadOnly].Text = If((dp.ReadOnly), "Yes", "No")

Comentarios

Las propiedades de dependencia de solo lectura se registran en el sistema de propiedades llamando al RegisterReadOnly método en lugar del Register método . Las propiedades adjuntas también se pueden registrar como de solo lectura; vea RegisterAttachedReadOnly.

Las propiedades de dependencia de solo lectura requieren un DependencyPropertyKey identificador en lugar de un DependencyProperty identificador para realizar operaciones de metadatos, como invalidar los metadatos o establecer el valor. Si obtuvo una colección de identificadores a través de una llamada a GetLocalValueEnumerator u otra API que expone identificadores, compruebe el ReadOnly valor antes de intentar llamar SetValue o OverrideMetadata usar ese identificador de propiedad de DependencyProperty dependencia como parámetro de entrada, para comprobar que la propiedad de dependencia que representa el identificador no es de solo lectura. Si el valor de ReadOnly está true en una propiedad de dependencia, no hay ninguna manera mediante programación de obtener una referencia al DependencyPropertyKey identificador de esa propiedad de dependencia, desde los metadatos o desde el DependencyProperty identificador; el identificador debe estar disponible como un campo estático para llamar SetValue(DependencyPropertyKey, Object) a en una propiedad de dependencia de solo lectura.

Al crear una propiedad de dependencia personalizada y registrarla como de solo lectura, solo debe definir un descriptor de acceso get para la propiedad contenedora CLR. De lo contrario, la clase tendrá un modelo de objetos confuso para el contenedor de propiedades en comparación con el acceso a la propiedad de dependencia de respaldo. Para obtener más información, consulte Propiedades de dependencia personalizadas o Propiedades de dependencia de solo lectura.

Se aplica a

Consulte también