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 ...现在一切正常,谢谢你的答案无论如何:)谢谢你的答案:)
答
检查实际值而不是DefaultValue
从DefaultMetadata
:
public MyExpander()
{
Debug.WriteLine($"IsExpanded value: {IsExpanded}");
}
从MSDN上的DependencyProperty.DefaultMetadata Property页面上的备注部分:
默认元数据是可用的属性的元数据,以 特定对象或由明确的寄存器或 OverrideMetadata调用提供的替代元数据的派生类型的对象。
顾名思义,DefaultMetadata
不会返回重写的元数据。