WPF扩展器覆盖元数据IsExpandedProperty

问题描述:

我试图覆盖扩展器的IsExpanded属性的默认值。WPF扩展器覆盖元数据IsExpandedProperty

到目前为止我的代码,它不工作:

static MyExpander() 
{ 
    IsExpandedProperty.OverrideMetadata(typeof(MyExpander), new FrameworkPropertyMetadata(true)); 
} 

尽管如此,属性仍设置为false(这我检查一样,可以肯定的):

public MyExpander() 
{ 
    System.Console.WriteLine($"IsExpanded default value is: {IsExpandedProperty.DefaultMetadata.DefaultValue}"); 
} 

编辑:没关系,我只是愚蠢的,我确实在风格设置属性为false ...现在一切正常,谢谢你的答案无论如何:)谢谢你的答案:)

检查实际值而不是DefaultValueDefaultMetadata

public MyExpander() 
{ 
    Debug.WriteLine($"IsExpanded value: {IsExpanded}"); 
} 

从MSDN上的DependencyProperty.DefaultMetadata Property页面上的备注部分:

默认元数据是可用的属性的元数据,以 特定对象或由明确的寄存器或 OverrideMetadata调用提供的替代元数据的派生类型的对象。

顾名思义,DefaultMetadata不会返回重写的元数据。