DependencyProperty.ReadOnly DependencyProperty.ReadOnly DependencyProperty.ReadOnly DependencyProperty.ReadOnly Property

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.Gets a value that indicates whether the dependency property identified by this DependencyProperty instance is a read-only dependency property.

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

Valor de propiedad

Es true si la propiedad de dependencia es de sólo lectura; de lo contrario, es false.true if the dependency property is read-only; otherwise, false.

Ejemplos

En el ejemplo siguiente obtiene los metadatos predeterminados y las propiedades de identificador de propiedad de dependencia de distintos campos de propiedades de dependencia y usa la información para rellenar una tabla para implementar un "Explorador de metadatos".The following example obtains the default metadata and the dependency property identifier properties from various dependency property fields, and uses the information to populate a table to implement a "metadata browser".

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 mediante una llamada a la RegisterReadOnly método en contraposición a la Register método.Read-only dependency properties are registered within the property system by calling the RegisterReadOnly method as opposed to the Register method. También se pueden registrar propiedades adjuntas como de solo lectura. consulte RegisterAttachedReadOnly.Attached properties can also be registered as read-only; see 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.Read-only dependency properties require a DependencyPropertyKey identifier rather than a DependencyProperty identifier to perform metadata operations such as overriding the metadata or setting the value. Si ha adquirido una colección de DependencyProperty identificadores mediante una llamada a GetLocalValueEnumerator u otro APIAPI que expone los identificadores, compruebe el ReadOnly valor antes de intentar llamar a SetValue o OverrideMetadata está utilizando identificador de propiedad de dependencia como un parámetro de entrada para comprobar que la propiedad de dependencia que representa el identificador no es de solo lectura.If you obtained a collection of DependencyProperty identifiers through a call to GetLocalValueEnumerator or another APIAPI that exposes identifiers, check the ReadOnly value before attempting to call SetValue or OverrideMetadata using that dependency property identifier as an input parameter, to verify that the dependency property that the identifier represents is not read-only. Si el valor de ReadOnly es true en una propiedad de dependencia, no hay ninguna manera programática para obtener una referencia a la DependencyPropertyKey identificador de esa propiedad de dependencia de los metadatos o desde el DependencyProperty identificador; el identificador debe estar disponible como un campo estático para poder llamar a SetValue(DependencyPropertyKey, Object) con respecto a una propiedad de dependencia de solo lectura.If the value of ReadOnly is true on a dependency property, there is no programmatic way to obtain a reference to the DependencyPropertyKey identifier of that dependency property, from the metadata or from the DependencyProperty identifier; the identifier must be available as a static field in order to call SetValue(DependencyPropertyKey, Object) against a read-only dependency property.

Al crear una propiedad de dependencia personalizada y registrarlo como de solo lectura, debe definir solo un descriptor de acceso get de la CLRCLR propiedad de contenedor.When you create a custom dependency property, and register it as read-only, you should define only a get accessor for the CLRCLR wrapper property. En caso contrario, la clase tendrá un modelo de objetos confuso para el contenedor de propiedad en comparación con el acceso a la propiedad de dependencia de respaldo.Otherwise, your class will have a confusing object model for the property wrapper as compared to the access to the backing dependency property. Para obtener más información, consulte propiedades de dependencia personalizadas o las propiedades de dependencia de sólo lectura.For details, see Custom Dependency Properties or Read-Only Dependency Properties.

Se aplica a

Consulte también: