gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 05:36:38 26 4
gpt4 key购买 nike

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

具体来说,最让我困惑的是没有实现

DependencyObject.GetValue()  

采用 System.Windows.DependencyPropertyKey 作为参数。

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

建议和/或代码将非常感激!

最佳答案

实际上很简单(通过 RegisterReadOnly ):

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 ...
}

仅当您在私有(private)/ protected /内部代码中设置值时才使用 key 。由于 protected ReadOnlyProp setter,这对您来说是透明的。

关于.net - 如何创建只读依赖属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com