DependencyProperty.ReadOnly Свойство

Определение

Возвращает значение, указывающее, является ли свойство зависимостей, идентифицируемое данным экземпляром DependencyProperty, доступным только для чтения.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

Значение свойства

true, если свойство зависимостей доступно только для чтения; в противном случае — false.true if the dependency property is read-only; otherwise, false.

Примеры

Следующий пример получает метаданные по умолчанию и свойства идентификатора свойства зависимости из различных полей свойств зависимости и использует эти сведения для заполнения таблицы для реализации "браузера метаданных".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")

Комментарии

Свойства зависимостей только для чтения регистрируются в системе свойств путем вызова метода RegisterReadOnly, а не метода Register.Read-only dependency properties are registered within the property system by calling the RegisterReadOnly method as opposed to the Register method. Вложенные свойства также могут быть зарегистрированы как доступные только для чтения. см. RegisterAttachedReadOnly.Attached properties can also be registered as read-only; see RegisterAttachedReadOnly.

Для свойств зависимостей только для чтения требуется идентификатор DependencyPropertyKey, а не DependencyProperty идентификатор для выполнения операций с метаданными, таких как переопределение метаданных или установка значения.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. Если вы получили коллекцию идентификаторов DependencyProperty с помощью вызова GetLocalValueEnumerator или другого API, предоставляющего идентификаторы, проверьте значение ReadOnly, прежде чем пытаться вызвать SetValue или OverrideMetadata, используя этот идентификатор свойства зависимостей в качестве входного параметра. , чтобы убедиться, что свойство зависимостей, представляемое идентификатором, не доступно только для чтения.If you obtained a collection of DependencyProperty identifiers through a call to GetLocalValueEnumerator or another API 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. Если значение ReadOnly true в свойстве зависимости, нет программного способа получить ссылку на DependencyPropertyKey идентификатор этого свойства зависимостей из метаданных или идентификатора DependencyProperty. Идентификатор должен быть доступен в виде статического поля для вызова SetValue(DependencyPropertyKey, Object) для свойства зависимостей, доступного только для чтения.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.

При создании настраиваемого свойства зависимости и его регистрации в качестве только для чтения необходимо определить только метод доступа get для свойства оболочки CLRCLR.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. В противном случае класс будет иметь непонятную объектную модель для оболочки свойств по сравнению с доступом к свойству обратной зависимости.Otherwise, your class will have a confusing object model for the property wrapper as compared to the access to the backing dependency property. Дополнительные сведения см. в разделе пользовательские свойства зависимости или свойства зависимостей только для чтения.For details, see Custom Dependency Properties or Read-Only Dependency Properties.

Применяется к

Дополнительно