WPF Expander OverrideMetadata IsExpandedProperty

WPF Expander OverrideMetadata IsExpandedProperty

我正在尝试覆盖 IsExpanded 属性 的扩展器上的默认值。

到目前为止我的代码不起作用:

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

不过,属性 仍然设置为 false(我这样检查以确保):

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

编辑: 没关系,我只是很愚蠢,我确实在样式中将 属性 设置为 false ...现在一切正常,谢谢反正答案:)

检查实际值而不是 DefaultMetadata 中的 DefaultValue:

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

来自 MSDN DependencyProperty.DefaultMetadata Property 页面的备注部分:

The default metadata is the property metadata that is available to that particular object or an object of a derived type where no alternative metadata was supplied by an explicit Register or OverrideMetadata call.

顾名思义,DefaultMetadata 不会 return 覆盖的元数据。