DependencyProperty.ReadOnly 属性

定义

获取一个值,该值指示由此 DependencyProperty 实例标识的依赖项对象是否为只读依赖项对象。

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

属性值

Boolean

如果该依赖项对象为只读属性,则为 true;否则为 false

示例

以下示例从各种依赖属性字段中获取默认元数据和依赖属性标识符属性,并使用信息填充表来实现“元数据浏览器”。

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 方法在属性系统中注册。 附加属性也可以注册为只读属性;请参阅 RegisterAttachedReadOnly

只读依赖项属性需要标识符 DependencyPropertyKey 而不是 DependencyProperty 标识符来执行元数据操作,例如重写元数据或设置值。 如果通过调用GetLocalValueEnumerator或其他公开标识符的 DependencyProperty API 获取标识符集合,请在尝试调用SetValue或使用OverrideMetadata该依赖属性标识符作为输入参数之前检查ReadOnly该值,以验证标识符所表示的依赖属性是否不是只读的。 如果值为ReadOnlytrue依赖属性,则无法以编程方式从元数据或DependencyProperty标识符获取对DependencyPropertyKey该依赖属性标识符的引用;标识符必须可用作静态字段才能针对只读依赖属性进行调用SetValue(DependencyPropertyKey, Object)

创建自定义依赖项属性并将其注册为只读时,应仅定义 CLR 包装器属性的 get 访问器。 否则,与对支持依赖属性的访问相比,类将具有一个令人困惑的属性包装器对象模型。 有关详细信息,请参阅 自定义依赖项属性只读依赖项属性

适用于

另请参阅