我是WPF开发人员。我很想知道GetValue
的{{1}}和ReadLocalValue
方法有什么区别?我知道DependencyObject
可用于实现依赖属性,如下所示:
GetValue
在一个简单的解释中,public static DependencyProperty FoobarProperty =
DependencyProperty.Register(nameof(Foobar),
typeof(int),
typeof(DeclaringClass),
new PropertyMetadata(0, OnFoobarChanged));
public int Foobar
{
get { return (int)GetValue(FoobarProperty); }
set { SetValue(FoobarProperty, value); }
}
private static void OnFoobarChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
var newValue = (int)e.NewValue;
// do something with the new value...
}
的目的是什么?我可以从MSDN sample获得的是,它可能会返回ReadLocalValue
,这并不能说明多少。
答案 0 :(得分:2)
这似乎是关于它的。在大多数情况下,是的,它已经习惯了
返回本地值,如果没有设置本地值,则返回sentinel值
UnsetValue
。
根据MSDN Reference:
对于大多数典型的" get&#34>你应该使用GetValue。依赖属性的操作。对于未在本地设置值的各种情况,ReadLocalValue不返回有效值。
由样式,主题,模板,元数据的默认值或属性值继承设置的值不被视为本地值。但是,绑定和其他表达式在被评估后被认为是本地值。
如果未设置本地值,则此方法返回UnsetValue。
如果返回的值不是UnsetValue,则可以查询所请求的依赖项属性的元数据,以确定是否存在可以将返回值转换为更具体的类型。