.net 如何创建只读依赖项属性?

.net 如何创建只读依赖项属性?,.net,wpf,dependency-properties,.net,Wpf,Dependency Properties,如何创建只读依赖性属性?这样做的最佳实践是什么 具体地说,最让我难堪的是没有实现 DependencyObject.GetValue() 它将System.Windows.dependencPropertyKey作为参数 System.Windows.dependencProperty.RegisterReadOnly返回DependencyPropertyKey对象,而不是dependencProperty。那么,如果不能调用GetValue,您应该如何访问只读依赖属性呢?或者您应该以某

如何创建只读依赖性属性?这样做的最佳实践是什么

具体地说,最让我难堪的是没有实现

DependencyObject.GetValue()  
它将
System.Windows.dependencPropertyKey
作为参数

System.Windows.dependencProperty.RegisterReadOnly
返回D
ependencyPropertyKey
对象,而不是
dependencProperty
。那么,如果不能调用GetValue,您应该如何访问只读依赖属性呢?或者您应该以某种方式将
dependencPropertyKey
转换为普通的
dependencProperty
对象吗

建议和/或代码将不胜感激

其实很简单(通过):


仅当在私有/受保护/内部代码中设置值时,才使用密钥。由于受保护的
ReadOnlyProp
setter,这对您来说是透明的。

您可以在我们使用此只读依赖项属性的地方提供一个实时示例或要求吗?@RahulSonone只要您不想从控件类外设置该属性,就可以随时使用它。如果不将其设置为只读,可以在XAML等中进行设置。任何控件的ActualWidth/ActualHeight都是一个很好的示例。您可能希望将
“ReadOnlyProp”
更新为
nameof(ReadOnlyProp)
,因为很多人可能会复制/粘贴此控件,他们也可能会使用当前改进的语法。没问题,谢谢你的建议。老实说,这是一个旧的答案,我自己并没有“维护”答案的更新版本。而且,这些天我更喜欢javascript而不是C。
public class OwnerClass : DependencyObject // or DependencyObject inheritor
{
    private static readonly DependencyPropertyKey ReadOnlyPropPropertyKey
        = DependencyProperty.RegisterReadOnly(
            nameof(ReadOnlyProp),
            typeof(int), typeof(OwnerClass),
            new FrameworkPropertyMetadata(default(int),
                FrameworkPropertyMetadataOptions.None));

    public static readonly DependencyProperty ReadOnlyPropProperty
        = ReadOnlyPropPropertyKey.DependencyProperty;

    public int ReadOnlyProp
    {
        get { return (int)GetValue(ReadOnlyPropProperty); }
        protected set { SetValue(ReadOnlyPropPropertyKey, value); }
    }

    //your other code here ...
}