如何创建只读依赖属性?这样做的最佳做法是什么?
具体来说,最糟糕的是,没有实现的事实
DependencyObject.GetValue()
它将System.Windows.DependencyPropertyKey作为参数。
System.Windows.DependencyProperty.RegisterReadOnly返回一个DependencyPropertyKey对象,而不是DependencyProperty。所以如果你不能调用GetValue,你应该如何访问你的只读依赖属性?或者你应该以某种方式将DependencyPropertyKey转换为一个普通的旧的DependencyProperty对象?
建议和/或代码将是非常感谢!
这很容易,实际上(通过
RegisterReadOnly):
原文链接:https://www.f2er.com/javaschema/282755.htmlpublic class OwnerClass : DependencyObject // or DependencyObject inheritor { private static readonly DependencyPropertyKey ReadOnlyPropPropertyKey = DependencyProperty.RegisterReadOnly("ReadOnlyProp",typeof(int),typeof(OwnerClass),new FrameworkPropertyMetadata((int)0,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 ... }
仅当在private / protected / internal代码中设置值时,才使用该键。由于受保护的ReadOnlyProp设置器,这对您是透明的。